Monthly Posts: May
by Mihai Guiman
Everybody has heard about open source software. The sad part is that few understand what it is.
Last week I have attended a networking event aimed to gather professionals from the IT industry and university representatives, mainly focusing on research and innovative projects. I thought it would be a good opportunity to get some feedback from technical people outside our niche market (fintech) on our FinTP Project and FINkers United community.
After registering for the event, the first feedback I received from the organizer was that the topic is not really in line with the general scope of discussions. Sure, who cares that a financial transaction processing application is now available for those who couldn’t afford one in the past, or that launching FinTP is a first step towards developing an industry common solution which might evolve into a new standardization layer?
At the event I received the second feedback from someone in the outsourcing business (apparently we are still in competition with the Indians/Chinese, although the logic of big numbers would be violated by this comparison): open source is also a form of outsourcing. I started to think it was high time to split.
Then again, the guy got me thinking. Oversimplifying, open source is different from outsource by three letters. This also explains why many people claim that open source is like the Wild West, because everything is out in the open therefore anything is possible due to the lack of rules and governance. All the buzzwords revolving around open source, like open, transparent, free and collaboration often create an image of an unprotected and chaotic workspace, with hackers trying to take advantage at every turn. In this dark scenario, could a highly procedural and regulated institution like a big corporation or bank have an open source policy in place?
But what if people ignored semantics and saw the real important values of the open source philosophy: free cultural sharing, free competition and cooperation in non-differentiating areas? Even though it is no kind of art, open source software is in its essence an act of creativity. Literary clubs manage to create an environment which allows individuals with different styles and schools of thinking to cooperate between themselves and share ideas on phrases declining, sentiments or feelings. Professionals in more technical fields should find it even easier to build a knowledge exchange agora and debate on software engineering or financial business flows. Obviously, the foundation has to be based on sharing common interests.
I encourage professionals of all profiles to browse the new learning, idea sharing and collective creativity space – FINkers United. Contributions will lead to boosting the FinTP project we have initially contributed and will create a fresh spirit of true cooperation, satisfying each individual’s needs to professional progress and industry recognition.
It’s time to see how you can actually work in the community. For those of you who want to amaze us with your pieces of code, here are some answers to the questions you may have.
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?
Well, 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?
Based 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 please visit www.fintp.org.