[personal profile] mjg59
I was at the OpenStack Summit this week. The overwhelming majority of OpenStack deployments are Linux-based, yet the most popular laptop vendor (by a long way) at the conference was Apple. People are writing code with the intention of deploying it on Linux, but they're doing so under an entirely different OS.

But what's really interesting is the tools they're using to do so. When I looked over people's shoulders, I saw terminals and a web browser. They're not using Macs because their development tools require them, they're using Macs because of what else they get - an aesthetically pleasing OS, iTunes and what's easily the best trackpad hardware/driver combination on the market. These are people who work on the same laptop that they use at home. They'll use it when they're commuting, either for playing videos or for getting a head start so they can leave early. They use an Apple because they don't want to use different hardware for work and pleasure.

The developers I was surrounded by aren't the same developers you'd find at a technical conference 10 years ago. They grew up in an era that's become increasingly focused on user experience, and the idea of migrating to Linux because it's more tweakable is no longer appealing. People who spend their working day making use of free software (and in many cases even contributing or maintaining free software) won't run a free software OS because doing so would require them to compromise on things that they care about. Linux would give them the same terminals and web browser, but Linux's poorer multitouch handling is enough on its own to disrupt their workflow. Moving to Linux would slow them down.

But even if we fixed all those things, why would somebody migrate? The best we'd be offering is a comparable experience with the added freedom to modify more of their software. We can probably assume that this isn't a hugely compelling advantage, because otherwise it'd probably be enough to overcome some of the functional disparity. Perhaps we need to be looking at this differently.

When we've been talking about developer experience we've tended to talk about the experience of people who are writing software targeted at our desktops, not people who are incidentally using Linux to do their development. These people don't need better API documentation. They don't need a nicer IDE. They need a desktop environment that gives them access to the services that they use on a daily basis. Right now if someone opens an issue against one of their bugs, they'll get an email. They'll have to click through that in order to get to a webpage that lets them indicate that they've accepted the bug. If they know that the bug's already fixed in another branch, they'll probably need to switch to github in order to find the commit that contains the bug number that fixed it, switch back to their issue tracker and then paste that in and mark it as a duplicate. It's tedious. It's annoying. It's distracting.

If the desktop had built-in awareness of the issue tracker then they could be presented with relevant information and options without having to click through two separate applications. If git commits were locally indexed, the developer could find the relevant commit without having to move back to a web browser or open a new terminal to find the local checkout. A simple task that currently involves multiple context switches could be made significantly faster.

That's a simple example. The problem goes deeper. The use of web services for managing various parts of the development process removes the need for companies to maintain their own infrastructure, but in the process it tends to force developers to bounce between multiple websites that have different UIs and no straightforward means of sharing information. Time is lost to this. It makes developers unhappy.

A combination of improved desktop polish and spending effort on optimising developer workflows would stand a real chance of luring these developers away from OS X with the promise that they'd spend less time fighting web browsers, leaving them more time to get on with development. It would also help differentiate Linux from proprietary alternatives - Apple and Microsoft may spend significant amounts of effort on improving developer tooling, but they're mostly doing so for developers who are targeting their platforms. A desktop environment that made it easier to perform generic development would be a unique selling point.

I spoke to various people about this during the Summit, and it was heartening to hear that there are people who are already thinking about this and hoping to improve things. I'm looking forward to that, but I also hope that there'll be wider interest in figuring out how we can make things easier for developers without compromising other users. It seems like an interesting challenge.


Date: 2014-05-19 10:25 am (UTC)
From: (Anonymous)
I am not so sure that people want to tweak things, and that this should be a selling point. I would have to agree with the other commenters on here that although tweaking is nice, eventually you want to just be able to get stuff done. The recent iterations of Linux and reinvention of the desktop has driven me away from it, because I found that of the 20+ years of computer use, they were the most unusable forms of desktop. I could do more with my BBC Micro using a CLI, as it came with a manual (and you knew you were getting a complicated computer, so a manual was a necessity).

Opposite to this, there has been the Great Dumbing Down of desktops to pander to the lowest common denominator of computer user. But it is flawed because they assume that you want computer use to be "fun" and "enjoyable"; instead, they have made it "frustrating" and "enraging" to the 98% of users who are used to the way it used to work. I don't necessarily want to be grinning all day long when using a computer - I want it to let me do things, in the same way that I don't want to feel delighted every time I use a knife or fork.

I don't know who they consider to be the lowest common denominator but my mum got by just fine using Windows XP on a basic level, and has happily moved on to using an iPad as her "computer", due to the fact that she just had to learn to press one big button, and didn't really create anything on a traditional desktop PC, making it redundant. Reinventing the traditional desktop paradigm that has been in use for 20+ years wouldn't magically draw my mum to use Linux, nor would the fact that she can tinker with it - she isn't bothered about that. The maximum amount of "tinkering" she did/does with both her PC and iPad was changing the background picture.

Like the others, I went to buy a Mac after using one for work and being impressed with the build quality (and non-flexing keyboard) and excellent touchpad. The extensive battery life, even on an i7 MacBook, was very impressive. The biggest amount of "tinkering" I have done is install TinkerTool and ShiftIt so I can use the keyboard a bit more, plus I put the Dock on the left, but I do not find that I am lacking in any way. In fact, the most impressive thing about the UI is that it doesn't get in the way, unlike Windows 8 (and Vista+ where popups on the bottom right constantly attempt to inform you of things). I have stuck with Windows 7 for my Windows use, as I am not in kindergarten (and therefore impressed with big square blocks to press) or using a touchscreen device. (Yes, I did use Windows 8 for months but found it confused and a mess). Even Spotlight doesn't get in the way, and that appears to be what the Unity and GNOME3 systems are aiming for with their new way of launching programs, isn't it?

I cannot see a way of pulling users back to Linux with their New Way Of Using Desktops when you have working desktops that aren't particularly frustrating and take very little learning (Mac OSX's window management, sloppy mouse focus model for scrollwheel behaviour etc.; Windows traditional desktop mode). (Converse to this, my brother hates using the Mac and finds it highly frustrating).

Apple's bug tracking system requires use of a web browser, so I do not feel that the lack of integration with bug tracking systems in the OS itself is a problem. I do not feel anger when I cannot report a bug from within the OS.

I still run Linux under a VM but it is running GNOME2 due to the fact that it behaves in a logical manner and doesn't attempt to treat me like an idiot. I thought it was good. For info, I am a software developer and write under Mac OSX and Windows (and iOS and Android) for my day job, and write software under anything else in the evening (with Linux being my main development environment).

Just some thoughts; not meant offensively in the slightest, hopefully nobody misreads this! Apologies in advance if this annoys you.


Matthew Garrett

About Matthew

Power management, mobile and firmware developer on Linux. Security developer at Google. Ex-biologist. @mjg59 on Twitter. Content here should not be interpreted as the opinion of my employer.

Page Summary

  • (Anonymous) - Macs

Expand Cut Tags

No cut tags