This blog post is not a troll against OpenStack. It started as a response to a twitter post, and transitioned to a reflection on the governance of Open Source projects and its impact on the code. And I am not implying Openstack is worse than Linux, just that it is a different form of open source, is not the Linux for cloud and I will tell you why. Linux was created with a vision, to provide a free and open operating system while OpenStack is just a tool to pool resources between companies to create an open cloud ecosystem. This reflects in several aspects of OpenStack, but the more glaring difference is Governance.
I do not want #OpenStack to be the POSIX of cloud. I want OpenStack to be the Linux of cloud.
— Mark Atwood (@FallenPegasus) November 4, 2013
When I started coding for the Linux OS it was clear to me that the governance was a tyranny of the visionary that started it all. Of course I never dealt with Linus himself, as a soldier I just dealt with the lieutenants. At most, with a colonel here and there, like the maintainer of ARM-linux when I had to support the venerable EBSA-285 to create a Hardware IDS. Open source, in the old days, started with one person coding in his room, and after that, he was the leader. The governance for most projects was an enlightened absolutism.
Openstack, in the other hand started by NASA and Rackspace pooling resources: NASA was good with the virtualization part (NOVA) and Rackspace was good with the storage part (Swift). And OpenStack was born. When more companies wanted to join the fun, it was decided the system needed some sort of governance, and the republic of OpenStack was born. And with any advanced political system, OpenStack Governance is complicated. There are elections, different bodies, and this is all necessary so no one takes control of the project. Now thinking about it, the system does look quite similar to the US style, with two houses, one elected directly by the developers and the other representatives appointed by the promoter companies.
And this is the new face of open source. OpenDaylight, a project to create a network controller for SDN also features a board of directors with the usual suspect companies as board members. Cloud Foundry was a Banana Republic ruled by Pivotal until IBM came crushing and forced them to make another republic. Oh IBM, the freedom fighters for the open source world.
Consistently, the new face of Open Source adopts a more free version as Licence, with Apache being adopted not only by Openstack, but by others similar Open Source projects like CloudStack and CloudFoundry, as opposed to the GPL license adopted initially by Linux. The Apache license gives you freedom to do almost anything with the code, while the GPL forces you to continue the same license if you make modifications to the code, so basically GPL is a viral license. And that makes sense. If you have a vision, you want everyone that joins your army to be committed. You want to lead by telling them that if you leave, you have to give everything for the cause anyway, so you better stay.
In the republic, the senators personified by all these big companies may want to leave the cause one day. They want to create products to sell, or if everything fails, just take what they want and move on. They just have one goal: create a framework so they can help each other. But ultimately, for the IBMs and HPs their loyalty is to its own constituency (the stockholders), not to the OpenStack community. This works quite well in the US senate (NOTE: no irony here, as I am looking at this from a historical perspective disregarding current affairs, but perhaps it is a bad time for US congress analogies), so why shouldn’t it work for Open Source?
And yes, the differences in vision and governance are palpable in the technical decisions, and it starts with the documentation. When you have a vision, you want your coders to report back to you. You need to understand what is happening. You want others to help. Not so much when you are just pooling resources. You add what you have done in house, and try to make it work. That works out pretty well, as OpenStack is here to create business, not to give handouts. OpenStack does not need good documentation, but to add as many features as possible. Why? Because that helps the big companies involved to level terms with the big guy in the block, in this case, Amazon.
More importantly, in OpenStack removing code is difficult. In any good republic, passing laws is not trivial, but reversing them is a nightmare. If RedHat chips in some code, CISCO will not just remove it because they think it is crap, even if they are right. The explosion of code in OpenStack, from 164968 lines of code in 2011 to the current whooping 1,736,343 lines of code, reflects that new features are added swiftly without much opposition except in very blatant cases. As for removing code, the current problems transitioning from nova-network to Neutron is just an example of the headaches to come for the OpenStack republic.
This extraordinary growth that Openstack experienced is a great achievement and would not have been possible without well-defined governance rules. And all these kids in the room sharing their toys will create more mature products benefiting all of us. So kudos to the Openstack community and long live this new Open Source Republic. But they will never be the Linux of Cloud because they are not built on a vision. In the open source community we will still need visionaries that act like benevolent dictators, forging a path to greatness without all these complexities and bureaucracy. If you wonder why this is necessary, ask congress why we set foot in the moon for the last time 40 years ago, and ask yourself why the pyramids of Egypt are still standing and sparking our imagination.