To Be Done w/ Maruku

ruby markdown oss

Wed Aug 26 08:51:06 -0700 2009

Most of the time, I'm not sure why I love open source software. While I love the idea of free, communal development of interesting and potentially unprofitable software, most of the time, except for really big projects, the stuff just doesn't work right.

I've been converting my online writing from Textile to Markdown as Markdown seemed to have more stable cross-language implementation (it's fun to play with Textile implementations in Ruby, PHP, and PERL and get wildly different results each time (part of this problem comes from the fact that, while a more elegant mark-up language, Textile syntax is kind of hard to parse)). Anyway, I've been very happy with the Markdown implementations in PHP and PERL but have had strange problems both w/ BlueCloth (which is slow) and Maruku which I used to think was pretty cool.

Here's the problem. One of the things I do with any web mark-up language like this is create a lot of lists. I use Markdown on my class wikis to produce lecture notes, which often have three or four levels of indentation. Textile used to handle this no problem and I've not had trouble w/ it in the PHP or PERL implementations of Markdown.

An example:

The Markdown code:

 * Foo
     * Bar
     * Baz

Should produce HTML code:

  • Foo
    • Bar
    • Baz

The problem, though is that w/ Maruku you get something like this:

  • Foo * Bar * Baz

(Although, it might behave as expected, I could never get stable behavior out of it).

Anyway, this results from the fact that Markdown's list specification contains no mention of how to handle indented lists. You have to infer from the PHP reference implementation the expected behavior above. Of course, instead of doing that, the project admins for Maruku have responded to complaints about the lack of list indenting with:

Markdown does not have a well-defined behavior for lists. There is no such thing as a "specification". I gave up long ago in trying to copy the erratic behavior of the perl implementation. All the different implementations of Markdown differ in the corner cases.

Which is why I love OSS! So, basically, the writers of Maruku have refused to fix the list behavior because the other implementations are erratic (not to speak of the fact that Maruku will sometimes indent lists. It seems to depend on how long the list bullet point is. Short lines sometime indent correctly. Long lines sometimes don't. ARGGH!).

Anyway, I don't mean to rage against open source. I think it's a really great development model, but I wish that sometimes projects could focus a little more on customer service (which is something that goes lacking in this project model). It's especially hard to hear "we're not going to fix this" when you're sort of locked in to using a product and the bug is something really basic (as this is).

Finally, I rolled my wiki to RDiscount, after reading this excellent post about alternate Markdown implementations in Ruby. It was annoying, because, Instiki uses a customized variation of Makrdown and I don't think my patch works very well, but, at least, I have list support again.

As a final note, it's funny: after fixing the wiki, I went to switch this blog to RDiscount and found that I'd actually done so a few months ago. Crazy.

blog comments powered by Disqus
Log In