I’ve been using Windows for all of my development career but in recent months I have found myself pushed to find an alternative OS. I decided to switch over to Ubuntu and so far I have been pretty happy with the experience.
So why change? First, I was getting more frustrated with Windows performance over time. I loved Windows XP, skipped Vista entirely, tried Windows 7 but my experience found it to be only slightly better that Vista. I tended to downgrade any system I was using to XP, but that always meant a solid hour of downloading updates and another hour finding or installing drivers. Over the past year or two I have discovered the great benefits of running virtual machines; instant playgrounds for any experimental stuff you didn’t want to mess with on your primary development machine. However this also meant I was regularly installing Win XP on my VMs. Problem is I didn’t have a bunch of XP keys available for use on these VMs. Lastly, I recently decided to move my personal hosting over to Railo, and a VPS running Ubuntu was going to cost less than half an equivalent Windows VPS running ColdFusion. If I was going to have an Ubuntu server then I figured I should probably get to know how to use it in my development environment.
Making the transition
Initially I set up a virtual machine with Ubuntu 9.10 on my windows laptop and just explored the environment for a while – experimenting with setting up a development environment and learning a bit about how Ubuntu works. The VM was good but a little sluggish to use as a real development environment. The laptop I had been using was a few years old so I gave myself a treat and purchased a new laptop preinstalled with Windows 7. I set up my development environment on the new laptop, formatted the old laptop and installed Ubuntu 9.10 and set up an equivalent development environment there. I started to move some of my work to the old laptop and so I ended up with some work on Windows and some work on Ubuntu. I ran with both machines for a while but this became a bit painful having two dev environments, but at least I was feeling more comfortable that I could do most of what I needed on Ubuntu. I eventually decided to bite the bullet and formatted my new laptop and set up a dual boot Ubuntu 9.10 with Windows 7 (I couldn’t quite let go of Windows entirely just yet). I set up the Ubuntu environment as my dedicated development environment. Overall I definitely needed the two environments during the transition.
The Ubuntu installation is much simpler and and quicker than a Windows install. I’ve installed Ubuntu a few times now and it takes around 15 mins. There are very few questions to answer and I just used the defaults for most of them. Perhaps the most surprising aspect of the installation was that I didn’t need to install any drivers – everything just worked immediately. I installed Ubuntu on my new Lenovo laptop, an older HP laptop and a very old no-brand desktop without needing to find drivers for any of them. Perhaps I was just lucky? Not sure, but I was impressed.
It feels to me that Ubuntu is quicker in most things that Windows. It definitely starts up more quickly – somewhere around 30 seconds. Everything also feels a bit more responsive – applications seem to fire up more quickly and the system generally feels nice to use.
The desktop UI environment is immediately familiar with lots of similarities and keyboard combinations similar to Windows, so was easy to get started. It also has a nice “wobbly” window effect that makes the system feel a bit more fun.
Installing new software is very easy. There is an “Ubuntu Software Centre” application that contains hundreds of open source applications that can be installed simply by selecting them. You can also enable some other proprietary repositories of software which makes even more software immediately available. For all of the software I’ve installed from the repositories there are no options or questions about where or how to install things – everything has a place already configured.
I was happy to discover that most of the software I needed can run on Ubuntu. This included Eclipse, MySQL, Skype (beta version), Subversion, FileZilla, Firefox, Chrome (I had to run the 32 bit unstable development installation to get Flash to work), PuTTY, IntelliJ IDEA, ColdFusion, Railo, VM Ware. I assume that running Microsoft SQL Server is not possible, but presumably I can get that running on a Windows virtual machine if I really need it. I also assume that Internet Explorer testing I would like to do would need to also be run in a virtual machine – I tried a couple of Linux IE emulators but they were not successful.
When I was on Windows there was pretty much an update every day – mostly due to my Windows Defender updates. Many of the other updates typically required a reboot. Ubuntu updates have only occurred a couple of times since my initial installation and only one of them required a reboot.
Overall I do feel that Ubuntu is more stable that Windows, however I was surprised to discover that it still suffers from some problems now and then. I was probably a bit naive to not expect this. I have had the mouse stop responding once or twice and one update caused my display to stop working. That was a bit of a heart stopping moment because fixing OS problems is pretty tough for a noob, but after a couple of hours of searching and guessing I managed to get things running again. It’s times like these I wish I had a Linux admin friend.
Running Windows applications
Something nice that is available is a software package called WINE which allows you to run some windows applications directly within Ubuntu. This is not a CPU emulator like a virtual machine, instead this is a software layer that re-implements the Windows API, so can run Windows applications very efficiently. I haven’t tried it with much but I was able to install and run a copy of Adobe Photoshop. This is really the only Windows application I missed so I am pretty happy that it can run.
Ubuntu 9.10 comes with Open Office 3.1 pre installed. This is really unbelievable software considering it is free open source. I have only used it for a few spreadsheets and documents and have found it quite similar to Microsoft Office 2003. However the compatibility between MS Office and Open Office is not so great. MS Office can import Open Office documents and visa versa, but the formatting was not retained very well. All of the text content went across fine but some weird tabbing and font changes occurred.
Sadly, as long as MS Office is so widespread I will still need to run a copy of it when I need to ensure the presentation is perfect, but wherever possible I will be sticking to PDF documents or just sending Open Office documents instead.
I really haven’t bothered looking into games for Linux (other that for some educational games for my kids) but my dual boot laptop is perfect for having the Windows partition for any games I’d like to play.
Command line is important
As a developer I now find myself constantly opening a terminal window and running commands. There is quite a lot to learn here and I spent a considerable amount of research figuring out how to get some things to work. If you are a developer and not comfortable with command line then Ubuntu may not be for you.
As best I can tell from the research I have done it is possible for Linux to get a virus, but they are very rare because the Linux security model makes virus propagation very difficult so they tend to die off very quickly. As a testament to this, there is very little Linux anti-virus software available. So no more anti-virus for me.
So overall …
I’ve been using Ubuntu for about two months now and overall the experience has been a very positive one. Moving my development machine Ubuntu was actually a pretty easy one to make, but to contrast that, moving my VPS from a Windows Server to Ubuntu Server was a very very painful experience, bit that’s another story.
I think I have officially passed the point of no return and am looking forward to seeing the future of a very nice OS.