We're Only Part Time Tinkerers

9 thoughts
last posted Oct. 30, 2013, 1:54 a.m.
get stream as: markdown or atom

Danny Greenfeld notes that large parts of his personal development stack are proprietary, even though he's a huge open source enthusiast and promoter: http://pydanny.com/thoughts-on-my-stack.html

I think it's OK. If we try to do everything from scratch ourselves, we'll spend all our time on that instead of working towards what we actually want to achieve, and sometimes other factors are going to win out over the importance of the freedom to tinker.


In many cases, the freedom to tinker is just a hedge against disaster. That's why it's so much easier to sell open source software to enterprise companies: they're big enough that spending money as a hedge against disaster is a good thing. Companies pay for Red Hat subscriptions for a whole host of reasons, but one of them is because they can see the advantage to themselves that Red Hat remain a viable business. As our CFO put it a while ago, Red Hat's billion dollars a year in revenue means that our customers have on the order of an extra 9 billion dollars a year to spend on other things (or to return to investors as dividends).


In the consumer device market, though, the level of lockin is often substantially reduced, particularly now the lockin has largely shifted to software-as-a-service providers (it sometimes scares me how much damage Google could to do me if they turned evil, but I still use Gmail for my primary email address).

And this is because I'm only a part time tinkerer. Programming language design, the art of making it easier for developers to express their thoughts in a way that can be understood without ambiguity by both a computer and their fellow humans is absolutely fascinating. It's an intersection of the determinism of computing with the variability of psychology and the complexity of large scale system design that offers scope for exploration that will likely keep me intrigues for decades to come.


When it comes to other parts of the stack, though, I don't really care about being able to tinker, I just want it to work. I do work primarily on Fedora and RHEL, but that's because the Apple UI design principles that others seem to love so much make me want to scream in frustration and put my fist through the monitor. On Linux, I have the option to swap out Gnome (which similarly annoys me) for KDE (which I like), but there's no such flexibility on an Apple device. (I actually do something similar on my Android phone, swapping out HTC's Sense interface for GO Launcher Ex)


On the other hand, I do want to be able to build software easily, and I think both Microsoft and Apple have learned from Linux on this front.

I still use Windows on my gaming PC, but do all my development on Linux. If you trawl back through the dim recesses of the internet, you'll find posts from me back in the early 2000's, first exploring ways to build Python on Windows with the free toolkits (I did get it to work, but it was awful), then with Cygwin (which was broken due to some problems with threads), then with CoLinux, and then finally giving up and just dual booting to Linux instead.

I've long assumed that Microsoft's introduction of the Visual Studio Express series was precisely due to stories like mine: people that wanted to do software development just for fun, and thus were turning to Linux as an OS that encouraged them to be tinkerers rather than passive consumers.

With VSE, and Apple with the relatively token charge for XCode, both Microsoft and Apple allow the option for people to be selective tinkerers. With their POSIX based core, Apple are far more effective at this than Microsoft have ever been (I ranted more on this last year: http://www.boredomandlaziness.org/2011/08/open-source-windows-and-teaching-python.html)


Dave Neary has some comments on the speed bumps involved in trying to fix a problem for everyone, rather than just working around it yourself: http://blogs.gnome.org/bolsh/2012/09/14/attention-speed-bump-ahead/


Canonical are currently positioning themselves as champions of the "selective tinkering" concept in the Linux desktop distro space. They do this primarily by explicitly tolerating proprietary components in cases where they believe doing so leads to a better end user experience, as well as by tightly controlling the UX design of the default Unity desktop.

They're not the first ones to try this (Lindows/Linspire are the most obvious predecessor), but they've done an excellent job of building a community around their product, which is a big factor in Ubuntu's current popularity.

It's still an open question whether this popularity can be translated into market penetration and popularity, but the rise of software-as-a-service computing certainly gives them a fighting chance.


The challenge in the free software space, though, is to accept that people are only part time tinkerers. We're tinkering with our own things at our own level, so we usually don't want to have to tinker with our tools and our dependencies as well.

It can be nice to have that power when things go wrong, but, in general, we're often prepared to trade away our ability to tinker for other benefits in areas like performance, usability and stability (especially in our tools, which are generally easier to replace than our dependencies).


Another powerful description of this distinction is Pentaho's beekeeper analogy.

Sometimes it's nice to be able to just pay your dues and be a customer rather than having to put in the effort to be a community member yourself.