Blog
Blog
Why opensource is both shit and brilliant
Why opensource is both shit and brilliant
end

So today I decided to set up an e-mail signature so that my website link and phone number are included on the bottom of every e-mail I send. Until now I’d just been signing my e-mails ‘~Kieran’, or for formal ones I’ll write my full name – but I’d just been typing it manually on every e-mail.

Anyway, I wanted my e-mail client – Thunderbird (part of the Mozilla suite which includes the popular web browser Firefox) to automatically add the signature. So I created a signature file and set Thunderbird up to use it, but what I ended up with was this:

--
~Kieran Simkin

http://slinq.com/

Where did the double-dash come from? It wasn’t in my signature file, and I hadn’t typed it myself. So after a bit of fiddling I realised that Thunderbird was automatically adding the double-dash as a sort of signature separator, to indicate the end of the message and the start of the signature – it then uses this double dash to identify signatures and for some reason make them grey instead of black.

But I didn’t want that double dash… my signature starts with a ~, always has done and always will.. that’s just how my signature is and I don’t wish to change it. Having a double dash, then a linebreak, then a squiggle (~) then my name just looks wrong. I’ve always used a squiggle to indicate my signature because to me, that’s the most logical character to use. I don’t really care what other people are using because it’s a signature for fuck’s sake, it’s supposed to be unique.

So I set about trying to disable the double-dash separator so that my signature would look how I want it, only to find you can’t! That’s right, if you use automatic signatures in Thunderbird; you have to start your signature with a double-dash, there’s no way around it. Not only that, but it has to be a double dash followed by a linebreak – you can’t sign it ‘–Kieran’, the double dash has to be on a line on its own. Madness!

What I did find was this bug report of a user complaining of exactly the same annoyance… dated the year 2000! That’s a bug report 9 years old and (at the time) still open with 9 years worth of arguments about whether to fix the problem or not. Basically the argument hinges on the fact that using the double-dash to indicate the start of a signature is a legacy from Usenet when it apparently made it easier snip out people’s signatures when quoting them:

Section 4.3 of RFC 3676 says:

There is a long-standing convention in Usenet news which also commonly appears in Internet mail of using “– ” as the separator line between the body and the signature of a message.

This is, as far as I can tell, the only mention of the double-dash separator in any of the official standards documents. Just to be clear – RFCs have a very specific way of indicating when a piece of software should or shouldn’t do something (defined in RFC 2119):

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.

None of these keywords appear in any of the standards documents in relation to the double-dash signature separator; so we can say for definite that the official standards do not mandate the use of this separator. In other words, there’s nothing in the standards that say Thunderbird should be forcing the inclusion of the double dash before the start of a signature. The Thunderbird developers are of course free to encourage its use, and even use it by default, but there should really be some way of disabling it since it is not specifically required by the standards and there are plenty of people (ie, me) who don’t want it there.

Right, I thought, I’m gonna barge-in and kick these bloody opensource geeks into action. So I dive in with something deliberately confrontational (even though I knew it probably broke their ettiquette guidelines), after 9 years of pissing around they need a good kick up the arse:

Ugh this is absolutely typical of opensource development - 9 years of pointless
arguing and no action. 

There are lots of perfectly valid reasons why we may not want to have the --
separator. If you're concerned about breaking some "standard", just make it a
hidden config option - ie, one which cannot be changed via the GUI. I shouldn't
have to start hacking code to do something so basic!

Well, you can read their responses – more stupid arguing that basically boils down to this; “I’m not going to allow you to send e-mails without the double dash separator because it annoys me when I receive e-mails like that”. Well, it fucking annoys me when my e-mail client tries to enforce somebody else’s style guidelines on my e-mails!

The thing is, you’d think we were asking them to change the default behaviour.. we’re not, I’m not even asking that they add an option to the preferences screen to disable the double-dash. All I’m asking for is some way, any way, for me, as a “power user” to format my e-mails the way I bloody choose. I don’t care if I have to go and manually edit a configuration file or utter some black-magic encantation that only a geek would understand – I just want some way to disable that bloody double-dash.

And this is the biggest problem with opensource development – 9 times out of 10, those developers aren’t working for any specific company, they’re just working out of the goodness of their hearts. The problem with that is that it means they develop the software they want to develop, not necessarily the software people actually want to use. With some projects the two coincide nicely, with others a carefully designed organisational structure guides the developers in the right direction; sometimes (as in the case of the Linux kernel) that structure is autocratic, with a visionary leader at the top (ie Linus Torvalds) who understands what people want and leads the rest of the team in the right direction. Of course, problems do arise when the visionary leader gets it wrong (as Linus has been doing fairly consistently for the last 5 or so years).

So opensource developers tend to be selfish and pretty stubborn – if they think they’re right, they won’t let a little thing like logic or the will of their user-base change their mind. Opensource is both the cause-of, and solution-to this problem (a bit like alcohol); because the source code is available, if I think that the developers of a particular bit of software are being stubborn arseholes, I’m perfectly free to just say “screw you, I’ll fix it myself”, take their code and make whatever changes to it I like.

That’s basically what I’ve done in this instance – when I realised the developers were basically still living in the days of Usenet and that I could potentially spend hours trying to convince them to make the change, eventually a tipping point was reached where I realised it was going to be quicker to just fix the problem myself than it was to get them to fix it for me. I would’ve liked to have got them to fix it in the actual codebase, because I think it’s stupid that people be forced to format their signatures in a certain way. Given that they’ve made it clear that was going to be a complete pain in the arse, I just downloaded the Thunderbird source code, found the bit of code that inserts the double-dash and deleted it. The entire process took about 15 minutes – less time than I spent arguing with the idiots on their bug tracker.

So here it is, my patch to Thunderbird to stop it adding double-dashes before your signature:

--- D:/Documents and Settings/Kieran/My Documents/nsMsgCompose.cpp.orig	Fri Feb  3 14:18:18 2006
+++ D:/Documents and Settings/Kieran/My Documents/nsMsgCompose.cpp	Fri Jan  1 20:17:11 2010
@@ -3695,6 +3695,11 @@
       if (!(firstFourChars.EqualsLiteral("-- \n") ||
             firstFourChars.EqualsLiteral("-- \r")))
       {
+	      /*
+	       * Disable stupid double dash signature separator
+	       * ~ Kieran Simkin
+	       * http://slinq.com/
+	       *
         sigOutput.AppendLiteral(dashes);

         if (!m_composeHTML || !htmlSig)
@@ -3702,6 +3707,7 @@
         else if (m_composeHTML)
           sigOutput.AppendLiteral(htmlBreak);
       }
+      */
     }

     sigOutput.Append(sigData);

This is a unified diff file that should be applied to the file mozilla\mailnews\compose\src\nsMsgCompose.cpp within the Mozilla source tree – you can then compile Thunderbird in the normal way and you’ll get a version that doesn’t have the stupid double dash behaviour. I can’t be bothered to do binary builds, if you want my patch, you’re gonna have to compile it yourself. Have fun.

One Response to “Why opensource is both shit and brilliant”

  1. Clayton says:

    You rock. I totally agree. Requiring the double-dash is pretty silly.

    Thanks for figuring out how to disable; hope I can figure out how to compile. ;)

Leave a comment
Your Name:
Textbox
(Required)
Your E-mail Address:
Textbox
(Required - Will not be published)
Your Website URL:
Textbox
Comments:
Textarea
(Required)
 
Fight SpamCaptcha
Refresh Icon

Enter the word
Textbox
(Required)
Send Button