So two hours ago I got on a train home, from the Openstack Summit in Atlanta. The summit was pretty okay. The train ride there was pretty solid.
The blog post I wrote last week was, in a word, rushed. I said a few things that could use a little clarification, and I’m in the mood to do so.
I don’t like python
I said I didn’t like python, for reasons that didn’t translate into compelling arguments against using it for Real Work. Said lousy reasons are basically: it’s dull. It’s a useful tool; it makes it fairly easy to write readable code, there are a huge number of libraries available for it, and the vast majority of the time its capacity for abstraction is adequate. At the end of the day though, I just can’t get excited about it. It’s an unwelcome reminder to me that good libraries and tools can easily make up for a language that is only so-so.
Python the language is so-so. As I said, it’s capacity for abstraction is generally adequate. It’s not great. You don’t run into issues where there’s just no way to build the right abstraction very often, but you hit a lot of cases where there isn’t one that’s worth the effort. It seems to actively resist programming in a functional style, mostly for syntactic reasons - the semantics are all fine, but lambdas can only be one expression (no statements), and the language starts looking clumsy really quickly when you start using nontrivial expressions. Also, something resembling a switch statement would be really, really nice. Also enums, or something else that filled that void. Missing conveniences like this keep python code from almost ever feeling “elegant” to me; it’s always just a little too verbose for comfort, but not so much that it causes serious problems.
So yeah, not a compelling argument to steer clear, just bleh.
I dislike Openstack
Another technology I use at work. Part of this is that I just don’t like working with large code bases, and Openstack is several large code bases. The code is under-documented, which doesn’t help; out of frustration one day I wrote a quick script to find the fraction of modules in Keystone with module level docstrings. I’ve forgotten the exact number, but it was around 1/4 - 1/3. My one patch into Keystone was the result of spending a few hours digging around in the code to learn how something else worked (for which there was no good high-level documentation). I kept hitting usages of keystone.common.dependency, which had no documentation in it whatsoever. I spent a while working out what it was doing, and wrote it down so it wouldn’t waste anyone else’s time.
The biggest annoyance though, is just setting the damn thing up. I’ve lost track of how many tools/products there are for just setting up and maintaining Openstack. Deployment is something that requires special attention due to the nature of Openstack, and nobody seems to have found a good solution.
Clouds are made of water droplets, not computers.
I’ve started to get used to the word “cloud” meaning something along the lines of:
A series of computers offering on-demand creation of virtual machines.
I still cringe a little bit though. Openstack isn’t the sort of project people contribute to for fun - I don’t have any numbers, but I’ve never heard anyone mention a specific Openstack contributor who wasn’t doing it as part of their job. Part of being so industry heavy seems to mean being burdened with a lot of buzzwords.
I accidentally left this little fragment in the last blog post:
I wish I had a tool like that that I could use to go back and delete
I’d moved several things around, and meant to delete this but didn’t. Here’s the thought that was behind it, stated a little more clearly:
Sometimes, I wish I could just delete a piece of software from existence, and force people to start over, having learned from the design mistakes of the original.
Legacy makes me sad.
It’s not a rational sentiment. Usually throwing out a piece of software wholesale and starting on a replacement is the wrong way to go, but what I wouldn’t give to not have to deal with certain things… I’ll close with a quote that seems to be a favorite of one of the Keystone developers:
Software is like sex; make one mistake and support it for the rest of your life.