One of our projects, the Flutter template project, recently reached the benchmark of 100 stars on Github. It’s sort of a boilerplate we use to start each new project we build in Flutter. Our Flutter developers are constantly updating and fine-tuning these projects so it’s an honor to see that our work is appreciated and used by other developers. Among this template project, we also share a lot of other features, bugfixes, … for Flutter and other communities. We like to actively contribute to the community. You might wonder, why do we share this knowledge and intellectual property? Our CTO, Jeroen Trappers, explains.
First things first, what is an open-source community
Open-source software can take many shapes and forms, the people supporting an open-source project are the community for that project. It's very important that the community is sufficiently large and diverse for the longevity, dependability, and stability of an open-source project. Projects that have to depend on a single developer to push updates are difficult to trust. If you want to integrate such a project, you need to be able to take over the entire project and support it when the community disappears.
Sharing intellectual property
At icapps, we integrate many open-source projects, modules, and components into our products. We will always check the license and abide by the conditions laid out in this license. Most of the time we need to mention in the release notes, and within the application, that we are using certain open-source components. We even have a system to automate this, which we open-sourced as well. Because we often depend on open-source components, we believe it’s important to give back to the community.
So, we make it our habit to contribute to the open-source projects that we use. We do this by providing feedback and opening bug reports or feature requests. Most of the time, we don’t stop there. We implement a fix for certain issues or implement improvements and then we ask the community to integrate those changes back upstream through pull requests and assisting code reviews. The advantage is clear; everybody using these components will get the new feature and fix bugs when they update to the latest version of this component. Possible disadvantages are that you introduce new bugs, and more work to fix these in the future. We are also “giving away” our time to these open-source projects, projects that might be used by our competitors.
How to contribute to the open-source community?
Contributing is simple. When the software you need is publicly available on any web-based git provider (GitHub, GitLab, bitbucket, ...), you can use your local git executable to clone the sources. Use your local development environment to build these sources and use the software at will. When you find bugs or when you want to add features, you’re free to do so. You can use standard git commands to push those improvements back upstream. Then you can ask an upstream developer to merge those changes into their sources. Git providers also integrated services for asking questions or reporting bugs, which can be useful if you are willing to help but not willing to code.
“As a developer, the problems you seek to solve are mostly not unique. Chances are high that another developer already stumbled on it before and published his findings in a nice blog post or, even better, coded something for it and open-sourced it. And that's how we all benefit! Not only by open-sourcing our code but also by contributing to existing projects. This generates an enormous pool of libraries, packages, and installable we can start using directly without the hassle of reinventing the wheel again.” Cyrille Bartholomée, Cloud Engineer at icapps.
All for one, one for all;
Why do we believe every IT company must contribute to the open-source community?
To ensure the long life of an open-source project, IT companies must support the community in many different ways. Multiple developers who are working on these projects are often not paid for the time they invest in these projects. At icapps, we choose to sponsor these projects, by donating time to our developers to fix and improve them. A possible different strategy is to make financial donations to the project, or directly to the most important contributors. When companies only use open-source projects and never give back, the open-source community will not be able to survive in the long run. Some companies gain important competitive advantages and monetary benefits by exploiting open-source projects, without ever giving back. This is often allowed by the license that developers choose to publish their work with. However, if they feel that they are treated unfairly, they can change the license and limit the opportunities offered by these open-source projects. This damages the open-source community as a whole and can stifle innovation.