Switching to Linux
Back in 2006 I switched from Linux and Windows to Mac as my primary operating system. I paid for my white macbook with my first real paycheck. This was right after they switched to the Intel platform and it really was an amazing time to step in. At the time it was the perfect combination of a great UX, combined with the power a unix-ish system.
Since then I’ve gradually got more locked into the Apple ecoystem. With a bit of a grudge too, as what was once the technically superior, and arguably the cooler option has slowly become a bit of an icon of vendor lock-in and various other practices that I, as a developer am not super comfortable with.
But the thing that has stopped me from switching back always has been convenience. Mac, unlike Linux has a reputation for having a great out- of-the-box experience and hardware support. And of course the fact that the switch itself would cause quite of a time-sink, because there’s a lot of new things to learn, new software to find and new habits to form.
But right now I’m typing this off a Kubuntu installation on a Dell computer. So what changed?
Apple is losing the argument
In 10 years a lot has changed, but the main thing Apple and OS X had going for it was it’s “it just works” reputation. I feel this has stopped being true.
For the longest time, the top three application I use constantly on any daily basis have been the following three:
- Terminal (tmux + vim)
My habits have not changed that much, what have changed is that apparently over the years it’s become harder and harder for my Mac to perform these tasks. For a developer that does almost everything in a terminal and do virtually no compiling, the most basic computer should arguably be able to handle these applications quite well.
But for some reason the iMac from last year with 8GB of memory is simply doing a worse job at it than the basic Macbook I had in 2006 running OS X Tiger. Starting applications is terribly slow, starting a new terminal session takes forever, after start-up it takes up to 15 minutes for the machine to feel somewhat smooth. The effect on my much newer iMac is much stronger than my comparatively underpowered Macbook air. The prime difference is that the latter has an SSD. On the Big Mac ‘force quit’ and reboots are both frequent enough to be anger inducing. And yes I did do a a full reinstall!
It really seems that the last well-performing OS Apple has created is Snow Leopard, and I now also see that as the time they absolutely peaked. To say that this is planned obsolescence is giving them too much credit, as it feels more like it stems from a lack of planning. Performance optimization of new software seems to end when it works smoothly on ‘current’ hardware, which means that it doesn’t take long for hardware to get branded ‘old’. Even though every OS X release comes with the promise of better performance, my own experience tells me the inverse is true. How awesome would it be if OS X developers were forced to run base-line 5-year old hardware? I imagine that this problem would not exist.
Everything these days feels worse, and it’s extremely frustrating that I got this big honking machine fairly recently, and it already feels old and not fun to use. This was a big expense! I justified it because programming is my livelyhood.
So there was my reason to try Linux. I had a sneaking suspicion that running Linux on the same hardware would easily outperform OS X. Granted, I do believe that Linux tends to be a bit more ‘maintenance’ heavy, but if it runs fast, I consider it a win.
But where to start? I didn’t want to lose my main development machine, so instead I used my 4-year old Air.
Choosing a Linux distribution
The first choice for Linux distributions these days is always Ubuntu. Lately Ubuntu has been a bit naughty though by adding Amazon to the standard list of icons, and sending them all your search queries.
It seemed like a good idea to pick something else, but I had no idea where to start looking. The cool kids always seem to go for Arch Linux these days, and I also considered installing Debian. All seem to have their pros and cons, and it was hard to make a good choice. I even resorted to googling “how to pick a Linux distro” only to be none the wiser.
In the end I decided to just play it safe. I’ve been using Debian-based distributions for a long time, so since I’m already making all these changes, lets go for a system I know.
Debian itself somehow seemed a bit ugly from the screenshots, and I am a bit shallow in that regard. That leaves Ubuntu and Linux Mint. I remembered then that Mint had issues in the past upgrading from one major version to another without reinstalling, so I ended back at Ubuntu. The safest choice. Perhaps at some point in the future I’ll be a bit more adventurous again.
Installing Ubuntu was extremely easy. I was worried I had to make changes to EFI, but in the end it was a matter of:
- Downloading the Ubuntu image.
- Creating a USB installer.
To do this, all you need is a USB stick of over 2 gigs, and follow these instructions to load the image and make it bootable.
I was extremely excited to see that when the GUI installer popped up, everything just worked! I definitely expected some issues with drivers, but I had 0 problems. All the hardware was immediately recognized.
I was surprised to see that things like the brightness, volume and keyboard backlight buttons all just worked.
Ubuntu also looks nicer than it did back the day. There’s a lot less brown going on:
Software works reasonably well. Especially all the Gnome stuff. But there were also a few negatives.
LibreOffice works great and has come a long way. The design also looks a lot nicer than I remember. The Terminal ‘just works’ and obviously both Firefox and Thunderbird work exactly as I expect them to.
I remember I used to use Gwibber as a Twitter client. This, and a few other other things have now moved to a new “Web Apps” feature. Basically this is somewhat similar as Firefox Web Application specification. It takes existing web application (such as twitter.com), lifts them out of the browser chrome and better integrates them in the OS with a custom icon, notification support etc.
I honestly think this is a pretty good idea. Instead of trying to build an Ubuntu/Linux/Gnome application for every equivalent on OS X or Windows, why not make tightly integrate excellent Web applications with offline support, etc.
The execution for this was so absolutely poor though, that I can almost not believe how it made it in a stable release. Copy-pasting did not work and there were a slew of other problems. I quickly removed all trace of Ubuntu’s Web Applications, and conceded that I should start using Firefox’s Pinned Tabs for this type of stuff. Big step back.
Dropbox has always had great Linux support. Just find it in the “Software Center” and you’re off.
This is where things get dicey. There’s currently no Linux version for the popular password management application 1Password.
The options appear to be:
- Use 1Password for windows inside Wine.
- Use the read-only ‘1password anywhere’ application inside the Dropbox website.
The second option actually works decently well. At least it works as a stopgap measure until I find a properly supported alternative.
I was surprised to learn how easy and fast Wine was. Very different from back in the day.
I use Facebook chat, Gtalk, irc and Slack for chat. The default chat client for Ubuntu is Empathy, and is supposed to support all of these out of the box.
Unfortunately setting up irc (after installing
fails, and I’m left with a broken interface.
So I remove empathy. I also tried pidgin as an alternative, but after having tried that for a bit, I’ve now pretty much landed on using web applications and pinned tabs for all of these.
No great calendar app
Another major problem is that there’s just not a great calendar application for Ubuntu. I sync all my calendars via CalDAV, and the main two applications that support CalDAV are Evolution and Thunderbird (via the Lightning add-on).
The major problem that both these applications have, is that neither support fetching a list of calendars from the server. They both only do per-calendar set-up and have no true understanding of a ‘whole caldav account’. There’s also no calendar application that does calendar sharing or delegation, and it doesn’t seem like there’s something on the horizon either.
On OS X we have iCal and BusyCal, which both are best of breed applications, supporting open protocols. On windows the ultimate client for me is eM Client. It seems that the Linux ecosystem has failed to deliver a great calendaring or ‘outlook’ alternative, and defers to the web for this.
And then I went on a trip
And I realized that my 4 year old Macbook Air was really quite old. The battery was pretty bad, and I also realized I had some hardware issues that I hadn’t seen before.
Wifi worked quite poorly, and I also started to realize just how bad the battery had become. I also had issues with doing a presentation at a conference, and had to look for a VGA adapter, since the second screen didn’t show up via DVI.
And when I went on a business meeting and was forced to move everyone to a different table because my battery was dead again, it was the final drop. I had to get a new machine because I’m starting to look a bit unprofessional.
However, the lesson I learned so far was that despite the issues I had ran into so far, none of them were deal-breakers. Linux on dying laptop was a less frustrating experience than OS X on a 1-year old overpowered iMac.
So I went out to look for a new laptop with great Linux support.
I’d write down the pros and cons for the various models I’ve looked at, but frankly the only ultra-portable laptop with great Linux support I ran into appeared to be the Dell XPS 13.
Dell sells a ‘Developer edition’ that even comes with Ubuntu pre-installed. That’s not just a positive sign that it works, it tells me it’s ‘official support’, which generally is a hard to find for Linux systems. Dell shamelessly describes the XPS 13 as a Macbook Air replacement, and that happened to be exactly what I was looking for.
It’s also aesthetically very pleasing. I’m a bit shallow perhaps, but I’d like my laptop to look cool. The Thinkpad just doesn’t cut it for me.
The screen is very vibrant, and the bevel is tiny. Both of these screens are 13 inch, but the Mac has a much larger profile.
As you can see the laptop is about equally thick, except the Air becomes much thinner on the bottom.
By the time I ordered my XPS 13, a new model (9350) just came out. This new model features a newer (6th generation) processor, and also USB Type-C support.
I opted to get the older model though (9343). This model has a Broadwell instead of the new Skylake chip, but the clearest difference is the lack of USB Type-C.
The reason for this was two-fold: The Developer Edition wasn’t out yet, so I had to order one with Windows, and second was that it seemed like a good idea to get a Laptop that’s not brand new, and instead get something a lot of Linux users have experience with for several years.
From my research I found when that laptop originally came out, people had a fair bit of issues with it. Dell also maintained a custom Linux kernel for a while to improve support. Today it seems that most of those issues are resolved, and all of Dell’s patches are integrated into the Linux kernel.
Having USB Type-C would have been cool, but the difference between an Intel 5th gen and 6th gen chip is frankly completely unclear to me. Realistically I doubt I would be able to notice the difference.
The model I got has a 256GB SSD harddrive and 8GB of memory. Had I been buying a new mac I would have probably wanted to have 16GB, but for Linux 8GB seems plenty.
The “Ubuntu” sticker is a nice touch, but I wish the keyboard didn’t come with a Windows key ;). In this picture you can also see the ‘braided’ looking carbon fiber. It’s more subtle in real life compared to the picture, but this stuff is actually super soft on my palms, compared to the hard surface of the macbook air.
Also got the HiDPI (3200x1800) display (aka Retina). It’s also a touchscreen, which is a nice touch… but in the month and a half I used it I never found a reason to prefer touch over clicking.
The battery lives for about 5 hours. This is a far cry from the advertised 11, but I’m certain this is 100% because it’s Linux. A lot of people seem to say that Linux simply ‘does more all the time’ which is hard to optimize away.
I can deal with 5 hours battery. If you need more, you can opt to choose the non-HiDPI - non-touch screen instead. It’s 1920x1080 pixels instead which is still a big step up from the Air’s 1440x900.
Another drawback is that I thought that scrolling was not nearly as smooth as the Mac. Especially scrolling long-distances is frustrating.
And lastly, the number one design flaw with this machine is the placement of the camera. Instead of being at the top as most laptops have, it’s actually placed on the bottom left of the screen.
This makes skyping extremely unflattering, an effect that’s increased even more if you like skyping from the couch. This is such a deal-breaker for skype that I’ll probably just start using my phone for this instead.
Switching to KDE
In the meantime I had seen some screenshots from KDE Plasma, and to my surprise it was quite gorgeous. I always remembered KDE as being the slightly more ugly, but more flexibility-offering option between KDE and Gnome, but a lot has changed.
So instead of installing Ubuntu as soon as I got the laptop in the mail, I opted for Kubuntu instead.
As it turns out, my timing was perfect because this was days after the 15.10 release, which was the first Kubuntu with great support for HiDPI displays.
I had some problems with WiFI drivers during installation, but as soon as I knew which drivers to use everything has been running smooth ever since.
I’d pick KDE over Unity every day now. It really feels like Ubuntu has dropped the ball a bit with Unity. KDE is a much more polished, bug-free experience and looks more like a professional tool rather than a toy. KDE is awesome now and quote a looker!
Several weeks later with KDE and the XPS 13
So after having tried KDE for several weeks now, I’m still pretty happy, but also have come across a few problems.
It’s unclear to me who is responsible for these issues. Some of these might be KUbuntu, Dell, KDE or Linux, but really that’s not that relevant.
- Screen tearing happens, and it’s annoying. I found that the
F12shortcut disables visual effects completely and solves all of these issues.
- HiDPI, while it works well for KDE applications, Java and Wine and Chromium are
all super tiny and almost unusable. I’m mostly a Firefox user anyway,
but if you want Chrome on Linux, don’t get the HiDPI or switch to a lower resolution, or wait till Chrome properly supports it. Edit: it’s possible to force Chromium to work correctly with a HiDPI screen. See the arch wiki for more info.
- 1Password via Wine works but it’s not great. The HiDPI just made the experience a lot worse. I’m in the market for a new password manager with great browser integration and works with self-hosting.
- I’m running into CalDAV sync issues with Kontact. It’s simply not reliable yet, but this might be something I can actually try to fix myself. We’ll see!
- The KDE ‘Updates’ widget always tells me I need to update, even if I don’t!
- I found a reason to use the touch screen. Reading in bed! Unfortunately it’s unusable, as a swipe in a browser does not scroll the screen, it acts as a “mouse click and hold” which is interpreted by the browser and OS as making a text-selection.
I’ve also since discovered Back in Time which is a great TimeMachine-like backup application system. I’m only syncing my ‘home’ and it works well. rsync+ssh seems much, much faster than apple’s sparse HFS+ images over AFP. “Back in time” has both a QT (KDE) and GTK (Gnome/Unity) frontend.
I’m now kind of excited to the point where I can financially justify replacing my desktop machine, as I will be able to do a custom build which is something I haven’t done in years.
I’m also pumped to sell the Apple TV and get a Raspberry Pi with Kodi.
If you are the type of developer that doesn’t shy away from a bit of tinkering, and you are as fed-up as I was with Apple, I can so far recommend the switch I made.
I would definitely say that it’s not particularly easy though. Tinkering is required! You’re not up and running within a day.
One thing that I also noticed, and I feel is is true for switching to any new operating system, is that if you switch from system A to system B, the first things you will run into are all the things that system A did great, but system B does not.
It takes a lot longer to start seeing all the things that system B has over system A, because it takes time to discover those benefits and create new habits.
This is perhaps true for Linux even more than other operating systems. And even though I feel like I’m not quite there yet, I feel that in the end I will end up running operating systems and hardware that are incredibly customizable, don’t lock you into a proprietary tightly controlled eco-system and you’ll feel you support the advancement of freedom of knowledge instead of helping restricting it.
Hans Schmeidenbacher •
Regarding the battery life, you might want to consider adding this to your toolset:
It's nothing more than some clever shell scripts (open source, of course) utilising any available powersaving feature in the linux kernel. This usually has doubled the battery life of about any laptop / notebook i used it on. This might actually push your battery life the promised runtime. Best part of it, it's install and go. The basic configuration usually is enough. Try it.
Todd Caldwell •
Asus c300 or c200, 18h of battery, full Linux in chroot and all the benefits of chromeos.
Vincent Petry •
I'm also using Plasma 5 (5.4.3) with the Dell XPS 13 dev edition 9333 (the previous model)
Regarding tearing, maybe this could help http://xps13-9333.appspot.c...
For the touchscreen with Firefox I have an extension called "Grab and Drag".
And another one for HiDPI auto-adjust, it's called "AutoHiDPI".
Regarding battery life, I ran powertop and added the settings permanently. Basically set almost everything to power save mode (even the touchscreen) except the sound card. If you don't use bluetooth, add the "btusb" module in your blacklist file.
I use KOrganizer and Kontakt with ownCloud's calendar/contact apps and it seems to work fine. :-)
I saw 'grab and drag', but the problem is that it disables text-selection by default. There's a possibility to set a keyboard shortcut to switch this functionality, but that kind of defeats the point for me.
What I want is the operating system to understand intent, or alter it's behavior based on the specific input type.
I did also do powertop and set all their recommendations... but maybe it's just me, I just didn't see a strong difference. The change seems minimal. How much time are you getting out of your battery?
I don't know yet what the Korganizer bug is, but new events I create simply don't end up on the server. Silently :/
I'll definitely take a look at the suggestions regarding tearing though!
Vincent Petry •
Regarding touchscreens, it seems Plasma isn't there yet. Gnome 3 seems to already have better touch support with gestures. It would definittely be cool if the OS could adjust accordingly!
However, programs like Firefox which aren't directly part of / integrated in the OS don't come with proper touchscreen support (yet), so unfortunately still need to resort to plugins. I agree that "grab and drag" isn't optimal, I haven't found anything better yet. Looks like Chromium works better on that side, I'm able to drag pages with touch.
Regarding powertop, when I bought the laptop I managed to reach 6-7 hours of battery life with moderate use. Now it's down to 5 apparently.
For KOrganizer, I use "DAV groupware resource" which has both CalDAV and CardDAV. It always worked fine for me since the KDE 4 days, so not sure what's happening in your env.
Jos Poortvliet •
My experience with the Samsung S9 I've had for years is that Linux kernels make a huge difference. Some are good, others are worse, things go up and down for a bit until it settles after a year or two at a decent level. Good luck :P
I was using Gentoo > 5yrs, then same with Arch. Then switched to Debian (Sid) with XFCE, but then moved to openSUSE (GNOME3) and I can really recommend to try it out. I e.g. like snapper tool which enables you to create snapshot of your OS before upgrading (I'm using rolling Tumbleweed) and in case something goes wrong, it's very easy to rollback and boot in the old working version. ;)
Definitely interested to give Gnome3 a roll in the future, but I really like running Debian-like systems. I'm comfortable ;)
Then you can try Ubuntu Gnome, or Debian itself. Both use Gnome 3 as default desktop environment.
Patrik Nilsson •
Chromium/chrome should work with HiDPI out of the box. If not here is a great resource for getting it working, as well as HiDPI support in general:
The ArchWiki is a great reference, even for Ubuntu based distributions. Of course it helps if you are familiar with both and can read between the lines.
By the way chromium/chrome also has nice scrolling on touchscreens (the way you expect it to work) out of the box.
P.S. I have nothing against Firefox! I use both.
That page is great. My chrome is now normal size again. Awesome!
Alberto Mardegan •
Since you mentioned Ubuntu and Amazon: http://www.whizzy.org/2015/...
Bit late, but good that they're finally doing that. I think it's kind of against what Linux stands for.
Well, it's been opt-out for a long time (Systems Settings), now it looks to be opt-in in 16.04.
I never saw it as a privacy concern, just something that added to the visual clutter.
It's advertising + tracking deeply integrated in the core desktop experience. Whether or not care has been taken treating the data somewhat privately (meta-data only, etc..) I think Ubuntu should set the bar, not find the lowest point what people still find acceptable.
alex knol •
I run elementary os on an Asus ux303la with a 1080 touchscreen with 12gb ram and ssd+hdd. Far better user experience than the macbook pro my employer forced on me at roughly half price.
Check out KeePass as a 1Password replacement. I did the switch and don't regret it, KeePass has a lot of plugins and works on all my devices.
I've found enpass (https://enpass.io/) to be a great alternative to 1Password, I would basically call it a clone, works great for me (syncing with dropbox, import from 1Password, clients for basically all platforms)
Jos Poortvliet •
Welcome to Linux and KDE, Evert! I agree that Plasma has come a long way and looks quite awesome in its latest incarnation. And the XPS 13 seems an awesome laptop.
The Gnome folks are working on a calendar app which I'm rooting for. It was released with the latest version of Gnome (that new version isn't available in Ubuntu yet, though). For passwords I've always used Lastpass and their handling of security issues has convinced me to stick with them.
Hi, great article but I feel like you've missed out an important Linux distro; Fedora. I've used Ubuntu and Arch but Fedora is the best IMHO. It also works "out of the box" these days, the most I've had to do in recent times was install a wireless driver for a laptop but everything else was fine right after install.
I learnt how to use Linux on Red hat a long time ago so I may be a little biased here.
Also I run Steam in Fedora and can play loads of brand new PC games, Linux has come a long way no matter which distro you choose. Only thing I miss is Photoshop which I need to use as I do front end stuff for web. I just run Virtual Box though and it runs fine, I don't recommend wine as it just doesn't have the same feel as Photoshop on Windows or Mac. Oh and you can always do a dual boot with Windows like I have but I barely use my Windows boot these days!
It's curious, but I've been using Fedora for many, many years (from Fedora Core 2 to Fedora 20, I think), but in the end decided to go with Arch. The only thing I miss are the packages with debuginfo. Even when using Fedora I've aways ended up on Arch wiki with my problems...
I'm curious as to why you prefer Arch? I've used it but didn't think it was superior to Fedora. Am I missing something? I also second ending up on the Arch wiki a lot :)
Mint can now upgrade between releases using the upgrade manager.
It took me years to get fully in control of Linux (primarily Kubuntu and Ubuntu MATE). But nowadays I can hardly imagine going back to Mac OS X or Windows. On top of the superiority as a developer platform, working with Linux is a life-style - like what it was with a Mac 10 years ago.
George Geladaris •
I wonder why you didn't try a superior Apple machine like an Apple MacBook Pro 15"? Or did you?
I just don't really want to lug a massive machine around. Very happy now with the XPS 13. 13" screen but much smaller even than the air.
Besides, I'm very happy to step off the Apple train. Very sick of always ending up with the choice of either upgrading, or gradually see the machine perform worse with the same tasks.
Linux works well on very old hardware, and I want to support that from an ideological stand point. Once Apple gets better at running on old / "underpowered" hardware I might consider switching again.
Apple, to me, is the new big evil corporation and I'm happy to support the new underdog, like I did with Apple in 2006. I'd like to be a leader not a follower ;)
Ramiz Uddin •
Get more sleek with https://elementary.io/.
Ubuntu was my workstation for many years, and I always had a complain for not being sleek. Although, there are plenty of options to make it more pleasant but every time you get OS updates the tweak won't get compatible - always an hassle.
Elementary OS serves well - it has a clean UI - I'd say best in Nix world and built on Ubuntu Core.
I always admire macOS for their clean and friendly UI and always seek for something at least same standards but never came cross to something even near to it. Elementary OS comes very close what I always asked for.
I may sound like ElementaryOS advocate but its just a matter of having it installed and never look back.