Curtis Free's Blog

About Blog Config DB Projects Scripts Wishlist Husband, father, geek, progressive.

Elevator configuration

Perhaps it’s a waste of time, but for years I have enjoyed exploring system and window manager configuration. Getting window management just right. Making everything look nice. Getting every key on the keyboard to do exactly what I want. And I think that there are two ways to do this.

Are you going up or going down?

Going up

I used Arch Linux from 2007-2012, and it was great. While most Linux distributions can be customized to no end, I would say that that is especially so with Arch. When you install Arch, you get a command line – and that’s it:

  1. Install Arch base.
  2. Install video drivers.
  3. Install X11.
  4. Install a desktop environment or (the more minimal route) a window manager and other applications.

I call this approach going up because you start with nothing and build the system into exactly what you need. While that’s true in regards to the whole system, specifically I am referring to the human interface: window management, key operation, etc.

Arch users tweak every aspect of their systems and shape the installation into exactly what they want. In fact, there’s no choice: by going up, one has to do just that.

Going down

Since 2012, I have primarily used Mac OS X; it’s a far different experience than Arch (for a number of reasons). In particular, I would call the customization approach with OS X (or Windows) going down.

By default, things just work in OS X – and that’s one reason its popularity has grown. In fact, I would go so far as to say that the out-of-the-box experience is a good one. But with time, the urge to customize sets in. And customization is a far, far different experience than with Arch.

Almost every customization that one can do in OS X is a hack. In fact, the term “haxie” was developed to describe some utilities that are used to customize the user experience in OS X. And in some cases, these hacks have led to severe troubles.

Want to change how some of your keys behave? You can – with PCKeyboardHack (note Hack). Want to arrange your windows easily with some keyboard commands? One can, but doing so requires use of the OS’s accessibility support. Want to disable window shadows? Good luck.

I call this going down because you start with a full (and possibly even good) system and then have to hack it to meet your needs.

So… which is better?

I don’t think that either experience is necessarily better than the other. I would argue that it’s easier to get what you want out of your experience if you go up. As a Mac user, I continue to find things I would like to change about my OS X experience, and while it’s usually possible with a going down hack of some kind, sometimes OS X just won’t budge from its “we-know-best” ways.

Update (28 Sep 2013):

I received a couple of responses to my tweet announcing this post; and I’d like to address them here.

Chris raises an excellent point – and one that I didn’t consider in my original post. There are certainly mid-way systems that need to be torn down and built up to get what one wants.

In terms of Linux, a lot comes down to what desktop environment you choose – if you use one at all. With Arch, many users (myself included, when I used it) choose not to go the route of a full-blown desktop environment and instead to set up a window manager (such as Openbox) and install other utilities to shape the system into something useful – certainly “going up.”

Many other distributions come with a desktop environment such as GNOME out of the box. This allows one to hit the ground running quickly, without the need to set up basic services such as USB flash drive auto-mounting; and it certainly saves time and effort – for some users. For others, using a desktop environment saves the frustration of wasting hours attempting to get smaller services to meet all of one’s needs, but it also does too much or does things that simply do not appeal to the user.

In that latter case, one option is to install the desktop environment but use an alternative window manager on top of it. But one still must deal with other unwanted features of the environment (e.g., a potentially-annoying network manager). So in these cases, one starts with an in-the-middle solution that meets many of his/her needs but must tear it down and add to it to reach an acceptable state.

I would say that more conventional editors like Vim and Emacs lead to configuration “going up”: there is a large space for Vim plugins, including very many popular ones that a number of users would consider essential – such as Pathogen, which provides just the very basic service of supporting installation of other plugins in a modular fashion. I’m less familiar with the Emacs side of things; but I am aware that it, too, has at least a moderate plugin space.

That said, both Vim and Emacs include quite a lot out of the box (though Vim provides much less than Emacs). But I’m not sure I’ve ever heard anyone complain about needing to disable the included features, as the editors are designed such that these more advanced functions stay out of the way until needed.

In contrast, and given the above, I would say that configuring a newer editor/IDE is mostly a “lateral” move. Many of today’s popular editing environments come with some set of defaults (and often some bundled-in “plugins”) that one almost certainly must customize to his/her liking. This applies to modern editors and to the IDEs I’ve seen. One might need to install new plugins to obtain some functionality but at the same time must dig through the application’s settings in order to disable niceties that get in the user’s way – such as automatic changes to text, templates, etc.

For what it’s worth, I would say that many “editors” today are drawing closer to IDE land – gaining an increasing number of features to help programmers. So while the distinction still exists – such that editors are still a little more “going up” than IDEs – I think that they’re both “lateral” in comparison to earlier examples and more conventional text editors.