Advantages of Upstream Alignment
What is upstreaming?
Upstreaming refers to the practice of contributing source code that has been developed independently or in-house back to an open source project. Having code accepted upstream provides several benefits to the open source project, the companies submitting code to upstream projects, and to the open source ecosystem in general.
Advantages of Upstreaming
Via collaboration with other companies in the industry and the community - on a common components and allowing them to focus on the higher differentiating part of the stack.
Minimize R&D Costs
Once in-house code becomes part of the main source code tree, the effort needed to maintain the remaining code can drop significantly, because the internal codebase is smaller. In addition, the code that has been upstreamed will evolve with the project, reducing the amount of effort required to maintain a parallel development tree.
Gain Additional Contributors
When code is accepted upstream, it becomes a visible part of the project. This enables other developers to contribute to it, submit new features, expand on existing functionality, and test it.
Increase Code Quality
Source code submitted to an open source project typically receives significant peer review as part of the normal submission process. This results in a feedback cycle leading to improvement of source code, and ultimately higher quality code that will be used in commercial products.
Enable Faster Integration and Testing
Upstreaming simplifies and accelerates the process of integrating new or updated open source software. When maintaining a separate development tree, the integration cycle can be delayed by unanticipated integration, testing, and debugging required to maintain internal code. If changes in the upstream project have broken the internal code, it is the responsibility of internal developers to fix and verify any breakages before the product can ship. Because upstream code becomes visible to the rest of the project, the likelihood of these unforeseen breakages decreases.
Upstreaming can help avoid these breaks at the source, because upstream features are tested in the mainline project, and any issues should be found and fixed before a project release. In addition, a smaller amount of code will need to be maintained internally, shortening development, backporting, and testing time. In this way, reducing the amount of separately maintained custom code can substantially reduce re-integration efforts.
Influence the project’s direction
For companies relying on open source software to build a product, upstreaming code is an effective way to provide technical leadership within a project, as it can guide the direction of the project and ensure it remains viable. Interaction with external project participants can also increase the likelihood that others will be aware of the company’s needs, and they may be more likely to help implement new features and functions if those are of interest to them.
Strengthen the Linux Platform
Upstream contributions help provide stability to the open source project because they are a clear signal that the project is useful and important. Strong support from contributing companies tends to attract other participants, further increasing the durability of the project.