// Internet Duct Tape

Why Open Source Software Sucks – Software Simplicity Isn’t Simple

Posted in Programming and Software Development, Technology by engtech on December 06, 2007

Programming Tips

Aside: Hosted software would be something like Gmail, while installable software would be something like Outlook. WordPress.com is hosted software by Automattic, but it is also available at WordPress.org where you can download it and install it yourself where ever you want.

There are a few “internet rockstars” in programming circles, and most programmers who read blogs will have heard of Joel Spolsky (one of the few people who writes entertaining tech books) and 37signals (the guys who made Ruby on Rails and Basecamp). The guys at 37signals recently wrote a post about how they prefer creating web-based software that they host vs software that a user would have to download and install themselves because it is so much easier for the software developer. When you don’t have to release your software into the wild you have so many less things to worry about: different operating systems, memory performance, installation dependencies, hardware dependencies.

“You have to deal with endless operating environment variations that are out of your control. When something goes wrong it’s a lot harder to figure out why if you aren’t in control of the OS or the third party software or hardware that may be interfering with the install, upgrade, or general performance of your product. This is even more complicated with remote server installs when there may be different versions of Ruby, Rails, MYSQL, etc. at play.”

Joel looks at his stats and points out that if he didn’t provide installable software then he’d be out of business, because it accounts for 80% of his revenue compared to hosted software.  He also makes a great point that software that people are willing to buy is software that solves a gnarly problem, IE: it deals with complicated stuff. Any other kind of problem can be solved by free software because its uncomplicated enough that one guy in his mom’s basement can churn it out over a weekend.

“The one thing that so many of today’s cute startups have in common is that all they have is a simple little Ruby-on-Rails Ajax site that has no barriers to entry and doesn’t solve any gnarly problems. So many of these companies feel insubstantial and fluffy, because, out of necessity (the whole company is three kids and an iguana), they haven’t solved anything difficult yet. Until they do, they won’t be solving problems for people. People pay for solutions to their problems.”

But he then follows through with a great point that the gnarly problem that 37signals’ applications solve is the problem of design. 37signals might be building fluffy Ruby-on-Rails Ajax sites, but that’s beside the point of the problem they’re really solving: how to design a great looking user experience that makes people happy.

I think this draws a great parallel to what’s wrong with free software: it’s created to scratch a certain itch, and that’s usually all it does. Compelling user interface? Joy to use? Nope, it solves the original programmer’s problem and that’s about it. And before you get all uppity that I’m attacking open source software, let me clarify that I’m talking about the open source software I create.

The problem is two-fold: I have a natural tendency to over-complicate things and I have trouble sharing the customer’s pain (stepping away from the code, and seeing how a stranger would view the end result). Jeff “Metal” Atwood asks “When was the last time you even met a customer, much less tried to talk to them about a problem they’re having with your website or software?”

This hit me last week when I sat down with another engineer to show him an internal tool I was building for him. He started poking a usage case that confused him. It wasn’t in the spec, and it didn’t follow the way he thought of the flow. It was an artifact of the internal data structures I was using that I was exposing to the user. This happens too often. It’s the opposite of opinionated software [1]: pushing the decision making on to the user. [2]

Of course, writing open source software has its benefits because quite often there’s no barrier between you and the people who are using your software other than computer screens. You are your own quality assurance, and you are your own customer service. You have to explain to the users why they should install your software, you have to deal with the installation headaches your platform choice created, you have to explain any complexities with how to use it, and you have to help them when problems occur.

My open source software might suck, but its helping me explore the solution to a gnarly problem: how to solve problems in a way that is easy for other people to use.

Related Posts


1 – There’s an interested essay to be written comparing opinionated software to considerate software.

2 – This programming talk might bore you, but the problem of simplicity in design is cross-discipline and applies to any blogger.

15 Responses

