Why I love open source
There is a thriving open source community out there, just waiting to be tapped into. Have an idea to make an application better? The developers would love to hear it. Have time to code it yourself? Submit a pull request on GitHub.
The community is a welcoming one. Before I found open source, I was a systems engineer working on military systems. You’d be hard pressed to find a community of people that are willing to talk about systems engineering for military systems outside of the DC area. Even then, most people cannot share work they’ve done, or code they’re written. It’s usually restricted in some capacity or can only be used and sold by The Company.
Part of the appeal to Open Source is that anything you write is free for you and anyone else to use, and can potentially help many other people solve problems in lots of different areas. It’s not just The Company that benefits, its everyone.
Why has Open Source become so popular?
Open source has been around for a long time, and UNIX has been around since the 1960’s. However – the big change that has happened in the last 5 years or so is that enterprises and businesses are switching to open source. At my last job we made systems that relied on commercial off the shelf (COTS) hardware and wrote custom Java code to control everything. Before I left, we started to use some hardware that actually had open source libraries to control the hardware. We took that open source software and started to add our own customizations. Parts of what we were doing could be pushed back to the open source repository but a lot of it was closed source. That was my first interaction with Git and Github.
So – Github. Since Github launched in 2008, it has transformed the Open Source universe. Today, the first step to developing a new software product is to check Github and see if someone has already written it for you. And here’s the best part - most of the time the developers are more than willing to help you with the software. The first time I hopped on IRC to ask a question about a Python package, I was amazed at how helpful the developers were.
How can it be free?
The dynamics of the open source software community is strange and unique. People are anxious to give away their software, but then how do they make money? The simple answer is services. The business of selling software licenses is a dying one, and many large technology companies have been shifting to a service based business model. One of the earliest companies to adopt this approach is Red Hat. Red Hat was founded in 1993 on the back of a new Linux distribution that they created called Red Hat Linux. It’s based on the Unix architecture which is already open source, so the OS itself is also open. They make money by providing services and support to mostly enterprise customers. Enterprises want to take advantage of the flexibility and stability that Linux and Open Source provide, but usually want some kind of security blanket knowing that they can get support if needed.
The other advantage of open sourcing your software is that you get community involvement. Just by putting it out there and making it free to use, there will be people finding bugs for you, submitting feature requests, and even improving your code or adding new features. It’s an unspoken agreement among developers that if you have benefited from another developer’s open source work and improved upon it, you should contribute back to it.
Open sourcing software can also build credibility within the developer community and get people to start using your software. It may even be a good way for companies to recruit new talent. Do you like working with our Deep Learning Code? Come work on it at Google and we’ll pay you to work on it.
Getting involved
I’ve read that only 1% of the population that uses Open Source software actually contributes to it. I have no idea if that’s true, but imagine if that number was 2%, 5%, or even 10%? I imagine we would see an even greater amount of companies open sourcing their software to tap into the community. And more community involvement means greater diversity of ideas, which could ultimately lead to better software in the long run.
My advice for anyone looking to get involved is to start small. If you have a software package on Github you like to use, look at helping to improve the documentation. Docs are one of those things that are so important in getting new people to adopt the software, but developers to neglect it because they are focused on writing code. After adding or fixing documentation, look at existing issues on Github and see if you can tackle any of them. Fixing existing issues is always appreciated and is sure to bolster your Open Source karma in the community.