Saturday, January 31, 2015
I finally understand open source software
Ive used a TON of open source software (e.g. see the "what technologies were used section" of the Resume Builder) and am a very strong believer in using open libraries and standards whenever possible. However, until just recently, the full motivation behind open source software - why so many individuals and companies contribute - never really clicked in my head. As soon as it did, I created my first open source Github project.
I realized that open source isnt about doing the world a favor, sharing, or acting charitable. Its not about freedom, choice, human rights, standardization, or any of that. Sure, all of these play a role, but none of them are enough to explain how the open source movement got to where it is today. What I think really drives open source are three major benefits to the project creator: free labor, cleaner code and portfolios.
Free labor
The benefits of open source software to an end-user are obvious: you get to use amazing libraries, operating systems, standards, and tools, for free. You can take advantage of projects that have been built and tested by hundreds or thousands of developers, learn from the source code, customize it for your needs and build bigger, better things in less time. You get to stand on the shoulders of giants.
What wasnt as obvious to me was just how much the project owner benefited from me using it. Every time I ran the code, found a bug, or tried out a benchmark, I was performing QA and performance testing - for free. Every time I asked questions online or posted a tutorial, I was writing documentation - for free. Every time I used the project in my codebase and told others about it, I was advertising the project - for free. If I created a patch, or added a new feature, or made suggestions for improvements, I was helping to design and develop the project - all for free.
In other words, the open source community using your projects is, quite literary, a totally free and incredibly effective workforce. Google open sourcing snappy may help everyone in the community do fast compression, but if they can get enough people interested in the project, it helps Google even more when that community finds bugs, fixes them, builds new features and contributes it all back to snappy. The cost of hiring a few hundred developers and QA to work on a project like snappy would be prohibitively high, even for a big company; for a lone developer, totally impossible. But open source it, and you get a huge pool of labor for free.
Cleaner code
It turns out that knowing that other people will scrutinize your code, tear apart your design, and use it in ways that you didnt expect is a superb motivation to keep things clean. The very act of taking some code and making it a "project" will encourage you to make things more modular and reusable, write documentation, use source control, track bugs, all the good stuff. Its just human nature to clean the apartment more for guests than yourself; as such, open source projects tend to be cleaner than proprietary ones.
Portfolios
Open source projects are the best portfolio a software developer or company can have. Its hard to learn much from just seeing the end product (if its even publicly visible); interviews are sadly not too revealing either (a topic for another blog post); resumes and "about me" pages are all but useless. But when I can see every line of code, the design decisions, and the technologies involved, I can get a very good idea of the type of person or company Im dealing with. Its the ultimate branding play: show, dont tell.
When it comes to hiring, Ill take a Github commit log over a resume any day. - John ResigIm a believer
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment