As a man who has spent his entire life using and making a living from working with Microsoft Windows, be it desktop or server, dipping my toe in the water of another OS has always been something I’ve frankly tried to avoid. However there comes a time in a developers life when you have to realise that the grass may well be greener on the other side and if you want to play with some of the more interesting emerging technologies, then unfortunately Windows is not where it’s at right now.
Having developed under Windows for years and years, it has nearly always been the case that the interesting stuff comes to Windows later or not all. Ports are often many releases behind their original counterparts. Application servers/platforms “can be made to work on Windows” usually with a few caveats, reduced functionality and/or using unsupported versions. It can often feel like you’re putting in a ton of upfront effort to simply get on some degree of parity before you can actually start being productive. You’ve got to ask yourself, why am I putting myself through all this pain?
With the latest few projects we’ve been working on, our desired tech stacks have included Node.js, Varnish, nginx, neo4j, redis, mongoDB, Vagrant and Chef. Nearly all of these technologies play natively in the *nix world and you can have the latest and greatest up and running in minutes.
Ubuntu opens up that world without the need to purchase new hardware.
The Installation Experience
As my laptop is about 1.5 years old now, my install of Windows had hit that point where the only way to get it running properly again was to rebuild – I started out with a clean install of Windows 7 followed by a dual boot installation of Ubuntu. Why not Windows 8? Well… why put yourself through the pain of the clunky “modern UI” on a laptop?
Historically Windows has usually been pretty good at finding most of the device drivers out of the box – although on my ThinkPad T420 it failed miserably for reasons unknown and I was left manually downloading network device drivers from the Lenovo support site, not to mention doing the Windows update dance.
Ubuntu on the other hand got everything – even the hardware keys and 3G modem (both missed by Windows). The in-built mic actually performs better under Ubuntu than it does under Windows, pointing at dodgy Window device drivers as opposed to poor hardware. Genuinely impressive stuff.
The Desktop Experience
Whilst Ubuntu isn’t as polished as Windows or OSX it’s not bad, not bad at all. I’ve predominately been using the Gnome window manager which has multiple desktops and a number of very well thought out shortcut keys, most of which stem from common patterns you’re already used to, that really increase productivity. Gnome’s sales pitch is that it is “designed to stay out of your way, minimize distractions, and help you get things done” and it certainly does – apart from a thin status bar running along the top of your screen, the rest of the real estate is for the stuff you’re doing. If one were being unkind about Windows 8 – you could describe it as simply a new window manager for Windows rather than any sort of paradigm shift in the underlying OS.
The biggest plus point has to be one of the best package managers and terminals in the business in which you find yourself spending an increasing amount of time. Once you’ve picked up a few basics and get used the common patterns, the speed at which you can pick-up and configure something new increases at an alarming rate – it’s a very rewarding experience. Oh and of course you get SSH for free, which makes managing your cloud servers a snap – no more remote desktop or PuTTy.
Where Ubuntu falls down is the lack of mature/polished desktop apps and in terms of pure “business” productivity, life is quite a bit harder.
We recently decided to migrate away from MS Exchange to Google Apps for Business (more on that another time) but before we did, the lack of a decent desktop mail client that would play with Exchange Server was a major pain and given that Outlook Web Access is a travesty, that represented a major drop in productivity. Compared to Outlook the alternatives available on Ubuntu (Thunderbird, Evolution) are pretty lacking.
Whilst there some genuinely great open source efforts such as LibreOffice, GIMP and InkScape; there just isn’t the same mass market competition that really pushes the quality bar that you’re going to find in the Windows/Mac world and you will find yourself making compromises.
Thankfully the ongoing maturity of web apps often provides a truly cross platform solution to the lack of some desktop apps. Some of the Chrome Web Store apps are excellent. TweetDeck for Chrome has proven itself to be a solid replacement for MetroTwit. The lack of a Amazon Kindle app matters not a jot, with the Kindle Cloud Reader which is excellent and allows for offline reading in Chrome. Google Mail and Calendar both support offline usage in Chrome too, including search.
System suspend/resume is a lot quicker and more reliable than Windows and given that Ubuntu isn’t infected with the Windows slow-down effect, the need to physically power-down becomes quite a rare thing.
It’s not perfect and does have glitches and occasionally crashes and getting some bits of desktop software or pluggable hardware to work/install can require a little black magic that is generally going to rule the non-techy out from using Ubuntu seriously on a day-to-day basis. When you’re not connected to power, the battery life isn’t as great under Windows, an area that hardware manufacturers and MS probably spent a lot of time tweaking and balancing to improve.
I’ve only really found myself needing to reboot into Windows when Word or Excel come calling. You can get a reasonable distance using LibreOffice to review documents, but when it comes to editing in those formats then you really need the real thing.
From a development point of view however, life is pretty sweet and there is much to enjoy. With Chrome, the Terminal and Sublime Text 2 in your pocket there’s not a lot that can’t be accomplished in a quick and light manner. I easily spend 90% of my time in those 3 apps, thanks in no small part to the gradual maturity of web based apps reducing the need for the desktop software.