{ on programming and the internets }


by Louis Brandy

The parable of the wiki

Once upon a time, in a cubicle right next to mine, lived a developer. This developer was tasked with building a bare-bones CRM for our company’s internal use. This was not an ambitious project. We wanted to be able to put in basic contact information, keep copies of all the pdfs and other various legal agreements, and so on.

This is the type of project that your average web framework lets you hammer out in a day. In fact, I think with Rails scaffolding, you could have built it inside an hour, and had it polished up and ready to use inside of two days.

If the story ended there, it wouldn’t be very exciting, would it?

Once it was built, there was this one tiny feature that would have made it a lot better. And so it was asked, of our developer, if we could find an easy way to let people write little notes about what’s happened. Ah, notes, said the dev. That would be easy.

So he decided to make a note database, and let people tack in little notes. Simple text box, add it into the database, no problem. Maybe, he thought, it should show who posted the note? Yes, it should. But we don’t really have a proper log in system. It looks like we need one. What about editing or deleting notes? What if someone were to screw up? What happens to the “authored by so-and-so” when someone else edits it? Ugh.

Screw it. This was going to be more work than it was worth. How about we just allow one gigantic text box and let people edit it all they want. That’s simple. Ugh, we need to sanitize this input to keep people from screwing up the page. Oh, but, what if someone wants to add a link? They are definitely going to want to add links. We are going to need to add some markdown to this. But, still, what if someone accidentally wipes out the entire text box and saves it? No one wanted to be restoring text boxes from database backups…

After about two days of this game, I heard the words burned into my memory, “God dammit, I just reimplemented a wiki”. Except for the colorized diffs, I noted.

Turns out the moment you want a community note repository, all the natural problems associated with it lead you inexorably toward wikidom. It strikes me that there is a larger lesson to be drawn here, as well (ignoring the one about feature creep). Popular solutions to popular problems are popular for a reason. Early on in the process, a full fledged wiki might have been deemed too heavyweight. However, once you start looking deeply, you begin to notice all those devils in all those details, and suddenly you need all those features.

trackback

3 Responses to “The parable of the wiki”

  1. April 27th, 2009 at 11:41 am

    Giorgio Sironi says:

    I agree on not reinventing the wheel: my current project is implementing scaffolding in php with Zend Framework and Doctrine to avoid writing one more form. Also open source application like wikis and subversion should be used more… I have discovered the power of a notepad under version control.

  2. April 28th, 2009 at 11:16 am

    pi3832 says:

    >Early on in the process, a full fledged wiki might have been deemed too heavyweight.

    That shows some ignorance of the available wiki engines. They come in a wide variety of “weights”.

    I say this because I’ve seen many, many wikis that use the MediaWiki engine (the basis for Wikipedia, and quite a heavyweight) for very little content (< 1000 pages).

  3. April 28th, 2009 at 12:23 pm

    PA says:

    Ah, yes… simple is best :)

    Here is a little wiki in Lua:

    http://svr225.stepx.com:3388/nanoki

Leave a Reply


new server, if you see badness, please email me!

Need a new job?