Let me tell you stories about how infrastructure software evolves in time.
Software development is “anything goes”. It could have begun as a philosophy (Richard Stallman), as a hobby (Linus Torvalds), as a vision brought about by practical experience (like Docker) or as a theory (like Apache Mesos). It is a dance of theory and practice, an ebb and flow in the wide expanse of bits and bytes.
Now, contrast those above mentioned stories with OpenStack.
OpenStack is doomed from the start because it has no solid kernel.
I would argue that for any infrastructure software to blossom, it has to grow from a seed, and that seed can only be formed with a compiled language.
Is it coincidence that Linux, Docker and Mesos are all being generated with a compiled language (C, Go and C++ respectively)?
Is it coincidence that Linux, Docker and Mesos all have modular architecture?
Is it coincidence that Linux, Docker and Mesos all have the right type of governance?
I DON’T THINK SO.
For OpenStack to succeed, it has to be refactored from a common base or kernel.
Relatively static functionality should be compiled to a binary and let dynamic languages do its thing.
The Docker platform itself has some Python flavor in its stack. Apache Mesos lets you create frameworks in Scala, Java or Python.
Also, take the case of Joyent SDC which is built upon the foundation of SmartOS (itself written in C) but is orchestrated with Node.js.
The point of all this is simple:
Static problems require static solutions. Dynamic problems require dynamic solutions.