Chapter 3: The coding experience
First of all, where can I find the code?
You can either access it on fintp.org/Projects or directly on github.com/FinTP. The code is organized in projects. Before starting anything, it might help you to consult the Readme file (at least, it will help you set up your development environment) or just talk to our software maintainer. The dedicated wiki pages include the corresponding documentation.
Can I do anything I want with it?
Once you download it you can do whatever you like with it. As long as you follow the terms and provisions of the GPLv3 license under which the source code is published, of course. We sure hope you will be willing to give back to the community, in which case you will need to read furthermore.
**What about if I am not quite the guru in coding? **
No worries, FINkers United is open to all enthusiasts. You can learn with us: you can get acquainted with the code documentation; you can download the code and have a look through it; you can discuss with the software maintainer; you can address any observations you might have and ask any questions; you can participate in forum discussions; you can get advices from more experienced developers. And, with time passing, your enthusiasm and some effort, of course, you can even become a guru.
Ok, let’s say I am experienced or already gained experience within FINkers United: what’s the development process like?
FINkers United for Dummies picture 3Well, one thing is for sure, there are no firetraps or black holes. Once you choose what you would like to work on, just start doing what you know best. Depending on the item chosen there might be some things you would like to know upfront. For example, if you decide to work on a feature that is going to be released at a certain date, you could consider letting us know from time to time how things are going.
Other things you might want to work on are solving issues, improving already existing functionalities, integrating parts of the application with third party pre-requisites or applications. In any of these cases assign the issues/tasks to yourself. These are defined per each project.
Oh, one more thing: to smooth the integration process (your piece of code with the already existing one) there are a few things we need from you, besides the source code of course J: code documentation and an unit tests report. We need them to help us review the code and also keep the documentation up to date. So, when you are finished with all these, just put the source code in a fork and make a pull request. If not already acquainted with it, you can find all about it on https://help.github.com or you can always ask for guidance from the software maintainer.
And how about the code review, how does that go?
During the code review, the software maintainer might start a discussion with you to clarify any aspects that may appear. There may be the need for some rework or some extra information just to have the right understanding of it. But we’ll keep you updated on the review’s results, don’t worry.
Now a little bit of officialdom: in case your contribution is accepted, before the code becomes actual part of FinTP, you will need to sign a CLA (Contribution License Agreement) or a CCLA (Corporate Contribution License Agreement), as described in chapter 2. These documents are available on fintp.org and concern all contributions, irrespective of project and type of contribution. They are intended only to prevent any issue that might arise from intellectual property infringement. From that moment on you can call yourself a proud contributor to the FinTP project.
Just to summarize, the phases are…?
The phases of the development process are:
Initiate project.* A project is a set of interrelated activities intended to cover a specific area and reach a certain goal. Projects can be proposed by you, as a member of the community or by a group. The one who proposes becomes the Initiator. Each project will have an approach strategy: the main development iterations (partial code commitments), the timelines for the entire code commitment and testing, release criteria, branching. The planning of the projects starts loosely with every involved party’s input and once agreed it becomes a baseline for release management. You can find the project description and other project documentation on the portal in a dedicated section. A responsible for each project – the Project Manager (PM) – is assigned.
Plan a new release. *Generally, the releases are periodical. Special situations may occur when they are event-triggered. As the project evolves, new requirements and change proposals from you or other contributors/users may appear or requirements may be postponed, but all these will be transparent to the project’s contributors. The new requirements and change requests are reviewed and approved/rejected/postponed by the Technical Committee. When the content of a release has been defined, the Project Manager launches the new release iteration, publishes the product specifications and invites contributions. Tasks are proposed and placed in the task pool.
Develop, Test, Build. *To contribute to a specific project, you must first adhere to the project team. You and any contributor to the project have to acknowledge the project specific constraints, if any, and the release planning. You are free to choose what you will do: new code, documentation, testing. You will choose your tasks and communicate in due time any prerequisites, if not already available, and their estimated completion time and dependencies, if applicable. It would be nice if you could inform your software maintainer, on a regular basis, about the progress of the items you are working on, so that the release conditions are met. Project generic documentation is available to any interested party.
Release the community version. *Work on the new release stops as planned and you, along with the other contributors, are invited to send your latest work to be validated by the software maintainers. The components are integrated, using the release branch. You are invited to test the Community Release. Test results are made available and a plan for fixing emerging issues is drawn and implemented. When the release criteria are met, the community code is published and a new baseline is created.
Project management & control. The Project Manager follows the progress of the project in terms of timeline and quality using your reviews and the ones made by other contributors, and monitoring task deadlines. If you or anyone else fails to follow the community rules/project constraints, you’ll receive a warning. If repeated, the Technical Committee can decide other steps. The Project Manager acts as the interface between the Technical Committee and the project team and moderates the project communications.
And what exactly can I develop?
FINkers United for Dummies picture 2Based on your interests, you can access any of the already defined projects and choose from the issues/tasks in the issues tracker. You can also consult the list of ideas (http://www.fintp.org/projects/idea-list/) and start a discussion around them. Once you started working on a more complex idea, you may find out that you will have to work with more components, so you will actually need to download all the corresponding projects. Feel free to do that. Basically, when you make a pull request, do it within all the projects where you added/modified the code. If you feel a new project should be created, please talk to one of the software maintainers. Most probably there will be a discussion on the opportunity of defining a new project. You can even be proposed to become its software maintainer.
And if my piece of code gets accepted?
As we said, if your code passes the review process and becomes an actual part of FinTP, you will become and can start calling yourself a proud contributor to the FinTP project.
Remember, all contributions are acknowledged and given credit for.
Cool, let’s get to work!
This chapter concludes the FINkers United for Dummies. We hope you found it useful. For more information just browse through fintp.org.