31 July 2006

I recently did some consultancy for openTrust, the parent company of openDemocracy, and now that the project in question – chinadialogue – has gone live I wanted to mention it, mainly because I’m so impressed by how the final product turned out.

The best way to describe chinadialogue is as an entirely bilingual online publication about the Chinese environment, built on top of an entirely bilingual CMS.

By “entirely bilingual”, I mean that all content appears (eventually) in both English and Chinese on the site – not just links and headings, but the full text of every article, and of every comment. The site is designed so that whilst everything appears in both languages, the original source language is always highlighted. The translation between languages is performed by Mark 1 Human Beings, incidentally. I found a certain frisson to seeing English and Chinese standing side-by-side everywhere you look; it feels very subversive, given all the issues around Chinese state censorship.

My role in the project was admittedly very limited. I did some early-stages exploratory work around publishing platforms, considering whether to use a pre-existing, open source CMS/blogging tool and extend it either through plugin APIs, or a more major fork of the source code, or whether to build from scratch – and if so, in what. One of the major factors in this decision was the bilingual nature of the project: extending any existing system would require heavy use of the plugin API, but that would mean one language’s content would exist as the primary “content” for an entry, and the other would be banished to the meta-fields. Given that either could come “first” in the workflow of the site, and that both are of equal importance, I suggested that both should also be of equal importance in the database schema.

In the end, they went with the final option, and built the project from scratch in Ruby on Rails. We discussed this option at some length, as whilst there was a strong internal desire to build in Rails, the first thing that comes to mind when you say “Chinese” and “Ruby” in the same sentence is “holy Unicode support, Batman!”

But Unicode-in-Ruby can be stepped around if you know what you’re doing (and try nothing too fancy), so it’s great to see that they not only made Rails work for them – and, by all accounts, had a good time doing it – but also they managed to step around one of the more common Ruby gotchas.

Best of all, I note that they’re planning to release the CMS that runs chinadialogue as open source towards the end of the year. I’m really looking forward to seeing some of that code.

All in all, a pleasant experience, and very cheering to see the results. If you’re working on social publishing projects of any form, and want someone to throw ideas around with (for a reasonable rate) do get in touch.