re: engineering management
notes on software development, leading teams and changing the way we work

Oil and Water

Reality check time - Open Source will never produce insanely great products when it comes to design.

Wow, didn’t even ease into the flamebait this time…

Let’s look at the evidence, shall we? For years, we’ve been hearing about the rise of the Linux desktop. The desktop that would be easy enough for your Mom or Grandma to use. …because the command line is too hard for women? Good luck with THAT sexist argument! Or, because Linux is Open Source it is automatically better, purer and easier? Suuurrrreeee……

GNOME and KDE are the predominant Linux desktop environments. Know why some people prefer KDE over GNOME? Because it works more like Microsoft Windows. Yes, THAT Microsoft Windows…the one that all the Open Source fanatics love to hate. Closed, proprietary, downright EVIL Microsoft Windows. A popular Linux desktop environment that is essentially copying a closed, proprietary environment? Nah! Couldn’t be! Except that every single Linux desktop app is essentially a clone of either a Windows or Macintosh application? Oh, and the component model on which GNOME is built? Inspired by Microsoft COM.

In the late nineties, Eazel tried to make Linux as easy to use as the Mac. They managed to get a file manager out before they shut their doors. Ximian tried to do the same, then got bought by Novell. Canonical is (finally!) approaching Mac-like aesthetics with Ubuntu 10.04 Lucid Lynx.

Now, I love and support Open Source. However, one has to wonder if Open Source has so many advantages why has there been so little innovative, original design coming out of that community? Why do they just copy what has come before? One answer might be:

"Good artists copy. Great artists steal." - Pablo Picasso

Except, no Open Source product currently stands out as an exemplar of great design. So, the Open Source community is just copying. They need to steal.

When it comes to infrastructure, things are a lot different. There are tons of examples of great code and creative uses of technology. Software that enables all of the wondrous services and tools we use on a daily basis. Hardware that used to fill a room that now fits in your pocket. Still, that is mostly the function. Form is just as critical a component and that is where I believe the Open Source community falls down.

"To make a user-friendly system, the system must have conceptual integrity, which can only be achieved by separating architecture from implementation." - Frederick Brooks, The Mythical Man-Month

Engineers tend to over-focus on the implementation; what tool stack will we use, what’s the most efficient algorithm here, emacs or vim? All of these are critical issues (except the last one. The answer is simple…vim.) And, they often address conceptual integrity in terms of code modularity and loose coupling. But, they often punt on design. Or, copy badly.

Google, frankly, has been getting worse at this. No question, they employ some of the finest minds in the world. However, I once thought they had an interesting, minimalist design aesthetic. Their search engine, while maximizing function, also maximized form by what they left out. They epitomized this most famous of sayings:

"In anything at all, perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away." - Antoine de Saint-Exupery

However, as Google has moved more into products, they seem to have fallen into copy mode. Google Apps looks more and more like Microsoft Office. Feature creep abounds. And today, they committed the most egregious of sins. They added a Microsoft Bing-like wallpaper feature to the main search page on google.com.

Compare Android to Apple’s iOS. Well, try anyway. Which version of Android? On which device? The stock Android UI or the (purportedly) far superior Sense UI from HTC?

This is the critical error the Open Source community continues to make. They conflate providing choices with making choices. All the current arguments against Apple are about choice. Users should be able to choose. They need their freedom. If I want to run Linux on my wristwatch, I should be able to even though there’s no damn good reason for doing so. Blah, blah, blah…

Bullshit. Design is about making the most appropriate choices, so that your customers don’t have to for the most common cases. It’s about providing great defaults and fewer settings, not settings for every friggin' feature you offer. Sure, I could buy an Android phone and tweak it to my heart’s delight. But, do I want to? I have to think and decide all day long. Can’t I have one thing that doesn’t force me to twiddle with it needlessly just so I can use it?

I want to love Open Source products, but I can’t…yet. To me, Linux on the desktop has long been displaced by Mac OS X. If some vendor creates a laptop with the build quality of a MacBook Pro, installs a distro that allows it to wake up from sleeping immediately and has non-flaky wireless support then you can bet I’ll give it a try.

And I believe that someone out there can do it. They just need to steal from The Master:

"People think it’s this veneer – that the designers are handed this box and told, ‘Make it look good!’ That’s not what we think design is. It’s not just what it looks like and feels like. Design is how it works." - Steve Jobs, 2003

At the 2010 Apple Worldwide Developers Conference, Steve showed a slide with street signs indicating the intersection of Liberal Arts and Technology. Apple lives on this intersection. That is the lesson that the Open Source community needs to learn. The two are not mutually exclusive. They can work together harmoniously.

Find a way to bring great designers into the community and learn to work with each other. I want there to be an Apple of Open Source. I want to be its customer.