Slashdot Mirror


The Open Source Design Conundrum

Matt Asay writes "Walk the halls of any open-source conference and you'll see a large percentage of attendees with ironically non-open-source Apple laptops and iPhones. One reason for this seeming contradiction can be found in reading Matthew Thomas' classic 'Why free software usability tends to suck.' Open-source advocates like good design as much as anyone, but the open-source development process is often not the best way to achieve it. Open-source projects have tended to be great commoditizers, but not necessarily the best innovators. Hence, Red Hat CEO Jim Whitehurst recently stated that Red Hat is "focused on commoditizing important layers in the stack." This is fine, but for those that want open source to push the envelope on innovation, it may be unavoidable to introduce a bit more cathedral into the bazaar. Without an IBM, Red Hat, or Mozilla bringing cash and discipline to an open-source project, including paying people to do the 'dirt work' that no one would otherwise do, can open source hope to thrive?"

12 of 322 comments (clear)

  1. Apple makes good hardware by walshy007 · · Score: 4, Insightful

    Thing is apple laptops are usually pretty good in design, so even OSS people will buy one and then put distro of choice on it, problem? not really. Good hardware is good hardware.

    1. Re:Apple makes good hardware by node+3 · · Score: 5, Insightful

      Usability is about far more than making some sad Mac clone. It's about developers, developers, developers, developers - creating the useful applications and functionality that people want

      No, usability is not about functionality, it's about how that functionality works. Specifically, it's when the functions are designed to work in a way that better matches the way humans function. Open Source tends to focus more on how the computer functions as a computer and not enough on how it functions as something for people to use.

      This focus on human-computer interaction is something the Mac excels at. People don't point to it as inspiration because it's pretty. They point to it because it's more usable. Its prettiness is just one aspect of its usability.

      To be clear, functionality is important, but it's not the same as usability. To be usable, a system needs functions, but merely having the functions doesn't make a system terribly usable.

    2. Re:Apple makes good hardware by SanityInAnarchy · · Score: 4, Insightful

      First of all, developers are far from the only Firefox users, even on a Mac. People like their addons.

      Second, Firefox was an example -- it's trivial to find inconsistency even in Apple's own software, before you get to third-party stuff. And Windows is even worse. The fact that people can paint "inconsistency" as a major weakness on Linux just strikes me as absurd -- the differences between Qt and GTK apps are nothing compared to the differences between various Windows apps I've seen.

      All that said, Firefox tends to be a fairly decent UI, no matter what platform it's on, so I think that disproves the "open source can't design" theory.

      --
      Don't thank God, thank a doctor!
  2. Already handled by clang_jangle · · Score: 5, Insightful

    This is already being done. Many of the most successful FOSS projects have corporate contributors, so this "design conundrum" doesn't really exist. As for the popularity of Apple devices among FOSS developers, well, a lot of Apple software is based upon FOSS. In fact Apple, like it or not, is a pretty good example of how to monetize FOSS. Can't say I'm thrilled with the methods they employ to achieve that, but it's still a fact that they do achieve it.

    --
    Caveat Utilitor
    1. Re:Already handled by Old97 · · Score: 5, Insightful

      The best things about OS X and the iPhone were published in academic journals years ago; some as much as two decades ago.

      Your statement is generally true for all software. Just about every important thing we do in software was thought of by 1980. There have been refinements, polish and some interesting synergies gained by combining things - innovations, but few if any important inventions. It's just a lot of these ideas were not economically viable to implement until hardware improvements, materials and costs made them so.

      You should also credit Apple for excellent execution - since Jobs returned at least - in a number of key areas which left them well-positioned to implement the good ideas once they identified them. One thing neither FOSS or Microsoft can fix is difficulty in aligning hardware and software designs when both are moving targets and only one is in your control.

      --
      Very often, people confuse simple with simplistic. The nuance is lost on most. - Clement Mok
    2. Re:Already handled by Geoffrey.landis · · Score: 4, Insightful

      Apple, also, don't innovate much....

      You say that almost as if you think it's a criticism.

      There's nothing more annoying than innovation that's implemented solely for the sake of innovation. There are places where you might enjoy that, sure, but for a machine that you use every day to get work done, you only want innovation that makes your work easier.

      ...while Apple is much better at finding good ideas to copy.

      A desirable trait.

      --
      http://www.geoffreylandis.com
  3. UI Design and custonmer support are the dirt work by Anonymous Coward · · Score: 5, Insightful

    That many developers feel it is beneath them and gets in the way of them developing. In the commercial space, developers rarely interact with customers in a support role or in UI design. Many would quit before performing this role, but developers in some cases are the only ones who can properly address this.

    In one company I worked for, developers had to eat their own shit in that they were forced into part-time customer support of their code. When your interaction with code begins and ends with the source code control system, you have one view. When you actually are forced to see where the rubber meets the road in your customer, you think much more about the interfaces, the update processes, and the support code and scripts that get working code into working systems.

    In the commercial space much effort and resources is applied in these critically important areas. With the journeyman programmers, this rarely if ever happens.

  4. Application specific expertise by mevets · · Score: 4, Insightful

    Commercial applications have long separated the appearance and behavior of the application from the implementation for good reason. The obligatory strained car analogy, I like cars that are quick and responsive, but I don't want one made by an engine designer. No matter how talented the engine designer is, s/he will most likely make a car suitable for engine designers.

    Balancing the viewpoints of "real world users", experts, and various designers is required to do it properly. Are all these sets well represented in the FOSS contributors?

  5. Some good points in there by mjeffers · · Score: 4, Insightful

    First corollary: Every contributor to the project tries to take part in the interface design, regardless of how little they know about the subject. And once you have more than one designer, you get inconsistency, both in vision and in detail. The quality of an interface design is inversely proportional to the number of designers.

    This isn't necessarily true. It's true that great design is typically the result of a unified vision but design focused companies solve this problem by having a lead designer establish guidelines and standards that are then used by the team to create all the bits and pieces. You don't need one person, but you need one person in charge. For an Ubuntu, RedHat or OpenOffice where you have a corporate structure behind you, this level of design quality is achievable and I think they have it now. For a project of volunteers or a team that's widely distributed this has to be much more difficult.

    Second corollary: Even when dedicated interface designers are present, they are not heeded as much as they would be in professional projects, precisely because they're dedicated designers and don't have patches to implement their suggestions.

    Without the ability to write code, designers depend on an organizational structure that recognizes and values good design and will work to make sure that the end result meets the design goals you initially set out. This can fail in a non-OSS project and could succeed in an OSS project but a hobbyist project will probably never have a structure that allows a designer to do great work.

    Another issue that I think isn't addressed here is that OSS projects are typically (necessarily?) started by people who can code. Once you have something running it takes a huge amount of effort to redesign away some of those early design decisions. You'll also forever be in a mindset that views design as window-dressing that gets applied to APIs. I'm not familiar enough with the history of OSS projects but are there examples of projects that started with a design process?

    1. Re:Some good points in there by Blakey+Rat · · Score: 4, Insightful

      There's a little more to it than that.

      It's not just that the projects are started and nursed along by people who can code, but they're started and nursed along by people who can code and also:
      1) Don't know the purpose of a GUI
      2) Don't understand the value of a GUI

      There are tons of techniques that can be used, even by a programmer, to ensure that their program is more usable than the competition.

      At the most basic level, they can follow all the UI standards of the OS/DE in which they're planning to run-- that one's simple, but it's completely missed by a lot of projects. If your program is running in Windows, and your font isn't rendered with ClearType-- it's a usability bug! Fix it! If you're running in OS X and pressing the down arrow on the bottommost line of text results in a beep instead of moving the insertion point to the end of the line-- it's a usability bug! Fix it! (And a very frequent one, since a lot of OS X programmers come from the Windows world now.) If you're not following all the standards of the OS you're running in, there's your starting point.

      Secondly, every time you code something with a GUI, do a hallway usability test. This consists of grabbing someone walking by in the hall, and asking them to perform whatever task your application is designed to do using the new GUI you just wrote. The less that person knows about programming, the better-- you want normal users, not power users. The point isn't to assign a simple "pass/fail" to the UI, but to get their comments and feedback. Do one of those a day, and you'll hammer out 80% of the usability flaws before the product is even released. (Of course, this involves talking to other human beings, sometimes even *gasp* girls!, so I guess that's why it doesn't get done.)

      Thirdly, understand the GUI. Discoverability, most importantly. Emphasizing the use of spatial memory, which the vast majority of non-geeks are better at than rote memorization. Understand how the basic widgets work, and why they work that way. (When you understand why widgets work the way they do, you'll hopefully have talked yourself out of "just write your own!" Writing a menu or listbox is *hard*. Writing an open dialog is *incredibly hard*.) Be able to answer the counter-intuitive question: "what five places on the screen can the user put the cursor on the quickest?" and learn why Macintosh menus are stuck to the top of the screen. Understand Mac Classic, which got closer than any other GUI to perfection. (IMO, of course. ;)

      There's no reason any programmer can't do these things. They just don't want to. That's a whole different article, though, going way back to the woefully-obsolete "high priesthood of technology" attitude.

      Random examples:

      Just recently Slashdot covered a new open source FPS game. It's main window looks like this: http://schend.net/images/screenshots/alien_arena.png I can't even enumerate the hundreds of things wrong with just that one window. That the developers thought that UI was "good enough" to craft a *release* around... I don't even know how to reply to that.

      Awhile back, I filed a bug against Notepad++ (a highly recommended-to-me text editor for Windows) because their menus didn't work. Their DROP DOWN MENUS. The ones attached to the top of the window. One of the most basic elements of a GUI, one that's been perfected for 20 years, and they don't work!! Again, I have absolutely no words for that.

  6. It isn't dirt work, it is conflicting work by coryking · · Score: 4, Insightful

    UI design isn't dirt work; it is actually very fun and rewarding. The thing is it is hard to wear both a "UI Design Hat" and a developer hat at the same time. Why? The UI guy in you wants a usable UI and the programmer wants a usable codebase--those two goals are often highly conflicting. Good UI design often requires code that often needs to deal with crazy edge cases, or code that has to turn fuzzy human illogic into clean, elegant programming. If you try to wear both hats, the developer in you will fight the UI guy in you because the UI guy wants you to create a feature that the programmer in you knows will be a messy pain in the ass.

    Once an organization gets large enough, you can have different people wearing the hats. This works great in an environment where there is a communication process for the two to talk to eachother. In the open source world, such communication channels typically donâ(TM)t exist--there is no process that has really been established. You might get UI guys dropping golden nuggets on the project mailing list from time to time, but you donâ(TM)t have the UI guy meeting up with the developers on a daily basis.

    If you want the UI guys to be in on the party, the culture of open source development will have to shift to make use UI guys are not only included in the entire development cycle, but more important--they are seen as equals in the process. If the UI guys says "this design sucks", the developers don't implement it. I dunno if that is part of the culture nor am I sure how or if such a thing could ever be pulled off. UI guys get the props they deserve in paid jobs simply because there is a financial incentive to listen to them. Without that financial incentive, the only incentive to spend your time working on open source is the joy of programming. When you are doing programming for the joy of it, you donâ(TM)t want some UI guy (even if it you) raining on your pretty looking, well designed code :-)

    1. Re:It isn't dirt work, it is conflicting work by shutdown+-p+now · · Score: 4, Insightful

      The UI guy in you wants a usable UI and the programmer wants a usable codebase--those two goals are often highly conflicting. Good UI design often requires code that often needs to deal with crazy edge cases, or code that has to turn fuzzy human illogic into clean, elegant programming. If you try to wear both hats, the developer in you will fight the UI guy in you because the UI guy wants you to create a feature that the programmer in you knows will be a messy pain in the ass.

      This is very true, and here's a very simple yet pervasive example of this.

      If you want an UI that feels responsive, it should never, ever hang on any operation. Which means that all operations have to be pushed onto background thread/process, with all the synchronization complexity that it entails, and all the safeguards that you have to do to make sure that two conflicting actions aren't being pushed to background and executed at the same time. As an UI designer, you understand that, while the effect may be small and hardly noticeable, it does take away the nagging feeling of annoyance that inevitably comes up when working with blocking UI. But as a developer, you understand that code complexity will increase manyfold.