Free software, open source software, or FLOSS (Free Libre Open Source Software) is still, for a lot of people and organizations, the object of many questions and hesitations. One of the more frequent questions is whether somebody, or an enterprise, can modify code, and, if so, whether they can contribute those modifications back (upstream) to the original project.
When recently speaking at OW2con’19, early June, one of the key points that most open source speakers mentioned is that it is actually the best possible thing to do – contributing modifications upstream, rather than creating your own fork and keeping them for yourself. In fact, one speaker even went so far as to say that keeping your own fork of an open source product internally is creating your own version of vendor lock-in; which is one of the key reasons people go to open source, to avoid just that. With your own fork, you need more resources to support and develop the code, and so, you lose the benefit of shared innovations and typically the bugs and security issues aren’t discovered, or fixed, as quickly.
But, then, how can one contribute their modifications to an existing project source code? Is it possible to freely modify the code of somebody else or some other organization? If the code is hosted by a foundation, is it also possible (and do you need to be a member) to contribute to it?
Going back to the basics, open source and free software stem from a common codification of freedoms (hence the free in free software) given to the user of code. There are four essential freedoms defined by the Free Software Foundation:
- The freedom to run the program as you wish, for any purpose.
- The freedom to study how the program works, and change it so it does your computing as you wish. Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help others.
- The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this as well.
Open source is an evolution of the concept of free software that aims at being more enterprise aligned. The definition of open source is maintained by the Open Source Initiative and is made of 10 points that govern how open source software must be distributed (basically, what every open source license must ensure).
A common point of these freedoms is that users are free to modify (freedom to change, and redistribute derived works) the code, regardless of where it is taken from. If it comes with an open source approved license, then you can modify it, and make those modifications (whether they are just changing files / patching bugs, or adding code or documentation) available to the community.
Making code available to the community can be simple or less so, depending on the structure of the project. In some cases, it’s as simple as a pull request on a code repository. The software maintainer(s) will review your pull request and committers will merge your code into the code commons. But be prepared, if your code doesn’t match the project road-map or other project requirements, they may not want to merge it. In that case we recommend an open conversation with the project committer team to help them understand why you feel the code is so important it should be included. If they still don’t want to merge it, and it significantly impacts a product or business function of yours, at that point you would need to think carefully about creating a fork. As the business reasons for contributing to existing open source projects, or creating new ones, continues to increase; innovation, branding and thought leadership, reduced TCO (Total Cost of Ownership), recruiting and retention, the rationale to create a fork is significantly reduced. A fork reduces the positive impact of virtually every reason to create unique open source or contribute to existing projects.
And as one of the speakers at OW2con put it, a pull request is a free option to have your own code reviewed and commented by the best coders on the planet... so definitely something you want to do!
Do you need to be a member of a project or foundation to propose code? No. Never. It’s open source. Anybody is allowed to contribute. Being a member of a foundation like FINOS brings other advantages (which depend on the foundation itself and vary – here are the benefits of FINOS membership).
So you are strongly encouraged, if you use code from an open source project – whether hosted here by the FINOS Foundation or anywhere else – to look at the code, and, if you find areas of improvement, to modify, or add to, it, and to contribute it back to the project.
Gilles is Director in the Open Source Consulting Practice and a member of the internal blockchain council at Wipro. Based in Geneva, Switzerland, he provides open source and blockchain strategy consulting and advisory services to Wipro's key customers worldwide.
Wipro Limited (NYSE: WIT, BSE: 507685, NSE: WIPRO) is a leading global information technology, consulting and business process services company. We harness the power of cognitive computing, hyper-automation, robotics, cloud, analytics and emerging technologies to help our clients adapt to the digital world and make them successful. A company recognized globally for its comprehensive portfolio of services, strong commitment to sustainability and good corporate citizenship, we have over 175,000 dedicated employees serving clients across six continents. Together, we discover ideas and connect the dots to build a better and a bold new future.