Transifex and Django-Addons
It has been long time since my last blog post so here it goes!
One of the tasks I had to carry out here at Transifex was to make the architecture more modular. Currently it’s rather complicated to add new features to Transifex because the developer would have to mess around with Transifex codebase, inject source into obscure code blocks while probably introducing bugs that may affect whole program. In addition if you want to have features that you don’t want to publish, managing additional source code repository becomes painful and it needs continuous work to keep it synchronized with upstream version.
For past months I have been moving code out of the Transifex core, while making them pluggable. For this purpose we created project named django-addons. In practice this means that under your Transifex root we have /addons directory where you can drop any compatible addon. By addon I mean a Django app for which we can make some safe assumptions. We are using django-addons to load URLconf of each addon, notice types, settings etc. In addition we are using it to inject templates from addons to Transifex core templates. The point is that once you remove an addon, everything else should keep on working normally.
In following weeks we will finish with this modularization task which will result increased development rate for us, for code contributors and for third-party developers who might want to keep some stuff closed. Modular architecture also means that if you come up with a great idea for feature to add in Transifex, it will be much easier for you to implement it. We will be waiting for community developed addons!