So, as part of my work on the guts of Pondr, I’ve decided to split apart the front-end and backend code into two separate applications.

The backend and front-end will communicate between each other using well-defined XML-RPC interfaces, which is fantastic: it means that features can be added or removed from either without knocking the whole project over, and it means I can hot-plug handler stacks on both sides.

There are a few small problems, though. First of all, I haven’t considered how to serve the two halves of the codebase. They’ll sit on separate subdomains, certainly, but due to that, I’ll need to think up some clever way to interface the JavaScript code running on the client to both applications simultaneously.

Another issue is how much code to leave on each side. Certainly all the view code will be pushed around by the front-end application, and all the database calls will be made from the back-end, but beyond that, how much controller code should go where? My inclination is to minimise the XML-RPC requests, and push data between the two instances in as final a condition as it could ever be.

An advantage, though, is that I can build a UI abstraction between the front-end and back-end, probably using a symbolic abstraction in the serialisation — essentially, making the content passed forward that is fully UI-ready as symbolic as possible such that it passes through a meta-lingual layer for full internationalisation of text. Net result: easier translations, possibly harnessing something akin to GNU gettext (except not actually GNU gettext, because I can’t stand it).

My current exercise is to exorcise old, unnecessary code — ahem, “to refactor for improved performance and maintainability” — which will probably take a few hours, then it’s back to hacking!