What is “Open Source”? Is it really free?
Publishing software under an open source license means that you grant people the right to use, study, modify and distribute it freely. It does not imply that this process is free of charge. The legal framework just ensures that the operator - at least in theory - has full control over what the software is doing.
That being said, charging for open source isn’t common. The simple reason is that it's hard or in some cases even impossible to track where the software is used. Even if the maintainer added some kind of license check, the open source license grants the user the right to remove it, so any effort in that direction is futile.
Most open source developers generate revenue either by relying on donations or charging for support and maintenance. Since they don’t have to provide a warranty for each installation of their code, these strategies can often at least cover their expenses. In some cases, it’s even enough to make a living.
Should my code be open source?
Writing a piece of code that does something useful can lead down three different paths. These three options could be called lazy, crazy and safe. And that makes the decision a lot easier.
1. Lazy: Just keep that piece of code within the project
In the best case scenario, you will remember it if you stumble upon a similar problem four months down the road and copy it over to project B. You will probably find some bugs and do some improvements, but stakes are not high that they will make it back to project A.
In the worst case is that the lines of code are just left and forgotten and the problem will be solved once again, at the cost of the next project B, while keeping the full maintenance costs in project A.
2. Crazy: The solution is super-useful and so fleshed out that you decide to sell it under a propriety license model
Going down this road means serious marketing to achieve a critical mass, providing guarantees and warranty to customers, and paying a host of lawyers to make sure nobody steals the intellectual property or uses it in unintended ways.
This all boils down to starting a*high risk business endeavour*, and in most cases, it doesn’t make sense.
3. Safe: The solution is moved into a designated package
In the worst case, the code just stays in this package and is never re-used. More commonly, it can be picked up for project B, and all improvements immediately are available for project A. The maintenance costs for this part are shared from now on.
And in the best case, this package is made publicly available and somebody else picks it up and improves it in some way that directly feeds back into project A and B.
Advantages of Open Source in an agency
From our perspective as an agency, there is hardly ever a case where open source is not the best option. Our business model is to get the best possible value out of our clients' investment. We achieve that by contributing as much as we can since every line of code gets cheaper if it can be reused somewhere else. Some clients actively encourage us to share projects even in their name and some don’t care as long as we get the job done.
Our core business value is our knowledge and experience in providing software-based solutions, not the software itself. And as long as our client agrees, we use our position to spark collaboration were it wouldn’t be without us. If we see requirements that pop up across different projects, we can align these and share the effort, which ultimately helps our customers saving money.
Another reason for us investing into open source is our own setup. As a heavily distributed team, information flow and structure is even more important than for co-located companies. I often see code not being published openly due to tightly coupled design, missing tests, or insufficient documentation.
The investment to increase quality is often billed against “contribution costs” and therefore the first thing to fall off the edge. But it actually is part of “doing your job properly”, since software should also work reliably and stay maintainable if its only used once.
Since proper architecture and documentation become vital as soon as different timezones need to cooperate on a single codebase, contributing has to become the standard process instead of the exception.
Apart from that, threatening developers with publishing their creations has proven to be a terrific instrument for improving code quality.
Open source products
If the produced software, or - more general - produced knowledge, itself is the product or would expose business critical information then it might not make sense to go open source. But even in such cases, interesting exceptions have happened.
Tesla’s heavily discussed move to release all its patents for electric cars to the public back in 2014 is not exactly the latest news. Some praised Elon Musks goodwill, while others called it a marketing stunt. The fact is, Toyota cancelled the partnership with Tesla around the same time and released its first hydrogen fuel cell car. A behemoth like Toyota focusing on hydrogen cells could have become a serious threat to the electric car industry in total. Releasing the patents was a way to strengthen the technology enough to overcome this obstacle. I wouldn’t dare to judge if the undertaking was successful, or if we would be better off with hydrogen cell cars. But this case illustrates how sharing knowledge can be as powerful as keeping it for oneself.
Another example is our sister company, amazee.io, who decided to open source their hosting platform “Lagoon” some time ago. Full transparency on how applications are hosted is a huge deal for technical decision makers, and it becomes a lot easier to gain their trust if they can see what’s going on. Sure, you *could* just grab the code, try to get your hands on some amazee.io-grade engineers, and strap them in front of their computers 24/7 to get the same level of reliability and support. But I doubt there is a legal way to do this with less money than just hiring the creators themselves.
Should everything be open source?
This might ignite some discussions, but I don’t think so. The open source community has suffered a lot from being associated with pure goodwill and altruism. And this has led to serious problems like developer burnout and subsequent oversights that shook platforms as a whole.
The “no license fee” bait did a lot more damage than it helped. There might be no fee, but that doesn’t mean work is for free. Compensation just works through other channels. And if this is not possible, it’s sometimes better to pay for a license than relying on an unsustainable open source solution.
I personally see open source as a business model that embraces the fact that distribution of information is free. Instead of wasting resources on artificially locking down intellectual property, it focuses on creating actual value. And since I'm making a living of creating this value, I consider this a good thing.
Open Source as a model is one tool that gives us the ability to create innovative and ambitious projects for our clients. Get in touch with us today!