Recently Trekk was gracious enough to let me switch my workstation from Windows 7 to Ubuntu 15.04. This decision to actually evaluate making the switch stemmed from a number of different reasons. First and foremost I had been holding on to an outdated version on Windows for far too long and it really was time for me to either update to Windows 10 or start to evaluate different options. Another major reason was that I had recently started the development on very large Drupal project and no matter how I tweaked my XAMPP installation I could never seem to get the performance I wanted from MySQL and PHP. The last major reason was the PHPUnit testing I wanted to start performing on my Drupal code called for PHP 5.6 and this required XAMPP to be removed and updated. Removing and updating XAMPP!!! That really was the straw that broke the camels back. I really did not want to spend time removing and updating an environment that was not native to PHP development in the first place, so I really needed to start taking a look at what my other options were instead of Windows.
So, where do I go from Windows? Well, there are really only two choices, Linux or Mac. I already have a Mac Mini at my desk with a lot more horsepower than my Windows machine so moving my web development environment over to the Mac Mini seemed like a very strong option. This way I could do both iOS and web development on the same machine. The other option I had of course is to dual boot my Windows machine into a Linux environment, this was also a great option for multiple reasons. The first is because Linux is the native environment for the tools I used most regularly throughout my workday, i.e., PHP, Python, Apache, Git, Node.js, Bash, and MySQL. The second is because I had switched both of my home machines to Linux about 2.5 years ago now and both the user experience and the development experience have been superior on both machines. The last is because dual booting my machine always allows me to go back to my Windows machine if I ever needed to in the future. As I weighed out my options it seemed like dual booting my machine into Linux was the best choice. Now brings the real decision, which distribution should I choose?
Picking a Linux distribution is not always an easy decision. There are many great distributions out there out each being highly customizable and strong candidates for a developer workstation, but in the end the two distributions I narrowed my choices down to were Fedora and Ubuntu. Both of which I have running at home so I felt comfortable navigating through the ins and outs of what makes them different. To get a real sense of which distribution would be better I installed Fedora 23 and Ubuntu 15.04 on two different USB drives and booted my computer up into both to try them out. I had high hopes for Fedora 23 because of all I had read and because Fedora 20 is running on my developer machine at home but in the end I had a lot of trouble with my hardware keeping up with my dual displays on Fedora 23. When I installed Ubuntu 15.04 my dual display ran just fine and the Unity desktop environment was a lot crisper than the KDE environment that was running in Fedora. I really wanted to use Fedora but the dual display issue alone was enough for me to decide on Ubuntu 15.04 as my new Linux workstation environment.
Now that I have Linux up and running on my workstation the next logical thing to discuss is how Ubuntu 15.04 compares against Windows 7. Below are a couple major difference between the two and what I have found to like and not like about Ubuntu 15.04 as my developer workstation.
MySQL has probably been one of the biggest differences between the two environments. When I was building my LAMP development environment in Ubuntu I opted to just install everything just like I would if I were setting up a server. When I fired up my Drupal site I needed to perform a backup on the database and was interested in how long it would take in my new environment as opposed to my Windows machine. In my Windows machine it took right around 3 minutes to perform a database backup in Drupal. In my new Linux machine it took about 8 minutes. When I first seen this I thought to myself, I am going backward here with this new environment, 8 minutes is over double of the time it took in Windows. Then I thought, well, there has to be something that I have mis-configured in my MySQL settings. To prove this I went through a checklist on Percona's blog that talked about MySQL performance tuning. Some of the major MySQL settings that needed to be reworked were innodb_buffer_pool_size, innodb_log_file_size, the max_connections, and to skip the skip_name_resolve. Configuring these settings consumed a lot of my available RAM but it was worth it in the performance I was getting from MySQL. That same 8 minute database backup now took 21 seconds. That is pretty nice!
The terminal application in Ubuntu is far and away so much better than anything that Windows could conjure up to emulate the terminal. Now when I want to run Git, Composer, NPM, or an SSH session I am in the native environment to do so and everything seems to run a lot smoother. Plus, one bonus feature that I am not used to in other terminals that I have worked with in copy and pasting directly in and out of the terminal. This is very nice for debugging issues, and pasting in long clone URLs that can often be mis-keyed.
Vim in Ubuntu is a lot smoother than Vim in Windows for the simple fact that mouse compatibility, text formatting, and text escaping are far superior than trying to use Vim in a Windows environment. There looks to be a lot more options available too for configuring Vim for different environments and syntax highlighting as opposed to Windows. Vim has really come in handy when I need to open up and configure a specific file in the terminal.http://dev-agnosticdev-8.pantheon.io/sites/default/files/2015-12/l.png
Ubuntu 15.04 uses Nautilus as the default file manger. Nautilus does a good job of allowing you to move files and extract files from place to place but it does not compare to Windows Explorer. Windows Explorer is a superior feature in Windows and the user it experience it providers for connecting back and forth to remote and local file systems is not comparable in Nautilus. Another thing that Windows File Explorer has over Nautilus is the ability to paste in or copy out your current file path at any time. As a developer this is a really nice feature. Do not get me wrong, Nautilus is a great file manager, and a lot better on Ubuntu with Unity than with Fedora and KDE, but it is just not at the level of Window Explorer yet.
The latest version of LibreOffice is LibreOffice5 and this would be the comparable office suite that would replace Microsoft Office Suite. So far I have not run into any issues in viewing or creating documents. The only small issues I have seen have come from formatting that was not carried over from Microsoft Office to LibreOffice5. Other than that everything is working great. This may not be the same story if I worked more with documents and spreadsheets.
Overall I am very happy I have switched to Linux for my development workstation. It has sped up my development time, made my tooling a lot more efficient, and allowed me to develop in the native environment that my code will exist in one day in production. I would love to know your thoughts or questions on this subject as well. Feel free to leave any questions or comments below.