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?"
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.
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
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.
It is only a small part of the Apple Mac software that is non-Free and you could even run Darwin which is Free. The bulk of the software on any Apple Mac is GPL.
Excuse me, but please get off my Pennisetum Clandestinum, eh!
While this might be true for apps -- they change too much to settle on a thought-through UI concept, and new ones are constantly created for the same task by not so experienced UI designers -- I'd like to add that IMHO Linux has the best window managers out there. That is one of the reasons I don't use Windows and would put a Linux distribution on a Mac. Because I need to move and resize windows without finding the borders (e.g. Alt-click or Alt-doubleclick and drag). And I need sane virtual desktops for more screen space and for grouping my windows.
These are UI features lacking in non-open-source. Granted, it is not something the novice user will miss.
NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
I disagree with the premise that FOSS usability is always bad. I'm not a developer, I can't write code, but I use *nix exclusively for my home computers, running KDE. And they are WAY more usable than my windows computers at work. Small things make such a huge difference--with windows, when you move the mouse wheel, the active window scrolls, even if you have 2 open side by side. You have to click on the one you want to scroll. With KDE, the window that your mouse cursor is hovering over scrolls. This is so intuitive it took me a month or so to even notice. I've found all kinds of other small usability tweaks.
My KDE desktop at home is so much more usable and intuitive than my windows xp box at work that I often work at home just for the pleasure of using KDE.
That said, the entire Internet was built by FOSS and FOSS-like processes. From ftp and telnet through WWW/mosaic, it was all someone who had an idea and wanted to see if others liked it too.
For hardware, Apple's can be of higher quality because it is higher priced. It can be higher priced because it is perceived good value -- mostly the interfaces are less botched than their competition.
Macs can run Windows, Linux and Mac OS X (duh). The machines themselves are crafted with attention to detail. Versatility in a neat package. What is not to like?
Bert
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?
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.
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?
While I haven't seen Apple laptops comprise a great proportion of machines at the FOSS conferences I've been to here in Europe, those I have seen are often running something other than OSX (if stickers and/or a peek at their WM is anything to go by). It's not so unimaginable that someone might choose to run something other than OSX on a Macbook especially if they have little need for proprietary software and prefer an OS tailored to their needs (or just don't like the design and feel of OSX altogether - some don't).
Regardless, in the last couple of years I've seen a lot of X and T series Thinkpads but moreso netbooks at hacker and FLOSS meetings in the EU. I hear from friends that the build quality of their MacBooks is a bit disappointing. Perhaps this is a reason, among others.
It is very possible to make good and usable FLOSS software - you just need a project leader who knows about usability. I find that reading and understanding Gnome HIG is a great first step.
The 'problem' is that in most cases the main programmers in FLOSS have little knowledge about HIG, while a lot of commercial software is designed by sales people, who know HIG, but have very little knowledge of programming. So the situation is that FLOSS often has great code, but bad interfaces, while commercial software often has good interfaces, but crappy code. In both cases the situation can be improved by having people from the other side join in and contribute. In commercial software that means that the manager hires some good coders, while in FLOSS side it means that users file bugs and sometimes send patches or UI mockups.
It is not an unsolvable problem, it is just an existing problem that takes effort to solve.
Why link to the outdated version of Mathew Paul Thomas' article when he wrote a much newer one here: http://mpt.net.nz/archive/2008/08/01/free-software-usability Appropriately, it's titled: Why Free Software has poor usability, and how to improve it
Many of the UNIX command line utilities are based on open source projects covered by a BSD (or similarly entirely free license), and some are covered by GPL licenses (which are more restrictive and by simple definition are thus less "free" or "open"). The most important GPL software in Mac OS X is arguably the GNU compiler, gcc. Apple is a major contributor to the LLVM project, which will at some point replace gcc as the primary compiler tool chain on the Mac OS X.
Apple has also sponsored a few other interesting open source projects such as Darwin Calendar Server, WebKit, and of course the Darwin UNIX kernel. Most of these projects are covered by a BSD or similar license.
Apple's implementation of the Cocoa Framework is not an open source framework, but it is based on an open specification, OpenStep specification, although it has evolved past the specification. There is an alternative, open source implementation, GnuStep.
There. Fixed it for you.
If you mod me down, I shall become more powerful than you could possibly imagine.
This is already being done. Many of the most successful FOSS projects have corporate contributors, so this "design conundrum" doesn't really exist.
That's not how I read it. FOSS projects have corporate contributors as a weapon used to commoditize their rival's products. (IBM versus Sun, to make it impossible to monetize Java) FOSS projects are also funded in order to create commodity complements to company's products. Sell servers? Commoditize software that runs on servers!
http://www.joelonsoftware.com/articles/StrategyLetterV.html
There's a problem with this. It reduces FOSS to ammunition. A tactical move. If FOSS can't produce really slick interfaces, then FOSS will always be a lackey of the corporations in order to achieve first-rate success. If the corporations don't like you or can't use you, then you're left out in the bush leagues, the farm teams. Just look at the software out there. Almost every piece of software that gets widespread corporate or consumer traction is being used as a weapon or market driver.
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.
The problem is that it makes FOSS critically dependent on the corporate masters if a particular project wants to be "first-rate." It's as if FOSS is like indy music/film, and the corporations are the music industry, and everyone is trying to get signed. Maybe that's how things should be. But it would be better if we never had to admit, "can't say I'm thrilled," about how our funders are treating our ideals. FOSS needs its equivalent of bittorrent, Pirate Bay, and independent musicians who can give the finger to the big music distributors, yet still turn out first-rate product. Where's our Protools for interfaces? (Actually, the problem is likely cultural and not technological.)
There are only, by my quick count, one hundred and forty one Linux distributions. Currently shipping. For the Intel platform. In English.
Comment removed based on user account deletion
I would never buy a Mac especially not with all the reliability problems they have and mis-features like locking the SATA port to SATA 1 speed, disabling 802.11n on the older ones and requiring people pay to get the feature, etc. On top of that I would never run MacOS X, as I am a Linux developer, so why pay more (the Apple tax) for less hardware. I personally own a ThinkPad X200 which is much better and cheaper than anything I have seen from Apple.
As far as open phones go, there is really not much choice on that front. There is Openmoko which doesn't even have Edge/3G support or the T-Mobile G1 Android phone. It also looks like openmoko is dying off and they have canceled their phones planned to have Edge/3G support. Android looks promising but the phone still needs a lot more work and/or there needs to be more than one of them available. More Android phones should be available later this summer so perhaps it will gain more marketshare. So I am not surprised at all that currently people at open-source conferences are using iPhones. I recently bought one for myself after sitting on the fence about whether to continue to wait until a nicer Android phone became available. Hopefully in 2 years once my at&t contract finally runs out there will be much better Android phones available. With respect to at&t they are planning on releasing an Android phone as well but with crippled resolution only 320x240.
One axis I've not seen discussed is that most developers are using textual languages. Most mathematics is essentially text based, not diagram based. One uses diagrams for intuition, but when the formal derivation or program must be done, it is done in text.
The problem then becomes that the concepts expressed in the software are most easily explained in terms of text, not diagrams. Guis are diagrams. Consider, just for a mental exercise, any of the unix shells and their languages. Most developers have no problems. Most users would rather gnaw off their right arm than go through learning a shell language and then relearn in it 6 months when they must use it again.
So, let's see what it takes to produce a gui for it. Apple used to have a system called MPW. You could hilite a command and call up its Commando interface. The commands themselves were rather textual and unixy, but the interface allowed you to click radio buttons, use pulldown menus, etc. to construct a command. The command constructed as text and shown in an editable window at the bottom of the dialog box for the Commando interface of the command. You could run the command right there or copy the text and run it in another window. That sounds about the right level.
Now we must think about piping. There was a language called Prograph, but now called Marten. It is an object orientied data flow language. It is a diagrammatic language and one draws lines to 'pipe' objects from one command to another, with some special lines for control ordering. There are mechanisms for recursion and the usual range of program construction artifacts.
One could combine the two, Marten and Command and successfully guitate unix shell languages (I'm sure there are other concepts that would need to gui equivalents for those languages). Now think about the amount of work necessary to do this. The point is that guis take an extraordinary amount of time and effort, and most of the skills are not the headless (non-gui) development most developers are familiar with and it is a paradigm directly at odds with their programming languages.
I see no entity within the FOSS community that could do such kinds of design and get it stick so that it becomes the faces of the OS or the applications for casual users who might wear an occasional python boot (think Frank Zappa). OpenOffice isn't an example, it is the usual retarded word processor editor that Microsoft pushes with the usual result that people would rather use Office since OpenOffice isn't buying them anything in which they are interested.
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 :-)
stable kernel ABI
Oh, this old, tired and debunked canard again. Now your blaming poor quality drivers on it? Are you trying to claim that Windows for instance has nothing but excellently written, high quality drivers? Pure OSS drivers have many advantages, such as working for ages, supporting all features of the hardware and so on. If yu purchase with care you will have no trouble under Linux. If you fail to do so you will have trouble on any system.
Proprietary progeams needing 15 versions
If the proprietary application comes with all the .so's it needs, or statically linked, then it will work on any distro. I have several proprietary applications and they all run just fine on Arch, with no effort. If you are not able to successfully ship such programs, then I suggest you employ someone who knows how to do it. See, for example Matlab, Skype, World of Goo and so on.
Package managers are bad
So, if package managers don't support proprietary code, then what are proprietary thing doing in the repositories of Ubuntu, SuSE, Arch and etc...? The Linux package managers are the best out there. Nothing even comes close in reliability and ease of use.
As for the arrogance, have you ever paid anyone to maintain packages for you? If not it seems somewhat arrogant to think they should care what you want.
DLLs
WTF? That's why DLLs are versioned on unix. If you're overwriting DLLs, then someone has fouled up.
The self protecting idea is nice, though. You can probably do it with chroot.
SJW n. One who posts facts.
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
There are many "open source" developers. It wouldn't surprise me if Java or PHP developers use a lot of Macs. But what does that actually show? Just because people use or develop open source in one niche doesn't mean that they need to use open source for everything. And their reasons are probably the usual ones: Microsoft compatibility, appeal of Mac hardware, what they are used to, ... It does not show that Macs are easier to use than modern Linux desktops.
Open-source projects have tended to be great commoditizers, but not necessarily the best innovators
Really? Many innovations have first become available in open source form before companies like Microsoft and Apple finally managed to ship them as part of their commercial software. And what actual innovations have Microsoft or Apple actually created? I mean, much of Apple's platform is based on open source software.
I think the real reason it seems like Apple and Microsoft innovate so much is... because they spend billions of dollars to create that illusion.
I bought a Powerbook, for that reason. I figured, I'd never run Windows on it, so may as well put Linux on the best laptop ever, right?
Didn't work too well. I never quite got it working, and just ended up using OS X.
In fact, from personal experience, the reason people choose Macs seems to have less to do with the overall UI, and more to do with specific things Just Working that Just Don't on Linux. Example: Maybe it's gotten better, and there's a nice GUI for this somewhere, but when I plug in a second monitor to my laptop, I restart my X server -- I could never quite get Xinerama or the nvidia stuff to cooperate without a restart.
Contrast this to a Macbook -- just plug it in, and it works. Open System Settings if you want it to behave other than as a clone.
So, I still use Linux, and I really don't get the people who would be into open source and use an iPhone, but I can certainly see why people would choose a Mac. Everything just works, just about all the commercial software you want, and a decent (not great, but decent) Unix under the hood for development.
Don't thank God, thank a doctor!
Ubuntu, Apple products and the Python programming language have all stood out with their exceptional usability because of their "benevolent dictators." When everything's decided by committee (even loose ones like in FOSS), every drastic but beneficial change will be pecked down by the naysayers. Something like Python 3's intentional backwards incompatibility, done for the sake of a vastly cleaner language syntax would never had made it without Guido's spearheading of the effort.
If your are oriented to gravity in any other direction than feet down, it becomes a huge pain.
I was trying to use my bbstorm to look up a spec sheet while headfirst in some industrial machinery and it "helpfully" rotated so everything was upside down.
Fail.
FOSS can innovate much more than proprietary software because there is no incentive other than to provide a functionality the dev desires.
That's the key, functionality devs want, not end users. Commercial businesses have to provide software end users are willing to pay for but FOSS projects only deliver what the devs want. An excellent example of this is Photoshop vs the GIMP. PS offers 32 bits per colour channel, and print artists need at least 16, whereas GIMP only has 8 bits. They have been promising 16 bits for about 10 years but still have not delivered it. And not because they couldn't, one developers offered them 16 bits but they turned it down. So he forked it and started FilmGIMP, now called CinePaint which offers 32 bits per channel and is used in the movie industry.
Falcon
Should there be a Law?
free software doesn't suck any worse than any other sort
Oh yes it does.
Package managers are dreadful.
They picked one of the most stupid idea to ever come out of Redmond, installers, and made it worse by having different types or versions for each and every distribution *and* completely centralizing the process.
I feel sorry every time I think about it. The first and last thing the bazaar guys did when it came to installing applications was to design the most cathedral process they could come up with, only recently beaten by Apple with the iPhone app store's vetting process :-((
I don't want to look up the application in the package manager UI, I'm on their website, that's how I know I want to install it, let me download from there! The UI is often cr*p anyway, the search function is a pain, always returning 15 results that are similar apps, localized versions, devel versions, obsolete versions, and god knows what. I don't care about stinking dependencies, just run the app with the libs it ships with.
And of course it took Apple to show how to do *that* right.
Yeah, so it's less efficient, you have to download the same libs several times, the OS would need to load it several time (although that's fixable). So it doesn't work with more obscure programs that need to fiddle with options here and there. So it runs applications from their own dirs, which is not "the unix way".
So what, I don't care, and neither do most of the users. They download, open the dmg (or , for linux, tgz, or whatever), double click the icon, the app starts. You can copy it somewhere else if you like it. Delete and it's gone. Magic.
Keep the package stuff for server apps, by all means (although I tend to compile from source myself), but forget it for desktop apps.
Sorry, but based on my experience, I disagree with the point of this article.
I find both Gnome and KDE far more usable than the commercial offerings that are available. Specifically, I find the following features really useful:
These are features that I have yet to see on a widely used commercial offering out of the box and features that I find really boost my productivity. Yes, there are commercial add-ons (such as StarDock), but they're buggy as all get out and generally suck compared to what I can get on a standard Linux install. One feature that generally makes me tend towards KDE over Gnome is the ability to place the taskbar on the side of the screen instead of the bottom and still have something that is very usable. When you write lots of code, you want more height, not width. Wide screens are great for multimedia but are generally poor for code development. For coders, placing the taskbar on the bottom makes less efficient use of the screen.
Relating to innovation, the FOSS movement has certainly been the source for lots of innovation. This "lack of innovation" seems to be a recent mantra being thrown out against the FOSS movement. Consider:
Sorry to burst the article's bubble, but FOSS has been the source for a huge amount of innovation. What I see coming from the commercial offerings has been, to a large extent, an apeing or imitation of ideas started by the FOSS movement with some incremental improvement on the original idea.
I don't even think that it's "gotten better", I think you just have terrible luck. I've never had an issue with plugging extra monitors in with Linux (from adding new ones to my main PC back in 2003 when I first started using Linux, out to when I bought myself a new projector and on-the-fly set up a dual-monitor display with FreeDOOM from my Acer Aspire One to test it out....pixels as big as my hand!). Windows is another story, mainly having to do with crashes and absurdly irritating bugs; dual-monitor support and how it gets handled is one of the main reasons I switched over to Linux full time back while I was living in University Residence.
;) Maybe that's just me, though; I've always got a kick out of the visceral feel of hitting that key combination and watching everything blink out of existence and then back in.
As for Macs, my success rate with plugging them into secondary displays is hit and miss, about 25% complete success, 25% failure, and 50% took a bit of effort and fiddling. That's not counting the times I tried to help people hook their Macbooks up to classroom projectors or such and then realized that they didn't realize they needed a proprietary adapter cable to do so, at which point I laughed at their $1200 new 15" Macbooks and smugly offered them the usage of my $200 13" shitty laptop that I installed Kubuntu on. Yeah, I'm the kind of person who can't stop from helping people but also can't stop from being a bit of a dick about it.
Also, what's the fear of Ctrl+Alt+Backspace?
I'm not saying I entirely disagree with you, to be clear. Luck of the draw has a lot to do with user experience, for one (nvidia-settings has rarely let me down, but I'm not going to pretend you're lying about having issues with nvidia and on-the-fly adding displays), and secondly I've recommended Macs to people before, convinced them to go over to that platform in fact. It's just that in my experience Macs seem to suffer when they go out of their comfort zone; they may often Just Work when Linux doesn't, but there's also times Linux Just Works when Macs don't, it's just that those scenarios tend to skew more towards power user stuff.
P.S. I notice that you said "Powerbook", so I'm guessing when you say "nvidia stuff" you were running Linux on a PowerPC computer. That's probably where our experiences diverge so harshly; Nvidia has never had an official, fully-supported Linux driver for PowerPC, right? AFAIK to a large degree it's a port of, or at least shares development with their Windows driver (on one occasion I ran into a big issue on my Linux install which was identical to the problem a friend had in Windows...unfortunately for him the trivially simple Linux fix had no Windows analogue), so it was fated to never come out for PowerPC. I actually have a friend who owns and loves a small old Powerbook that he dual-boots, and he mainly uses OSX because with Linux+NVIDIA on PowerPC you're stuck with the feature-incomplete drivers. Alas!
I remember sigs. Oh, a simpler time!