Posts Tagged ‘ubuntu’

Ubuntu is “too easy”?!

Monday, January 19th, 2009

I’d like to respond to a meme that has spread around the linux neighborhoods of the Internet for a while now:

“I’ve been using Ubuntu for quite some time now and, honestly, I’m getting a little tired of having everything handed to me. I want to switch to a less noob friendly distro.”

“Is anyone else worried, that because Ubuntu is so stable, and because you rarely have to fix issues, that your Linux knowledge is fading?”

“I want to use a distro that will challenge me to learn how things work.”

And so on…

My response

You might enjoy giving Debian a try.  You also have the option to go with Arch Linux or Slackware or Gentoo or Linux from Scratch, etc.  You could also install Ubuntu JeOS or Ubuntu Server (or another distro’s simpler versions) and then only apt-get or compile software as you want it.

If you are the type of person making the same sort of remarks as above, you obviously have a lot of time.  I’m jealous of you.  ;-)   But lots of time is not limitless time.  So if you want a challenge that will pay off, I suggest that your time might be better invested by sticking with Ubuntu (or Debian), and simply diving under the hood a bit more.

I don’t mean to say that any of the other distros or paths you might choose aren’t valid… one of them may well be a better fit for you and your ambitions than Ubuntu.  But, unlike proprietary OSes, Ubuntu’s hood is not welded shut.  Much of the “magical” hand-holding is done in shell, perl, or python scripts.  So you may not even need to look further than your own box for the source.   And just because Ubuntu is intended to be user-friendly with no-assembly-required doesn’t make it any less configurable or less geek friendly, nor does it get in the way of your deconstructing and reconstructing it (and wondering about those leftover pieces at the end).  The wires and pipes are all showing, there’s no magic going on, and you are in control of your box.

for example

Are you interested in mucking around with webservers?  Then go ahead and compile apache/nginx/lighttpd/etc from source yourself.  Muck about with the config files.   Spend days with man pages and google and upstream’s bugtrackers. Use the distro’s packages as a “cheat sheet” to see what patches, config, scripts, etc the distro maintainers used, and then selectively pick and choose your own way from there.  Rig up benchmarks or compare them on features, ease of configuration, etc.

Post your troubles/successes/thoughts/etc to mailing lists and blog about what you’ve done.  Post the results to launchpad or github or some other publicly accessible DVCS repo.  Respond to the comments of the people who tell you you’re doing it all wrong (many of them are right).  Adjust your approach and iterate until something else more interesting catches your interest.

other examples

Or do the same thing with…

  • mail servers (postfix/sendmail/exim/etc)
  • filesystems:
  • X Windows
  • GNOME or KDE
  • Dig into HAL and D-BUS and all of those magical goings-on beneath the covers, and learn how to make them do your bidding.
  • Learn about LSB and freedesktop.org.
  • Figure out what Ubuntu did wrong with pulseaudio, and then fix it or swap it out with another audio stack.
  • Learn how dpkg/apt does its magic,
    • understand the Debian packaging guidelines (and why they are wonderful or horrible or just don’t meet your needs or desires),
    • and start your own Launchpad PPA for software packaged the way you like it.
  • Run “ps faux” and make it your mission to discover the purpose behind every running process and how it got there… and then remove or replace the ones you don’t want.
    • Run “dpkg -l” and do the same thing with every package on your system.
  • Install bootchart and figure out how to shave several more seconds off of your boot-time.
  • Restore the geeky log messages to the Ubuntu boot screen.
  • Spend a week figuring out out to use wmii,
    • another week with xmonad,
    • and another with awesome;
    • Ubuntu doesn’t force you to use metacity or compiz (or GNOME).
  • Install the 64-bit version,
    • discover all the myriad places it breaks horribly,
    • and file bug reports with all of those packages.
  • Obsessively install the latest beta version of some software you like a lot,
    • and report the new bugs on every release.

When you’ve picked out an interesting challenge and jumped into it: Post, respond, adjust, iterate.

personally

I personally use my own compiled version of ruby and related libraries, because the ruby upstream maintainers released a new “minor” version with myriad backwards incompatibilities (and a few segfaults), and the Debian/Ubuntu maintainers followed their advice and upgraded. But the software at my day job still needs that older version. Ubuntu doesn’t make it hard to do this for the packages that I know and care about, and I get to continue relying on Ubuntu for everything else I don’t care about and don’t want to spend time on (right now).

Several years ago, I compiled compiz/beryl myself. Then I switched to someone else’s apt repository. Now I just use the compiz provided by Ubuntu (and I can spend those regained several hours a week geeking out on something else).

Years ago, I used debian unstable for everything.  Now I really appreciate the stability and twice a year upgrades of Ubuntu.  Generally, my “ls /etc/apt/sources.list.d/ | wc -w” stays between 2 and 6 (currently 3).  Occasionally this less stable software is an unwelcome source of bugs and a time-sink.  But I try to always file bugs.

So then…

The opportunities for non-hand-holding non-newbie stuff in Ubuntu is limitless. You could transform yourself into one of the gurus that holds other people’s hands. You could even make it your goal to become a Debian package maintainer or an Ubuntu MOTU or a GNOME contributor or a KDE contributor or a $FOO contributor (which will look mighty nice on a résumé).

but practice safe geeking

But above all, consider doing your experimentation on a spare computer or in a VirtualBox VM, so that when your friends ask you to play a movie or browse the web or do something simple (that their “welded-shut” Mac or Windows box can handle just fine), you don’t need to say “oh my computer’s currently hosed… {sound,X Windows,TV Tuner,booting,etc} doesn’t work. It’ll be back up in a week.” In my experience, that excuse can get kinda embarrassing. :-)

xkcd.com web comic

From xkcd.com, Cautionary, CC licenced By-NC.