I got started with Linux around 1996/1997-ish. At the time I was completely fascinated by the fact that there was something out there that wasn’t Microsoft or Apple. I had been a Windows user my entire life and the idea that people would come together and provide a free operating system and related software greatly interested me.
So, over the years I investigated Linux and not that long after switched to dual-booting Linux and Windows. I’m still amazed that I was ever able to get things accomplished using Linux compared to where it was and what it provided when I started.
It wasn’t uncommon for me to switch distributions weekly to try out all there was in Linux. RedHat, SuSE, Slackware, Mandrake (Mandriva), and on and on. I became a master at backing up my home directory and re-installing an entire system within an hour.
I remember distinctly doing web development freelance work on Slackware, using Gimp for my graphics needs on the newly minted Gnome 2.0 desktop environment that I compiled from source by hand.
Eventually, I moved away from dual booting anything and simply used Linux as my one and only operating system.
So what I’m about to say is not coming from somebody who briefly used Linux and decided it’s not ready for the desktop. I believe experience-wise, Linux distributions can provide a great user experience for the newcomer and superuser alike. My relationship with Linux goes back over 15 years. I have used some distribution of Linux for my main and only desktop for over 12 years and every server under my personal management is running Linux. I really like Linux.
Where Things Broke Down
Having discussed my history with Linux some may be surprised that my most recent purchase for a new laptop was nothing other than a MacBook Pro. Why? Whhhhhhyyyyyy?! (think of George from Seinfeld shaking his fists in the air).
There are two primary reasons I switched to Mac for my development needs:
- It was Linux/Unix -like. I can get most of the benefits of being on Linux and/or Unix that I’ve come to love. Having a solid command line option with all of the Unix tools I’m used to is a huge win for me.
- I can manage my development requirements to my liking. It is not dictated that my entire OS version decides what specific version of something I need to run.
Of these two points, I would like to address the second one and how I believe Linux would be better off if things changed.
Choices Are Essential
I’m a polyglot developer. I work in PHP, Ruby, and some Java. I also work with software that is considered legacy and therefore need to manage my requirements with that. So I will often run multiple versions of PHP and Ruby.
Ruby has largely solved this issue with tools like RVM and RBENV. But the PHP issue remains and I don’t understand how it’s going to get any better.
Basically, my whole point here is that a version of a distribution, say Ubuntu 12.04, dictates a version freeze on every piece of software that is included in that distribution.
This applies to everything, not just PHP, which I am using in this specific instance. Because of how EVERY major distribution is designed, they all share one common flaw: Whatever version of software I receive by using that distribution will stay the same FOR THE LIFE of that distribution and trying to get newer versions of that software will only create headache and heart pain for the user.
You would literally need to wait for a newer version of YOUR ENTIRE OS, to be able to get an updated version of just one piece of software that is running on it.
This is stupid. Just plain dumb. The work that distributions go through to backport bug fixes and security updates for every piece of software on their release is a waste of resources.
There is no good reason why the OS needs to dictate what version of git, f-spot, LibreOffice, Tuxracer, or whatever I would like to run.
I would love to see a distribution that did three things:
- Provide a stable platform w/ bug fixes and security updates for the critical pieces of the operating system.
- Provide a consistent framework for integration with third party apps and let the App owners take care of the rest.
- Universal binaries that work across all multiple versions of the OS within reason. The FatElf project looks like a great step in this direction but GPL issues may interfere with that.
It is ironic that the Unix mantra of “Do one thing and do it well” is completely ignored and the standard practice for current distributions is to provide the entire kitchen sink, take-it-or-leave-it approach for the entire OS stack. This is asinine and unecessary.