A couple of weeks ago I was watching the awesome videopodcast: The Linux Action Show. It was the 200 episode so I was expecting a hell of a show. They decided to interview Richard Stallman. I think rms(Richard Matthew Stallman) needs no introduction. All people involved in technology and know who that guy is.
One of the interviewers was Bryan Lunduke, an independent developer who got quite famous for ranting against Apple not so long ago. He was supposed to ask rms one simple but interesting question: “How, an independent developer like me, can develop free software and still being able to feed my kids?”
The answer: go to work to a software factory or simply find another career. That answer astonished me. Stallman simply said that he preferred all software business developing proprietary software to fail. Then, maybe, we can figure it out a way to make money and still develop free software.
I’m sorry that’s just not the way. If you’re a Windows or a Mac user thinking all Linux(or GNU/Linux according to rms) users are like that, think again. Right now, tons of users use open source and free software even in proprietary platforms. We don’t use because it’s ethical, we use it because is better. I prefer Chrome or Firefox to Internet Explorer because I think, no, because I know they are just way better. I use Apache for my server not only because it’s free, but also because I know is one of the best web servers out there. Actually, besides the proprietary web server of Microsoft, I don’t know about other proprietary web servers.
So, why some open source software is clearly as good or even better than proprietary software, but other kinds are clearly behinḍ̣? All software should be open source? All software should be closed source?
As anyone who has studied some computer science and algorithms, we always know that some algorithms are good for something things and bad for others. Open source and proprietary software behave the same way. In the amazing book “The Cathedral and the Bazar” Eric S. Raymond discussed, among other things, the way you can make money with open source and when to open source(he’s also the creator of the term)
So there just 5 simple rules, that I call the “Raymond’s laws for Open Source” for deciding if you should go open source:
- Reliability/stability/scalability are critical.
- Correctness of design and implementation cannot readily be verified by means other than independent peer review
- The software is critical to the user’s control of his/her business.
- The software establishes or enables a common computing and communications infrastructure.
- Key methods(of functional equivalents of them) are part of common engineering knowledge.
So the first law refers simply to a robust system. That’s why Google doesn’t use Windows Server. Reliability is really important for them and no wonder why they picked Linux as the foundation of their server infrastructure. Same for Amazon or Facebook.
The second law applies to all cryptographic algorithms. It’s know that security through obscurity simply does not work. Open source algorithms are better because anyone can check if they work or not, and some times that’s the only way we know they’re secure.
The third law is the actual reason why big companies pick open source web servers or databases. They don’t want to depend on other companies when their infrastructure is critical for them. Can you imagine Amazon depending on Microsoft for their infrastructure? All their services would depend on the ability of Microsoft for resolving their problems instead of solving them by themselves. That’s simply not a good business decision.
Fourth law refers to the point where open source excels: infrastructure. The Linux kernel, the Apache web browser and Firefox or Chrome have something in common: they are all infrastructure. We don’t really care when we buy a book on amazon if Amazon is using Linux and Apache(I think they’re not) and I’m using Firefox. All I care is about the experience and if I get my book.
Browsers are a platform now, not the end product. Is not what they do, but what you can do with them. The browser experience is that you enjoy the webapps you use, not if you enjoy using the browser itself. The best infrastructure is transparent. That’s also why open source frameworks work great, because the user experience is not about the framework, is about the app or the service.
The last law refers for software that implements, for example, a very well know algorithm. All the implementations of the quick sort should be open source in case someone wants to verify it.
So when NOT to open source? If the software doesn’t fulfill any of those rules it’s probably a good idea not to release the source. For example, most AAA games don’t need to be open source because:
- Reliability is not exactly critical. Neither stability. No one wants a buggy game but is not so hard to make an stable game without being open source.
- The design of the game does not need to be verified by other people. In fact, I believe games are like programming languages, they are best designed by just one person or a very small committee.
- Games are not business critical to any consumer, because they’re just entertaining.
- Games are not creating an infrastructure. At least not yet.
- Each game is (supposed to be) unique, so they are clearly not part of any common knowledge.
Some companies make the hybrid approach: they use and even make open source but their primary application or service is closed source. The best example is probably Facebook. They developed Cassandra and HipHop and they released the code because they knew they were part of their infrastructure, but not their product. The product is you.
That’s why we see right now a lot of startups building proprietary software using open source tools. These tools are great for the infrastructure, but the application or service is best to be proprietary in order to achieve economic success.
I always try to use the best tool for the job. Most of applications I use every day are open source: mutt, the Linux kernel, vim, Firefox, etc. But I don’t feel wrong when I fire up Steam and I start playing. I know there no so many economic reasons to make a game open source. But the experience is great.
Further reading: Go ahead and read “The Cathedral and the Bazaar” You can read it on line for free. It’s a great book about the hacker culture, software developing and geekness in general