Not Invented Here illustrated (here)

December 13th, 2006

Say you were starting a project to develop a common application, like an email client, a web browser, a chat client, something along those lines. You would be well aware of the existing applications in this space, indeed that was your very reason for writing your own, you didn't quite like any of them. But in your quest to Build A Better World, would you consider re-using elements from existing applications, those elements which were entirely common and for which there was no reason to do otherwise? If you said yes, you're an exception. Because many would not.

Let's look at emoticon themes in different chat clients. Emoticon themes are so simple that defining a theme truly isn't more complicated than making a list of emoticons - and for each one, a list of replacement strings. This is how they do it.


Nothing fancy here.


Kopete's syntax says "look at me, I use xml, I'm so sophisticated".


Most elegant of all, perhaps, defining the emoticons as a native dictionary in Python, which is what Gajim is written in.

Three different clients, different syntax for each. But tell me this, is there any semantic difference between them? No, the all mean the same, they convey the same information, exactly the same. Each of these files has to be parsed differently (Gajim's natively, so the developers don't even have to write code for it), and each has to be written separately. Now, for someone, let's say, who creates an emoticon theme and wants to support these clients, that person has to deal with three different configuration files. Since they are semantically identical, it's not very difficult, but all the same it takes the effort to do it. And these three are just clients which make emoticon themes easy to use, there are others which aren't quite as easy on the user.

So what stands in the way of having one common syntax for this? One common standard? Kopete re-using gaim's format? Nothing. Other than isn't it awesome to write it from scratch?

:: random entries in this category ::

4 Responses to "Not Invented Here illustrated (here)"

  1. tante says:

    The comment on the Kopete syntax is absolutely right.

    When the description language for your problem is more complex than the problem itself, the language is not worth being used.
    That is something many people who are brainwashed in UML/Java/XML-university lectures often forget: "Entia non sunt multiplicanda praeter necessitatem", Occam's Razor.

  2. I just want to say that the Gajim theme must be a whole lot cleverer than other developers as they got a whole lot more done with much less code than the other clients.

  3. Ashley says:

    Until someone sends you a theme which has a line of code erasing your home directory that is. I'm not sure I like that idea.

  4. numerodix says:

    I'm not saying themes should be defined in terms of code either, I'd prefer a portable standard myself.

    But as to your scenario, that's why we do open source. A theme like that wouldn't get very far before someone blew the whistle and word would spread.