Why Linux is Better than Mac (or, how I learned to stop worrying and love apt-get and debuild)
First, I am a Mac user; I am a Linux user, and I was a Linux user before I was a Mac user. I manage two Linux servers, and I run Linux on my desktop.
For my laptop, I bought a high-end Mac almost three years ago. At the time, I had just started using Linux regularly, and was dual-booting my desktop with XP. I was maintaining a Linux Samba Server (for a very small office), and I wanted something with Bash and X11 without running cygwin.
I wanted everything on my laptop to “just work” without running into the issues good laptops have had running Linux at the time. I was suduced by iTunes and the cool ads, and I wanted to run World of Warcraft without dual booting (in the cold, dark days when Wine didn’t work as well for games).
I spent $2000 on a laptop, and I must say I have been quite pleased… until today.
I have resolved to make (and always make) everyone I give “free” support to (friends, family) buy a Mac or Linux box, mostly because I don’t want to hear the phrase, “I think I have a Virus” ever again! Usually they don’t – what they have is a lousy Windows driver.
However, if you know what you are doing, Macs Stink! This is really true if you are into open source software, because it is almost impossible to compile someone else’s code on a Mac, even if they wrote it for Mac.
For example, I found a bug in FreeOrion while I was playing it on my MacBook Pro. I looked at the revision logs, and sure enough someone had fixed it. I didn’t want to completely update to the Trunk, because I was concerned new features would add new bugs. All I wanted to do was play the game.
I downloaded the file with the fix I wanted, and downloaded the FreeOrion source code for the version I was using. I patched the source code with diff, and then opened it up in XCode to compile it.
10 errors.
Ok, so there are library dependencies…
It has taken me three hours to find the various dependencies online and install or compile them for mac. After you find and install them, you have to tell XCode they exist one at a time, where they are, and make sure the version matches EXACTLY with the one the xcode maker was using when he first complied the software. I’m still not done with this process, and honestly don’t know if I will ever get it working right (or if it is worth the time).
Compare this to Linux. I use Ubuntu. A year and a half ago, I needed a feature for mod_auth_kerb (a web-server authentication module) that someone had posted a patch for online. I ran apt-get source mod_auth_kerb to download the source code, patched the file, changed the version number in the deb file, and ran debuild.
errors. Ok, so there are library dependencies…
I ran sudo apt-get build-dep mod_auth_kerb. It installed all of the libraries for me. Then I ran debuild again and, presto, I had new debs (software packages) ready to be installed with the new feature. The whole process took about 20 minutes, ten of which was spent waiting for the computer to compile or download a dependency.
Did I mention that the Linux example above was the first time I had ever compiled a package from source to make a change? With a process that easy, it certainly wasn’t the last. There were instructions on how to do it online – all I had to do was intelligently follow them.
On a Mac, it is easy to do the small things, but once you become a little more savvy, the Mac is harder to use and harder to learn.
Macs have this weird, non-liner learning curve that starts very low and stays shallow for a while, but then gets “super-steep” – it is very difficult to be in the tech-savvy but non-pro middle ground.
Linux’s learning curve starts a little higher – you really have to be able to install your own operating system and brave enough to try (even though I think it was Jono Bacon who once said, “you can stick an Ubuntu CD upside down in a 5&1/4 inch disk drive and it will install”).
However, Linux gives you a much smoother transition from novice to native, with very helpful people to guide you on the way. You don’t even notice how much you have learned about software (without books, and without some ridged corporate dictated curriculum) until someone you are talking to (not from the Linux world – usually a Windows IT guy) says, “You mean you modified and compiled your own software? You know how to program C – I could never (read: don’t want to) learn how to do that… I’ll just stick to Windows.”
Wait, I’m not a programmer – I just modified someone else’s program – it took all of twenty minutes!
I am tired of people telling me that Linux is, “Of the programmers, by the programmers, for the programmers”. No it isn’t.
It also isn’t like commercial software, which is “Of the ‘design department’, by programmers, for Stupid People” or “of the MBAs, by the programmers, for the IT staff“.
Linux is “Of the User, By the User, For the User“. It doesn’t assume you already know everything (or anything) – it only assumes that you are a human, and as such, you are capable of learning.
In Linux, moving from novice to expert is a natural progression, without the sharp, ridged lines that separate different types of “Power Users” (IT Staff, Designer, Web Manager, Developer, Home “Enthusiast”) in Windows or Mac. This is not because you must learn all about your computer to use Linux, but because you can learn a little bit more about your operating system and use that small, little bit of new knowledge in a meaningful and useful way. You can make changes, starting with small changes, to your Linux, no matter what your interests are.
Sooner or later, some little thing will piss you off, no matter what operating system you are using. In Mac or Windows, you just have to live with it (or shell out big bucks for an entirely new system or piece of software).
In Linux, you can (have legal right and the tools needed) fix it. So you go online and read a little – maybe post your issue to a mailing list and subscribe to one to listen for a reply. Someone sends you a command to run that solves that little issue, and you find yourself looking at a blinking cursor on a black screen for the first time ever (or at least since you installed WINDOWS 3.1). It’s not so bad – you start doing little things here and there when it’s faster or more convent.
You edit a config file to add an apt repository, or pull open the smb.conf file, because you want to let your son access one set of files, from his computer, but not another set. You start hosting a blog on your own computer and, while setting it up, learn about firewall rules.
Then you patch a simple piece of software from the command line and write your own BASH script with a for loop to do a backup a particular way, and write a macro in OpenOffice. You start answering more questions than you ask on the mailing lists, and people start admiring your whatever-fu. Family members (parents, aunts, cousins) start asking you all sorts of computer questions, many dealing with Windows, and you start answering them because you actually do know – not the particular Windows issue, but the networking/hardware/software principal behind the problem.
Then someone says to you, that inevitably fateful day, “Linux is fine for someone like you, but I’m not a programmer.”
Someone like me? The first time I touched Linux was in college… as a Political Science major. A Libertarian friend of mine introduced me to it (we did an internet radio show – he was the “techie”). I got my MA in Economics, and fell into IT as a graduate student job: my landlord’s IT guy quit while I was in the office paying my rent, and I said, “you know, you can do that with Linux”.
The thing I hate about Mac and Windows is that they think you are stupid, or pigeonhole you into a “marketing category” which they then create and sell software to. That is why there is no “easy” way to patch and build software in Mac (or Windows). “Why would you want to?” they ask, “What is the market for that?”
Linux makes it easy to grow, because that is what people do when you don’t actively seek to stop them from growing. In Linux, there are wonderful tools that make it easy to fix “that first nagging problem”, and a huge community that is willing to give if you are willing to learn and try a little. Users don’t start fixing things because they “have to”, bugs get fixed and features added in Linux by other people all the time, so just like in Windows and Mac, and you are free to just sit and wait a little. Users start fixing/tweaking things in Linux because they can!
I think all users of any system would prefer to fix at least one little thing themselves rather than submit a feature request/bug report (if they can/know how) and wait for someone else to fix it for them. In Linux, the user can.
Windows is a little better than Mac in this respect. Apple goes to the community and shouts, “Hey look, we are based on an Open Source kernel – want to see Darwin?” That doesn’t help anyone, especially someone that isn’t already an advanced programmer interested in kernel design.
Windows at least has the tools to write your own macros in MS Office, where you can start out, and then move to the free and easy to use Visual Basic Express when you want to write your first big Application.
That natural path is only there for advanced Excel users, because they are the only people who start wanting to write macros in VBA for that “something that pisses them off”. The path is narrow and not very smooth, with people jumping off when the next step is “too big” and outsourcing their desire to the corporate VBA department. And there is a big hump from messing with a VBA macro to writing an application from scratch in VB.NET.
Game modding can be another road for teens running Windows, but that knowledge is focused on interface design. Some games have Python, and that knowledge can progress, but it grows only in one direction – to programming, and not to a general knowledge of Windows, or networking, or operating systems.
(Windows also has so many problems that someone in the family or office will start digging around in the registry when something isn’t working – the law of large numbers guarantees at least some progression into “Power Users”, simply because the printer isn’t working from that computer.)
Windows used to be better – around version 3.1. DOS came with QBASIC, and there were lots of apps you could modify and play with (anyone make the banana explosion bigger in the gorilla program?). You could also modify the autoexec.bat file and graduate to writing your own batch files to do things. But I was the last year of that generation, and today I turn thirty. When Windows95 started coming pre-installed on every PC, those that grew up with QBASIC and batch were there to program for it, but there were no new generations of natural tinkerers becoming programmers and IT architects to replace them. The new generation came up on Windows9X, and they don’t know squat outside of what is taught in their MIS classes.
Microsoft recognizes the need for “natural new blood”, and they have responded with free developer tools. But they still don’t have a reason for a user to cross into a little programming, or networking, or system design.
Mac doesn’t have that at all (the programming bit, not the problems bit, though both apply). Even though they come with a free compiler, BASH, X11, and XCode, all of these things are buried in the “Utilities” section, and there aren’t any little programs to play with that jump out at you. They don’t get it, and they never will. They are firmly convinced, as a company and culture, that “we know what’s best for the customer and we always will”. And, to their credit, they have made a ton of money with that attitude.
But the programmers going to Mac are doing it for one reason – money. People learn XCode when they get (or are expecting to get) paid to do it. Mac programmers learn from Linux or Windows.
And there it is – the Mac tools are hostile to new users and discourage them from ever becoming something more. Linux is inviting to intelligent people, offering smooth movement up the knowledge ladder with marginal increases that people take because they want to do some small little thing – they want fix something, and they can.
Linux is a lifelong learning journey which you can take at your own speed, choose your own path, and rest when you want to. And, there are always friendly fellow travelers – people who have been there before and are willing to point you in the right direction.
So tell your mom to get a Mac (so you don’t have to fix it all the time, and she can have her iTunes), but buy your daughter a Linux machine, and let her learn and love the learning.
Hey Scott I’m a long time Mac user but I have to agree with you. When Os X came along I thought that Apple was a developer’s dream but now I realise that they are sadly lacking. This is particularly evident with their poor Java support. My next machine will be a plain old PC with Ubuntu (or similiar). Great article.
You found the right words !
I was a linux user and I switched to mac on the release of the intel-based mac in 2006. I used Mac os X for three years and now I am back to linux. My friends usually ask me why, I could not find the word to explain my feeling about osX. But now I’ll point them to your article. I don’t have a child but yes, I forced my mum to buy a mac if she ever wanted help from me…
Thank you
Can we please cease these childish, pedantic “my technology is better than yours” arguments? I say use the right tool for the job. For me (personally) – as a hybrid developer and UI designer I’m quite happy with the Mac platform. Inclusion of Fink ( http://www.finkproject.org/ ) and MacPorts ( http://www.macports.org/ ) gets me more than enough libraries and compilation power to satisfy 99% of my needs. Please don’t ask me to use GIMP under Linux, because seriously, we all know its not a valid option for heavy lifting design. I’m not saying Apple or OSX are perfect of course, but neither is Ubuntu (linux font rendering is *still* borked).
@deanmac5 I suggest you look into some of the recent developments of the OpenJDK project. I’ve been running both OpenJDK6 & OpenJDK7 ( http://landonf.bikemonkey.org/2009/05/17 ) side by side for some time now, without problems. Don’t wait for Apple, if you want to do something right – do it yourself. That tenet still stays true with OSX (to some degree) if you know what you’re doing.
Cheers.
Scott, I appreciate some of your problems in compiling Mac software, but the picture isn’t entirely as bleak as you paint it. Have a look at http://www.finkproject.org or http://www.macports.org. You can apt-get to your heart’s content on OSX too.
And, I think you would have had just as many problems in Linux had you downloaded someone’s arbitrary source code tarball and tried to compile it without knowing their system configuration.
Fantastic article Scott. Couldn’t have put it better myself! Kudos
MS Office and Excel scriping are via add on purchased software. Office and Excel are not free with every copy of Windows. OS X does include a scripting language and like you pointed out, the usual UNIXy tools, and XCode. How is it that Apple makes OS X a bad place to start programming when the programming Utilities are in the _Utilities_ folder? At least they aren’t buried in some wierd non-sensical folder in the Start Menu… http://www.jestinstoffel.com/?q=node/127 Programming on any system is about access to the tools and the need/desire to do/learn it. That is all.
I seriously have to disagree. I’ve been doing System Adminstration work starting back in 1992. My first Linux install was in 1993 (Slackware with a 0.98 kernel). I’ve deal with Sun, HP/UX, DG/UX, and a whole host of UNIXes most folks never heard of. The compiling issue you bring up is pretty bogus. You’ll have issues with any platform that doesn’t attempt to carry every library from the open source community along–sometimes multiple versions. Heck, take SLED 10! It is soo old Firefox 3.x will not compile without replacing a large chunk of Gnome. Does it make it “WORSE OF AN OS”? Nope, I’d state Gnome developers are poor at writing APIs and the Firefox folks are stuck between a rock and a hard place.
The main reason I bought a PPC MacOS X five years ago was due to the UNIX underbelly. I had been running a Dell laptop with Mandrake, and when it died I had my choice to replace it with another Linux laptop (Took me 3 months find a Linux I could tolerate and manipulate it so it didn’t cause me to avoid my laptop) or buy a Mac and start over with another UNIX platform.
It was a great choice for me. If I had to make the same choice today I suspect I would (well, I did a year ago when the harddrive died in my PPC laptop =). I’m still not impressed with Linux as a desktop. There isn’t enough unification of the desktop. Is what I’m changing a Gnome thing? a KDE thing? Is it a base OS thing? Is it specialized to SuSE or Ubuntu? Why should I have to know that the application I’m running is GTK+ or QT based and I need to go into the correct control panel to correct behavior so it’s consistant with the rest of the apps?
Choice is good, don’t get me wrong. However unlike you, I don’t see Apple taking my choices away. Nor do I find they insulting my intelligents, but I can see how the Apple Ads to be insulting if you wish them to be. However, to me the job of a good OS is to “Get the hell out of my way!” And I don’t find that is true with Linux. It always wants to step back into my path impeding me from doing my task. But in all fairness I can only blame Linux as far as “KDE vs Gnome” and other idiotic mindsets that each distro has.
Mind you, having said all this. I’m on an OpenSuSE linux desktop at work, and I support 100+ such desktop machines on a daily basis (Users are not permitted to have root unless they wish to be cut off from our NFS network), and in my environment it is a mixed bag. We have a group bemoaning that we’re not on the latest bleeding edge released 10 seconds ago, we have some that are opining for their trusty old Sun workstations, and others (like myself) that frankly don’t care. We use it as a glorified X terminal and rdp box, and we shift our workflow around issues we find. So yes I could live on Linux (if given my choice I would suffer on Linux then return to Windows most days =). However, it would suck replacing some of the applications I use for my hobbies (e.g. Lightroom) in which there is no true Linux replacement. And to me, WINE/VM/Crossover isn’t really an option because I may as well just use the OS the binary was intended for.
I’m not here to poo-poo on your article. There may be useful information for those looking at Mac vs Linux. However, it would be nice to see more of true comparision done by someone instead of a “I feel…” Because truth be told, everyone is going to have a different workflow, different tolerance for garbage, and different needs. And since source is out there for a decent chunk of MacOS X a lot of things can be improved without Apple. Just like everything your risk of breakage when a new update (Apple, Redhat RPM, Ubuntu DEB, etc) goes up.
Thanks for this article. It greatly mirrors my own experiences.
I grew up with an Apple ][, and I loved it, so later when all the world around me purchased Windows machines, I took what I saw as the logical step and purchased a Mac. Because I thought that was the way to go. But that was a disappointment: I couldn’t do nearly as much tinkering with it as I could with the older Apples, the way I was used to. It just didn’t let me.
Windows was a lot better in that respect, so that’s what I turned to next. But each new version of Windows has been more and more Mac-like, in that it acts more and more like it knows what’s good for me and I’m stupid.
Linux, at least, still allows me to make mistakes, without being judgemental. That’s what I feel at home with.
@Tom K
I like MacPorts, and I use it – but I would have never attempted it before I knew how to use Apt in Linux. It goes back to that sort-of “asymptotic learning curve” that Mac has – it is easy to do simple things, but doing slightly more complicated things is very, very difficult. In Linux (the top three), the curve is steeper in the beginning, but it stays mostly constant over time, easing you into more complicated issues.
The other major problem I have with Mac Ports is that Mac Ports is just “tacked on” for more advanced users, isolated from the rest of your system. If I want to alter a “mainstream” piece of open source software (like OpenOffice.org, or FreeOrion, or The Gimp), it is mostly useless. For products meant for the mainstream (or that I want to run without X11), I still have to download the libraries one at a time (compiling many of them from scratch) and make them usable in Xcode.
Compare this with Apt, where all I have to do is
apt-get sourcethe software I want,apt-get builddepfor all of the libraries, and then make my mods and compile. Now I have something that can be installed on my system the way it is meant to be installed, and I can redistribute my debs to other people, who can install them in the same way they are used to installing them, as opposed to downloading a difficult piece of software that creates a separate psudo-system that requires the command line to use.If I pull up the source code with
apt-get source, all of the information is already in the debian folder, ready to go. It is only when I want to modify and install software for which there is no deb that I run into issues. The same is true in Mac Ports, if a port exists, then it is easy to download, modify, and reinstall. The difference is that Apt (or Yum) is the default way to install software in the major Linux distros (Ubuntu, Debian, Fedora, RedHat), and most of the software you want to install is in there. For contrast, runport search openofficeon MacPorts. What did you find?@Jon
My point about Excel (which most business users have) is that there is a small step between, “Why can’t the stupid thing just…” and, “I can fix it.”
I think that gap is much larger in Mac (outside of OpenOffice), and the tools to fix the problem aren’t as “obvious” as they are in MS Office and Linux.
One of my big gripes about Office 2007 (especially the Home and Student versions) is that they have buried VBA a little deeper in the interface (or not included it at all).
PS: My comments about Office 2007 may not be valid – I haven’t played with it enough to make broad accusations about the interface and obviousness of VBA. I have completely switched to OpenOffice.org.
You are not very experienced with Apple if you cannot understand that you don’t need to “recompile” software for OS X! Apple has taken care of all that low level stuff for you! I’d love to see any kind of Linux try to match the ease of simple drag and drop application installation on OS X! Instead, just look at all the commands you have to run to do even the simplest of things on Linux! While I am sorry to hear you had problems, you need to try to understand how OS X works before you start making ridiculous claims like Linux being better!
@Danniel Misener
I know I don’t need to recompile software in Apple. There exists software where you can (legally) download the source code, modify it, recompile it, and then use it. We call this software Open Source.
I think Apple’s default way of installing software is very good, and much better than Windows. When you compare Apple’s drag-and-drop approach to a graphical apt-based installer like Synaptic, it is more difficult because they have different strengths. In Apple, you still have to find the software you want on the net, download it, and install it. On Synaptic, for core/common software, you just select the package and click “apply” – there is much less “hunting” involved. If the package is less common, then you have to hunt down a repository for the software you are looking for, and that is a pain.
However, if you want to change “one little thing” on a common, Open Source, OSX application, verily I say to you it is a pain in the a**. On Linux, it is not exactly easy, but it is much easier, and the learning curve movement from “using” an application to “modding” the application is “up a gradually inclining hill”, as opposed to Mac, where it is “up K2″.
By the way, many Linuxes are not that hard to use now, give Ubuntu or Mint a try.
Bravo! And anyone wanting to see what is being discussed, try a Live Linux CD, http://distrowatch.com/ is a good place to start. My favorite n00b Linux is Mint. Sweetest UI and easiest for first time movers.
I have to agree with you Scott — I just switched to Linux full-time after working with Macs for close to 20 years…I used Fink and all that but it just doesn’t compare to the ease and stability of Debian apt-get
sorry Apple fan boys but the days of boutique computer hardware running a proprietary OS are over
I love my Mac, but when I’m working, I’m in Linux. I like having illustrator and photoshop on my mac, graphics is one area where it does shine. With Synergy working on Linux and Mac, I have no troubles mixing between Linux and OS X. I especially like using Dropbox to keep my files synced between my laptops and my workstation.
Linux is the future. We just need graphics and games improved for Linux and it’s a done deal. I know graphics programs like inkscape and the gimp are pretty good, but illustrator is just AMAZING to me…
Thanks for this blog post. This is precisely the way I feel. I do have some affection for OS X, since it was what introduced me to *nix tools in the first place. But after a while, I just wanted an easier way to install and maintain all my beloved tools (git, emacs, LaTeX, mutt, vim, openbox, awesomewm, conkeror, htop, etc.). With a new linux install, I can have bleeding edge (yet remarkably stable) versions of all these tools in less than 1 hour. I can also get the latest cool *nix toys (uzbl, tint, etc.).
An example: I suppose I could learn resize, move, tile, and tag windows with the keyboard in OS X. But I don’t really have the energy to learn Apple Script or download a bunch of random hacks. In Linux, I can download and learn a beautiful window manager like Openbox or awesome and have really great functionality out of the box.
I’d have to disagree with some of the earlier comments. Mac Ports is just not as comprehensive or up to date as the repositories of the major Linux and BSD distros — and the community surrounding MacPorts (at least for the average user) is pretty small. The Linux community, by contrast, is very vocal; this is one of the huge selling points of Linux. There are lots of people ready to help you learn
I think a lot of folks who had been using Linux since the 90s got a bit burnt out by all the tinkering and jumped the Apple bandwagon with OS X but may not realize just how slick distros like Arch and Ubuntu have gotten in the last couple of years. Fonts are great, configuration is increasingly simple, etc. There’s also been lot of convergence in the Linux desktop with hal, fontsconfig, etc.
The best linux distros (Arch, Debian) also have the advantage of offering superb binary packagement and elegant build systems.
I was thinking about this blog post last night and wanted to add a couple more thoughts:
I’m happy blog posts like this that compare MacOS and Linux as *nix systems. Often, criticism of Linux distros assume that the point of an OS is to big a big GUI, cpu-guzzling desktop like OS X or Windows. If it’s not all point-and-click, then it is thought to fail…
But what if we look at things from the other side. If you primarily use *nix and command-line tools, a good Linux distro is much easier to install and maintain than MacOS X, since it has been built from the ground up to ensure that all the necessary dependencies and libraries are compatible and up-to-date.
An example: I’ve been using Emacs 23 on Linux for well over a year now and it’s really powerful and slick. The Mac Emacs 23 (cocoa), on the other hand, still lacks a lot of functionality and doesn’t interact well with the rest of the system. I’ve spent hours trying to get it to work well but it’s still very buggy. (Then there’s X11 on OS X, but don’t get me started on that one!) On linux, on the other hand, I can download a working Emacs 23 binary or use an automated build system to compile it and immediately enjoy an Emacs that is tightly integrated into my system.
Mac Ports and Fink, alas, simply do not get as much love as the repos of the Linux distros and BSDs.
One of the earlier comments mention OpenSuse. OpenSuse is not the best point of comparison since its package management system is just not very good and the whole point of the blog post was to compare ease of installing *nix tools on Mac OS vs. Linux. If someone can find a faster and easier way to install a reliable, up-to-date, and interlocking set of *unix tools than either apt-get (Debian) or pacman (Arch), I would very much be interested to learn about it.
Comparing Linux to a Mac is like comparing a Ford Pinto to Porsche. The Pinto will get you there but you had better have a tow rope and a service manual in the trunk.
Seriously, Linux is a complete disaster as far as mainstream desktop users are concerned.
Hello
Shouldn’t “whatever-foo” be “whatever-fu”? (http://www.catb.org/~esr/jargon/html/F/suffix-fu.html)
Cheers
@Merwok
Good call. Changing it now.
@Matt
Emacs, tightly integrated ? Isn’t the aquamacs project the *tightly integrated* one ?
I like your post a lot. I’d rather include after ‘buy your mom…’ something like ‘and resign, because your wife will not use anything else that Windoze and think she’s right’
Aquamacs is tightly integrated into MacOS, yes…. but at the expense of the emacs experience. Try adding an internet protocol that invokes emacsclient in OSX and you’ll see what I mean.
Vanilla emacs is tighly integrated into X11… period.
Family members (parents, aunts, cousins) start asking
you all sorts of computer questions, many dealing with Windows,
and you start answering them because you
actually do know – not the particular Windows issue,
but the networking/hardware/software principal behind
the problem.
Single,
Best quote that sums up a linux user.
Thank you great read.