Why is open source done? The developer gives up all his code and potential for profit from the code.
The main reason for open source is for collaboration and standardization. Without open source, you are reliant on a team of developers you hire and you are responsible for maintenance and all development. Hire less talented people? You have less development with a high cost. You also don’t have the ability to learn past what skills the people on the project has. One man band? You can’t learn much because you have no contributions and are reliant on your abilities.
On the flip side, you can learn and collaborate with thousands of people around the world WITH open source. What about the loss of money from sales? I remind myself that I’m not John Carmack, which was one of the first commercial open source successes with Quake and making it’s engine open source. He did close source the content of the Game, but is a gifted individual. The game made millions while also being open source at its core. When I open source all my projects, I do so with the intent of learning something. The knowledge I pickup is MORE valuable to me than if I sold the project as a closed source tool.
Let’s analyse how I make a million dollars off a project:
Closed Source - Project requires a purchase and little longer development time to put in DRM so it can’t be copied or stolen. The software can only be as good as the developer. Even with a gifted developer, the chances of success are slim to even make $1000. However, if the program has a successful launch with massive adoption making a million dollars off a $50 sale price is easy. The main issue is marketing, which can be solved with social media. The downside is the programmer learns just what is needed for project completion if anything at all. The only person that should consider this option is the truly elite or companies that hire teams of people to complete the program.
Open Source - Project can develop at a rapid pace with issues coming in from users, collaboration happening with pull requests from other programmers that have different knowledge sets than you. The amount of knowledge you gain by doing this is vast. I value the knowledge gained greater than the possibilities of closed source development. Also, since there are more eyeballs on the project the program itself will be more complete and feature rich. Instead of making with profit in mind, you are programming with the end user experience at the forefront.
Open Source Myths
Crowdfunding - Doesn’t work or rarely works in many instances. If you need a paycheck from a program, you need to go punch a clock somewhere. Every project I follow needs VC or private funding to see it to the finish line when time and money are priorities.
Everything should be FREE - Quake is a perfect example of a properly monetized project. Engine was open source, but the content was not. Just because something is open source doesn’t mean the compiled project needs to be.
Less Secure - This is a strange belief that some subscribe to the security by obscurity line of thought. Popular open source projects have its code reviewed almost daily and security holes plugged quicker than closed source that might never even have an independent code review!
Hard to Maintain - Since more people are pushing requests and issues it becomes harder to maintain as a few have said. Any project that I stopped maintaining or it just became unwieldy was my fault. The person in charge of the open source project has to be willing to deny and refuse MANY pull requests. It is up to the project maintainer to be vigilant, clean the code, and have strict rules for contribution. Anytime I’ve failed to maintain a project, it was because of a poor understanding of a PR or GitHub in general.