8 months have now passed since I bought a macbook pro. While this switch was considered as silly by some fellows, it has proven to be a good choice, even for linux embedded development. If you also consider such a move from Linux to MacOs X, this article will explain you some good and bad things to expect.
The key point of this switch was not that I wanted a Mac, but that I was completely tired of the linux desktop experience.
Linux is not a desktop Operating System
My grief list against linux desktop experience would require a dedicated post ! During the last years I tried plasma, unity, cinnamon, and finally gnome. At some point I even considered switching back to a fluxbox config that I used more than 10 years ago on a sun station. The real problem with all linux desktop environments is that basic features do not work : On Gnome the keyboard mapping switches from French to english frequently when the screen locks, the multi-screen settings are not always correctly restored during unplug/plug, libre office is years away from Microsoft office (will it be possible one day to paste some text on a bullet item without loosing indentation ?), using a printer is still painful, and using a scanner is the holly grail... The list is so long that everybody but gnome/plasma/unity hardcore supporters understand why \"normal\" people cannot use linux at home today.
My needs
My needs at home for a desktop environment are the following:
- An office suite
- A personal accounting software
- An audio software to record and mix audio, supporting my outdated but still perfectly working toneport UX1
- A cross-platform vector drawing software : Inkscape works on every OS so I will keep using it
- Access to my synology NAS content
Moreover I need my usual tools for development:
- A shell
- GIT
- Vim
- Python
- Android SDK
- A Posix system
- Being able to build a yocto system
Between the 3 mainstream operating systems (Windows, Linux, MacOS X), MacOs X is the operating system that has the best support for all these kind of software. It also has the advantage of allowing to develop for iOS devices.
My choice went to a macbook pro, the non retina version. One can still buy it from the apple store although it is no more listed on apple's website. This model is probably the most adapted one for linux switchers: First the hard drive and memory can be replaced. This may be the last apple laptop that can be upgraded. Then it is the cheapest of the macbooks. Finally it has a DVD drive which is still useful.
MacOs X - The good
Let's start with the positive points of MacOs X. The first one compared to linux is the real desktop experience:
- Printer and scanner support
- Microsoft Office is available
- The battery usage duration is excellent
- Music recording and basic editing is possible at no cost with garage band.
- It is a UNIX based operating system
MacOs X does a descent job as a desktop OS : It just works, like windows. However it does not provide the great feeling that BeOS had. The touchpad works perfectly, and the OS is designed to be used with it (especially multi touch). The user experience is significantly degraded when using a mouse.
Developing for linux is good enough: I have several virtual machines running on VMware that are used as build machines for yocto and as clones of my server running this blog and other services. The initial yocto build is quite slow but incremental builds are done within few minutes. The only issue I met is with shared volumes between the host and the VM: I initially planned to put all files on MacOs X and access them via a shared volume on the VM. However this will not work for yocto, and for tox usage : they both need hard links that are not supported by hgfs. For such development tasks you must put all files on the VM.
The development of Android applications is done the same way than on linux, and the Vim port is working great.
The bad
Let's continue with the not so good points. The first one is the limited available memory size : I bought the 4GB model, because the cost of additional memory from Apple is prohibitive, and you cannot have more that 8GB from apple. I replaced it with 16GB from Transcend for 170 euros and they are perfectly supported. This allows to run several VM with 4GB allocated without slowing the host. I never experienced swapping lags up to now.
I had several networking issues. The network printer was lost twice, requiring to reset the printing system and re-install the printer. Also sometimes the synology device shares are not correctly mounted. In this case a reboot is needed. This may be due to the infamous discoveryd.
The ugly
The biggest negative point of this macbook pro is something that I did not expect at all : The keyboard layout. Apple is supposed to provide devices with an excellent user experience. This may be true for people writing e-mails and tweets (there is a key dedicated to @ and #), but not for french developers : Most of the characters needed for development are hard to find : Brackets, pipe, and tilde are available via crazy keyboard combos. For a bracket hit SHIFT+ALT+parenthesis, for a pipe hit SHIFT+ALT+L, for a tilde hit ALT+N. After 8 months, I still struggle to remember them. The solution to this is to use a PC keyboard whenever possible. Do not forget to enable the PC keyboard layout in the preferences so that it works correctly.
The second point is the filesystem support : exFat is the only filesystem that can be used on removable drives between MacOs X, Windows, and Linux. The widely used NTFS is supported as read only on MacOs X.
The last one is the absence of wifi WPS support. I do not understand how this is possible in 2015 on a mainstream operating system.
A Positive Switch
Using MacOs X is really pleasant compared to linux for every day usage. Some compromises are needed for development, such as running virtual machines, but thanks to ssh and shared folders it is quite easy and performances are good enough for me. The other passed test is that my wife uses it and switched from windows easily. The bonus is that I will be able to develop iOS applications if I want someday.