1337: Hacker “Sp33k” for leet, or elite. Originating from 31337 “eleet”, the UDP port used by Dead Cow Cult, a hacker group, to access Windows 95 using Back Orifice, a notorious hacking program.

This topic deserves a whole series of blog posts, but I can’t commit to that. For now I will only look at how this breed of people affects the lives of open source users.

As programmers these guys are most dangerous. Sadly it’s often the people with quirks in their brains that get into open source programming; since giving away software for free is not a factor in most business plans, and open source is more often than not developed by a dirty hacker in the middle of the night.

Do I have a problem with dirty hackers? Not as long as their weirdness doesn’t affect me. Unfortunately, as a Linux user, I am constantly exposed to software that is not just badly designed, but appears to have been created to be hard to use on purpose. Let’s look at some examples of this.

The command-line

Sometimes the command-line is the most effective way to get something done. But most of the time it isn’t. There are people out there who will swear they don’t need a GUI on their computer, and when presented with questions such as ‘How do you watch a movie?’ the answer is invariably ‘I don’t do that.’.

That’s fine, they can go ahead and watch The Matrix in ascii art, but it doesn’t end there. Some of these people proceed to create, release, and pimp open source software to get things done; that software is created in (and runs in) the only environment they’re familiar and comfortable with – the command line. And this is the software we the users have to put up with.

‘But’, you will say, ‘they do it for free, you should shut up and be happy or else go make a better program yourself’. Well, I have. And so have many others. The Linux desktop does exist, no thanks to the command-line tools, but thanks to more reasonable individuals and many corporations contributing what they can afford to software for the regular folks.

But I still have a grudge with the leets. Their attitude is infectios. It takes some effort, but anyone can learn a little about the command line; and that make them feel special; they can show off to their geek friends. Then you no longer have just a scruffy hacker who created a weird tool for his own needs – you have him plus a number of acolytes who all tell whomver will listen that the software they use will bring freedom to the world, or something.

m4

Learning the command line is a mild exaple of a leet tool compared to the m4 macro preprocessor. While plain text config files that need to be edited in the command line are actually a good idea for server administration, it can be made into a dreadful experience.

The thing that finally pushed me to write this article is a recent encounter with sendmail configuration. Here’s a part of the config file from a working mail server:

dnl# These settings help protect against people verifying email addresses
dnl# at your site in order to send you email that you probably don’t want:
define(`confPRIVACY_FLAGS’, `authwarnings,novrfy,noexpn,restrictqrun’)dnl
dnl# Uncomment the line below to send outgoing mail through an external server:
define(`SMART_HOST’,`out.mnsi.net’)
dnl# No timeout for ident:
define(`confTO_IDENT’, `0′)dnl
dnl# Enable the line below to use smrsh to restrict what sendmail can run:
dnl FEATURE(`smrsh’,`/usr/sbin/smrsh’)dnl

You are seriously expected to edit this file by hand. Then run m4 on the file, and it will generate another text file, that looks like this:

# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !

# a class with just dot (for identifying canonical names)
C..

# a class with just a left bracket (for identifying domain literals)
C[[

# access_db acceptance class
C{Accept}OK RELAY

If I hadn’t told you, would you have been able to say which file was written by a human and which one was generated by a computer?

Presumably this second file is read into the program using a library of some kind. I have yet to figure out how this whole system is better than the most simple .ini or .xml file parser. But I have no doubt that if I found the Sendmail developer (and restrained myself enough to not kill him) he would tell me a story about an obscure use case, and an anecdote about an ignorant administrator, that makes learning this nightmare necessary for everyone who wants to make the most trivial change to the Sendmail configuration. That guy is 1337 to the core, and I don’t care that I have a mail server because of him – I will hate him until the day I die.

And by the way, I kid you not, there is a program called autom4ate. This program does something only a select few in the world understand (I’m not one of them).

So what can I do about it?

The only solution to this problem that I could think of is to encourage you to not become one of the 1337 developers’ fanboys. If something is harder to use than it needs to be – complain. If the ammount of complaining outweighs the ammount of false positive feedback, the scruffy hackers will no longer find creating complicated tools appealing, and some of them will instead think of regular users when making a tool.