Subscribe to comments with RSS.

  1. stolennomenclature said, on December 07, 2007 at 9:31 pm

    I have found so far that Linux supporters (at least those that post on forums) seme to despise end users. Unless you are prepared to become involved to some extent in the development process, either by reporting bugs or cummincating directly in some way with the developers, you are labelled as a whinger. Their general attitude seems to be that if you are not prepared to help, then you have no right to complain. I guess you can sum up the apparent attitude to free software as “like it or lump it” and whatever you do dont complain about it.
    It seems that Linux is produced by hackers FOR hackers, and that end users, people who might use the product but not have shared in its development, are regarded as the software equivalent of dole bludgers – getting something for nothing.
    As a person who has spent thousands of hours over years trying to get Linux to work for me, looking over forums, reading wikis, editing countless parameter files, re-installing and rebooting and all sorts of other completely boring and tedious and ultimately futile efforts to get good results, I can honestly say it has not been something for nothing for me – much more like nothing for something.
    Much as I loathe proprietary companies like Microsoft and Novell, it looks like it will take the involvement of commercial entities with Linux to achieve anything like a useable product for users as opposed to hackers. e.g. People who want to use the computer as a tool rather than to play with it like a toy.

  2. wellingj said, on December 07, 2007 at 11:01 pm


    Any tool that can work wonders for a highly skilled craftsman can just as easily injure a novice if used incorrectly. And the converse of that is that a novice tool can’t do everything a craftsman needs.

    When you use the term ‘tool’ and ‘toy’ why don’t you consider your target audience first.

    To system administrators, web-app developers and embedded developers, Linux is a tool and Windows is a toy.

    To an office assistant, a teacher or a salesman, Linux is a toy and Windows is a tool.

    I find it hard to believe that a person who has spent thousands of hours over the years working with Linux has failed to realize the difference between how people use Linux and how people use Windows. But I guess it’s never to late for a wakeup call.

  3. Rich said, on December 07, 2007 at 11:14 pm

    stolennomenclature = troll.

    I don’t know anyone dumb enough to have failed to get Linux to work after trying all these things.

    On the original post – I find people talking about “good software” somewhat amusing; especially when deep in self analysis. It exposes the critical failure to understand that the “good” in “good software” is merely an opinion. Software is never good universally; some may consider a piece of software good because it fits their mental model. It’s vi versus emacs.

    Just because someone cannot get their head around a UI does not make the UI bad. Some people are just dumb or inflexible.

  4. corvi42 said, on December 07, 2007 at 11:38 pm

    I think the key ingredient is the flow. The end-user experience in any software is primarily about the workflow, and only secondarily about the quality of the UI (of course, if the UI gets in the way of the workflow – thats just as bad). Your experience with this engineer / user says it all to me. He had a different vision of how the workflow should be than you did. It may be that your workflow was the result of the datastructures you used, as you say, but then the question becomes, what vision of flow did you have before you started putting this thing together? If you code first and ask these questions later, you’re likely to end up with something that has a poorly defined flow – or where the flow is dictated by the datastructures rather than vice-versa. One should always give thought to how you see the thing being used (and ideally, consult with users too) before you start coding.

    Most open source software is unfairly labelled (as stolennomenclature does) as being without a vision of flow. This may be true in some cases, but for the most part, there is a vision of flow – its just not what you expected it to be. This is because the flow was what that “guy in his mother’s basement” (more likely, that grad student trying to meet his supervisors’ deadlines) had in mind for flow – not what you want it to be. Ultimately just because you think some work should be done a certain way doesn’t mean this is the only way to do it. But just because a developer has a different idea of how to do things doesn’t mean she’s arrogantly ignoring users interests. When it comes to 99% of software, all developers are users too – they want the same kinds of things from their software as anyone else. Otherwise there wouldn’t be X, Gnome, Firefox, etc… Linux would still just be CLI.

  5. RHB said, on December 08, 2007 at 1:25 am

    I can’t believe anyone would try to push the idea that Open Source can only be used for simple solutions. One word, Google (Not to mention IBM, Novell, etc)

    The idea that only people that live in their mother’s basement use open source, two more words. Mark Shuttleworth

    People who write this kind of drivel are sensationalist bullshit artists who know about us much as my great grandmother about the future of computing, pretty pathetic!

  6. Nick said, on December 08, 2007 at 1:26 am

    If it’s only your open source software that sux, why did you title this article as you did?

    The “single use” & simplicity of open source tool are their best feature. Small tools that do small things build upon each other to make powerful things. It’s a UNIX philosophy, not necessarily associated with Free software.

    I do agree, however, that user interfaces are DAMN hard to get right, and maybe the lack of a single controlling company is the reason why Linux’s desktop experience is like a pile of festering turd.

    When was the last time you installed Nero under Windows just to burn a CD? See what happens when a company decides to throw the whole kitchen sink into what should be a simple package.

  7. Sid Boyce said, on December 08, 2007 at 3:31 am

    Right from the script of a TV talk show, confessions and all. I am the quintessential Open Source software user and I see and use user mailing lists on a variety of projects. Problems get fixed, suggestions are debated and acted upon in a speedy fashion. I don’t know of any such intimate contact between proprietary developers and their customers. In the proprieatary world, the project goals are strictly controlled and influenced by just a small number of individuals. The user involvement, strictly limited, will normally be in filing bug reports and in no way determines the fundamental structure or direction of the project, you have to “like” what you pay dearly for and work around any difficulties or dislikes you have.
    Rose tinted spectacles, the brilliance of the box artistics and the soothing state of mind generated by the celophane wrapper, and the EULA inside in no way demonstrates “good”. Oh, and neither does the just magical SP# promised.
    I could paraphrase this blog as saying that all “good” software is produced by suited and tied programmers working in cubicles in a nice airconditioned building, served by as much free and fresh coffee as they desire.

  8. conholster said, on December 08, 2007 at 3:43 am

    So, why does opensource software suck?

  9. hogliux said, on December 08, 2007 at 5:44 am

    I’ve been developing for Linux for a pretty long time now and I think this is a great article that really needs to be discussed more widely. Yes, it’s true: Linux and Open Source Software doesn’t just run out of the box no matter what the distribution developer says on how simple it is. I often have to install Linux for friends because they can’t do it on their own and it usually involves some sort of recompiling and modifying someone else’s code because some special network card isn’t supported out of the box vs. install windows and it just works. But i think there is one thing that I have been noticing over the past years: the upcoming generations of users are getting better and better with computers and their understanding and often WANT to have more control over the system than commercial software can offer them. An example: I have many friends you study psychology ( not the classical computer experts ). It was surprising to me that I found out that many ( especially the young students ) were using Latex Beamer for their presentations. Imagine!! Latex Beamer! I mean, ten years ago you would be considered a hard core programmer if you did your study papers with tex and today the average student starts to use these tools ( or consider html programming ). Younger generations just grow up with computers and they somehow just naturally understand the workings of the computer from a kind of developer point of view. I hear many students complaining that Windows is just too “simple”. So to sum it up: I think many companies are underestimating the new generation of computer users and if that don’t open up some of the inner workings ( like being able to recompile your software for specific needs ) these companies will make a big mistake.

  10. BradwJensen said, on December 08, 2007 at 5:59 am

    IMHO, developers should to be more flexible and create software that is switchable. Switchable in the sense that you can have a simple checkbox on each tab in a preferences box to switch that tab’s UI for either Experienced or New/Novice. This would eliminate the whole Toy/Tool argument considering it could then be either for both types of people depending how they want it set.

    Style and Ideas are what makes thing stand out and better than others. Some just go with the basics of working, others take it further and make a simple yet still quality layout.

  11. BradwJensen said, on December 08, 2007 at 6:01 am

    My main point above is that Developers and Users argue too much about why things suck one way or another – when the real answer is to both talk and come up with a solution to fix it for both parties.

  12. […] Skip navigation Subscription OptionsMost Popular PostsIDT Labs – Free Software ToolsWordPress.com Resources – Tips, Tricks and ToolsWordpress.com Theme ReviewsWordpress.com Theme Review HelpGreasemonkey script: WordPress Category ResizerWordpress.com 7 Day Referrer ParserPerl Script – WordPress.com 7 Day Referrer ParserGreasemonkey Script: Akismet Auntie Spam for WordpressGreasemonkey Script: Find images that are too wideTag Cloud Generator for Wordpress.comTag Cloud Generator AdvancedTag Cloud Generator – Release NotesWordPress Themes by InternetDuctTape.comBlack and Blue and Read All Over Theme for WordPress SandboxMoon Under Uranus Theme for WordPress SandboxMiscellanious WordPress Scripts and ToolsGreaseMonkey Script: WordPress Comment NinjaTechnorati Favorite Your FansTechnorati Favorite Your Fans – Release NotesComic BloggerGreasemonkey script: Flickr always search for Creative Commons licensed photosGreasemonkey Script: Yahoo Pipe CleanerTag CloudAll Posts by Category and TitleSeriesGift Guide for Geekseaster eggsReader Appreciation for RSS subscribersWelcome to Internet Duct Tapegoogle1ec000b3808eedbf.htmlAbout MeDisclosureImages Credits « Why Open Source Software Sucks – Software Simplicity Isn’t Simple […]

  13. conholster said, on December 08, 2007 at 6:49 pm

    So in other words you’re basically saying attiudes suck? That’s quite a long way from the software actually sucking… I dont mean to disrespect you or anything, I’m sure you put alot of thought and time into this article but I just dont think it’s justified to come up and say OSS sucks based on what developers attitudes are. Remember this is FOSS, a community effort! Anyone can take part. And if you have a good idea on how XYZ can be improved someone will listen and make it happen. In the words of some dead president “Ask not FOSS can do for you but what you can do for FOSS!” ;)

  14. Michael Sync said, on December 22, 2007 at 6:38 am

    Hi EngTech,

    You remember that you posted about hosting service from wordly.org. Daniel was running that site. He gave the free hosting for top commenters in your posts.. I got the free domain and free host from him.. Now, I want to contact with him and want to ask him to transfer my domain. The email that he sent me at that time is not available now..

    Can you give me his email address? Thanks in advance..

  15. Khürt said, on December 27, 2007 at 12:15 pm

    The point of software is to do something useful for someone. My mom is a someone and she does NOT care about the OS or what the application is called. She just wants to do what she wants to do ( in her case read email, share photos with family, and balance her check book ). She cares not whether it is Firefox, Internet Explorer or Safari. She does not know Windows from Linux or OS X. She really could care less ( and she care less everyday). She just wants it to be easy to use and available. And I don’t expect my 65 year old mom to do all the shit that most Linux pro users do to get hardware/software working. For my mom, a shiny packaged ( and yes extremely proprietary ) Mac will suffice. In fact it’ll work well for most UNIX and Open Source folks as well.

Comments are closed.

%d bloggers like this: