Saturday, October 23, 2010

Complexity management? You think it's gone? It's never gone!

On seeing my Sheldon impression, one of my guys helped me over the last hurdle with advice on getting that PATH setting for when I'm not launching emacs directly from a terminal (where the PATH is already set). Gordon said:
If you want to set PATH variables for GUI apps in OS X, there are two ways to go

Set up an ~/.MacOS/environment.plist
You should have a Property List Editor in /Developer/Applications/Utilities/Property List Editor.App  (or quicksilver search for plist)

Or drop an entry into /etc/paths.d/

First option will require restarting your user session, second option requires restarting the whole enchilada
Cool, thanks dude. I knew I hired you for a reason :-)

But the question is -- is that really the last hurdle? See, these kind of sysadmin-ish issues are to the geek what Bill Murray's Bob was to Richard Dreyfuss's Dr Leo Marvin in What About Bob?

As soon as I read through Gordon's suggestions the next thought was, but what happens when I move to a new Mac one day; how will I remember that I made these mods? I could always write it down somewhere I suppose, or I could back it up along with everything else. But I don't want to back up *everything*. How do I capture this important piece of information?

But why is this still a question, in 2010? It is now many years since another pal of mine first developed Arusha. We're now well into the age of such machinery as Puppet. Why am I even asking about managing my one Mac? Maybe there's some comfort to be had from things like the forthcoming Mac App Store. But it stills feels awfully GUI-ish and clicky, and I can't help the hairs on the back of my neck raising a little in concern -- probably unjustified -- that an optional Mac App Store eventually becomes an obligatory-without-a-possibly-DMCA-violating-jailbreak Mac App Store.

Of course this goes beyond just sysadmin. One of the approaches my team takes in our professional lives as experts in chip verification, in many ways an abstruse form of software test, is that everything should be automatable in the sense that it is written as a program. On the Big Day (called "tape out"), when person-years of design efforts are to be released to over $1m worth of manufacturing, we'd like to do the equivalent of typing two simple words -- "make tapeout" -- and have, via however many hours of building and processing and checking, the single digit "0" telling us we're good to go. But in over ten years of working with over 100 clients on over 200 projects across the planet, we have yet to see that ideal setup.

Why? Why is "configuration management" -- not just in version control, but in the other aspects of build management, release control, issue tracking, and workspace management -- still the poor cousin to fancy GUIs and IDEs and other such eye candy?

As Fred Brookes said, "Complexity is our business". And complexity, like Bob, is never gone. Why won't we accept that?

No comments:

Post a Comment