19

Many software developing companies use open source tools or open source libraries. Sometimes they even tweak this software for their needs. So, one might argue that this tweaks should be given back to the OSS-project. That means, contributions of that company will become public.

But what are the advantages for a company doing so? Are there any at all? Are there disadvantages?

2 Answers 2

16

Advantages

  • Reduced maintenance. If a company uses custom patches, every time upstream changes, the company has to re-apply those patches when they update their custom version. This gets worse when upstream undergoes major refactors or changes in interfaces.
  • Publicity. By having its name included in the project's contributor list, other users become aware of the company. This could mean potential hires who are interested in the project, but through the project apply for employment. There's also a lot of goodwill associated with open source software; Microsoft for example earned lots of kudos when it began contributing significant code to prominent open source software like Linux.
  • Employee perks. Most software developers at companies are work-for-hire; every line of code they write is owned by the company. This means that when they go elsewhere, they cannot easily show the work they've done. But open source contributions are open for all, so they can point to specific projects and commits, improving their hireability and their market value. Also, some employees simply like contributing to open source projects for its own sake.
  • Competition against a market leader. A major reason why lots of companies work on open source software is they can pool resources on an open project that is in competition with a dominant, closed rival. Open source allows them to share the workload. For example, OpenStack is a collaboration by hundreds of companies to compete against market leaders like Amazon.

Disadvantages

  • Competitive advantage. If a certain type of software is a company's competitive advantage, it is exceedingly unlikely that they'll share it, because obviously, their competitors can then take advantage of it. For this reason, most if not all corporate open source contributions are in software that is not part of their core business. Google for example does a lot of open source work with Android and WebKit, but that's because free and better mobile platforms and browsers helps point people to their bread-and-butter: viewing ads. There is almost no way that Google will open their search engine or ad serving software, without a major change in business models.
  • Risk of losing intellectual property. Even if a piece of software isn't a company's competitive advantage, critical pieces of code could accidentally sneak into the open. A careless developer could accidentally contribute an advanced algorithm, for example. Because of this, most companies run their open contributions through their legal department first. Most don't bother with this because it's more trouble than it's worth.
  • Risk of legal trouble. Not all code a company uses is fully owned by the company; there could be third party licensed code or code under NDAs and so forth. Accidentally opening these opens the company to legal problems. Again, most companies run through legal, and again most don't bother with the trouble.
3
  • 2
    From some companies' perspective the "employee perks" thing is a disadvantage: the reasoning is that if employees contribute patches publicly, others can see exactly how good their code is, and they become more interesting to poach... One example of this is in France, where OVH employees aren't allowed to push patches to Github (in French, sorry). Commented Jun 24, 2015 at 8:02
  • Another point you might want to mention is that contributing to an open source project gives the company some degree of creative control, allowing them to steer it into the direction they need it to go for their business interests. Another important point is interoperability. The Linux kernel, for example, got some contributions from Microsoft (yes, Microsoft) to improve interoperability with their HyperV virtualization technology.
    – Philipp
    Commented Jun 24, 2015 at 9:14
  • Also, what about the dual licensing business model? Maybe I should write my own answer. Or how about you converting this answer to community wiki?
    – Philipp
    Commented Jun 24, 2015 at 9:20
10

One major advantage is that by sending changes upstream, a company no longer has to maintain their set of downstream changes. Suppose I add a compression feature to Gizmo 1.0. If I don't share my patch, when version 1.1 is released, I have to port my patch to the new version. And every subsequent version. By contributing upstream, the changes are likely to be merged (assuming they align with the project's goals), and you save yourself the effort of all the patching.

An indirect advantage is that by contributing to a project, you are influencing it's future path. You might be simply providing a capability that someone else also wants, or you may be opening up the project to a whole new use - either way, you are now influencing the path taken.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.