The Unix Ghetto

There are several very helpful comments to my last post filling me in on the Unix justification for the use of the /usr/local/bin location for Subversion’s utilities, and why that location isn’t part of the default PATH environmental variable.

All helpful, all logical. All, as one commenter put it, “Mac OS X’s BSD heritage shining through.”

Still, it makes me feel uneasy, and what follows is a first attempt to describe why.

Don’t get me wrong. I was being paid to program on Unix long before I was paid to program on the Mac. Emacs before CodeWarrior, CGI before Toolbox. Unix has an elegance and a rich history that’s hard to match.

But I don’t want Unix to replace the Mac.

For end users, the debate has pretty much ended. Apple’s APIs are the expected way to interact with them. Anyone who seriously suggests that X11 or a command-line interface is an acceptable way to package consumer applications is, well, not taken seriously.

But as a developer, I’m frustrated by how all that is thrown away when discussion turns to the tools I use on a day-to-day basis. Here, Unix is expected. To use Subversion, I need to know the command line and, as the commenters pointed out, the Unix filesystem hierarchy and its history. I need to know Unix, even if what I’m trying to build is a straight Cocoa application with no Unix API or convention dependencies. I’m expected to know Unix.

I don’t want a ghetto to arise where end users get helpful, easy-to-use applications and tools, but the infrastructure for making and selling similar GUI-based tools to developers withers away because, well, everything’s Unix. Just compile it yourself and go.

What happens when developers all live on the command line, but they’re the ones in charge of writing the elegant, GUI-based applications for the rest of us?


  1. mac

    there are Subversion GUIs available (iSvn, SvnX, scplugin). They might not be worse than CVL.

    Of course, they might be.

    I’d like to see a post on why Subversion and not CVS. I know that CVS sucks, but I never got the impression that Subversion was an order of magnitude better.

  2. Daniel Lyons

    I wouldn’t worry about it too much. Most developers spend considerable time and energy on making developer tools. Look at Linux–the vast majority of software for it is development-related. Once the infrastructure of Subversion is widely-available, there will be many contenders for GUI apps for it. Really. I’m using some sort of Finder plugin at home, which I can’t recall the name of (I think SCplugin might be right). There are, after all, articles around specifically on the topic of wrapping Unix utilities (I think the best one is on CocoaDevCentral).

    It seems to me that Unix is a breeding-ground for developers. This might be because anyone who uses plain Unix is very results-oriented, or it might be because you can’t use Unix without acquiring Unix affectations which lead to programming. In any case, a lot of “worthy” development seems to be done in Unix for whatever reason. Both developers and their tools coming from Unix means both a hefty inertial Unix community and a large quantity of GUI-free tools to support them.

    Additionally, if a programmer starts in Unix (as I believe many “worthy” programmers do) they are more likely to defect to the Mac than to Windows, simply because they can bring their luggage with them. OS X is really the only product in the world that has Unix underneath and something else on top. The idea of that is hugely appealing to Unix folk such as myself. That my girlfriend can use it and like it, and it can have Subversion, GCC and Emacs on it, is really sort of amazing to me.

  3. Fred B.


    I reading this interesting blog for some times, but It’s my first post here, so hello everyone 😉

    About what you call “the UNIX ghetto”:

    I came from the opposite way than yours, mac user first, then UNIX and I see it the other way around. I fully agrre with Daniel Lyons’s post.

    Without the UNIX layer in Mac OS X, we won’t even see most of those apps on our platform. And being cross platform, they can’t have a one-GUI-fit-all, so it’s for mac devs to make a nice GUI (you maybe? ;). I prefer this than pseudo cross-platform horrible interfaces.

    Anyway, as a developer you NEED to know the underlying UNIX layer of mac os x, for any kind of app. There is too much powerful tools there, it would be stupid not to use them.
    Even to make straight cocoa apps, you need to know Obj-C, so C, which naturally leads you to UNIX.

    People who don’t want to see the command line, can avoid it, they sometimes just have to wait a little longer. Personally, I’m glad I can use those tools before someone make a GUI…

    Just my 2 Eurocents.

  4. Michael Rawdon

    Subversion and many other tools come from the UNIX world, so they’re naturally going to be first-class UNIX citizens before they’re first-class Mac citizens. The extent to which they become first-class Mac citizens will depend on the degree to which companies and developers enhance them and provide add-ons to make them be such.

    Look at it this way: UNIX tools like Subversion provide a “model”, and if you’re willing to get your hands dirty then the model is all you need. But to get what you want, someone effectively has to create “controller” and “view” layers on top of the UNIX “model” layer. And that’s a lot of hard work.

    The advantage to being UNIX, though, is that the Mac platform gets a lot of “models” for free through the UNIX software community. That’s not a trivial benefit. Which would you rather have: The latest slick tool with the hope of getting a nice GUI interface for it someday, or no hope of ever having the latest slick tool at all without a huge porting effort?

    The great thing about Mac OS X is that I can play Myst IV Revelation and browse the Web and use Ruby for my scripting projects, all out-of-the-box. (I can even download and install the very latest Ruby!)