The electronics and software industries have changed drastically in the past two decades (well, duh). But I’m not talking about new technical developments, I’m talking about the way we share information, and the impact of copyright, rights management, and the concept of intellectual property. If 20 years ago a software developer for a company like Microsoft were to tell you that they planned to release all the source code for a new application, you’d likely laugh at them. After all, why would you ever share proprietary information like that?
And yet, we’ve seen many individuals and corporations do a complete 180 in the last few years. Open sourced software is becoming more and more prevalent, and thanks to things like the Open Source Hardware Summit, electronic and mechanical design sharing is becoming more prevalent as well. “Open Source” can refer to schematics, bills of materials, PCB layout, or other information relevant to the creation of a project that is released to the public. Why is open source such a big deal now? How come open source projects were so much rarer just a few years ago? One of the most important reasons lies in the strength of the hacker, maker, programmer, and geek communities.
In the last few years, geek culture has come out of the woodwork – it’s okay to be a geek now! More and more individuals are writing software for fun, building robots in their spare time, and contributing to a community project (like a linux distro) purely because they want to learn. I could - and probably will - write a whole other blog post about this, so I won’t go too far into it now, but improved community is definitely a big part of the open source movement. So that explains why individuals may be more prompted to join open source development projects, but why to individuals and corporations release their designs and hard work to the public?
There are obviously some scenarios where this doesn’t hold true, but in many cases, releasing your work can greatly benefit you. This applies to both companies and individuals. As I explained previously, there are tons of people out there who want to help you make your project better. By releasing your work under an open source license, you’re telling people that you’re not just in this for personal gain – you want to get anybody involved who is interested. And thanks to the information-sharing powers of the internet, people now have a unique ability to improve upon your project. Many open source licenses require those who use the material to release any updates as open source. Take for example some code that I wrote a few months ago to generate simultaneous PWM frequencies for driving speakers using an arduino microcontroller (an open source hardware prototyping platform). Within days of posting that code (which I released under a creative commons license) dozens of people had commented on it with suggestions for improvements, critiques, and additional implementations. One person even completely rewrote the code in C and shared it with me (and the rest of the world). I’ve released the code and schematics for basically every project I’ve ever done on my blog, and I have yet to regret that. In almost every instance people have contacted me to tell me about exciting new ways they are using my software, and it feels great to be able to give back to the maker community.
Even companies are starting to go open source. A prime example is Makerbot Industries (full disclosure: I’m working for them this coming summer). Makerbot develops personal 3D printers that anybody can buy, assemble, and use to print out real-life objects. All of their production code and designs are open source. Interestingly, this means that anybody could theoretically build and entire bot on their own, without ever buying a kit from Makerbot!
Makerbot, and lots of other open source hardware companies like Adafruit, Sparkfun, and Bug Labs, all manage to do great business despite this. Because they have the scale and the resources to produce kits, its often far more cost effective and convenient for the consumer to buy directly from the company instead of trying to reproduce the materials on their own. But, in return for being open source, customers are able to provide valuable feedback that can be worked into future model revisions to make their open source hardware better with a shorter turn-around time.
Naturally, open source is not for everybody, and it’s important to understand that there are a huge array of open source licensing options available if you do decide to make your next project open source. Different people have different preferences, and you can find a whole list of open source options on the GNU website. I usually prefer to use a GNU GPL for my open source software, and a Creative Commons Attribution-ShareAlike license for my other work. What license do you prefer to use, and why? I’d love to hear about it in the comments!