Adblock Plus and (a little) more is now powered by a new CMS engine · 2015-05-19 18:07 by Wladimir Palant

Five years ago we started using Anwiki to power The most important reason was our need to support translations in a way that could scale for many languages and many translators. Sadly, Anwiki has a number of issues that make working with it unnecessarily hard. We couldn’t find any existing products that do a better job so we decided to roll our own.

The initial version of our CMS was implemented more than a year ago and initially powered only our small company website. Migrating to it was a much bigger project and took lots of time. Today, I am happy to announce that the switch is complete and is finally running on our CMS. The dependency graph for the migration consisted of 59 issues – that’s our biggest so far.

Why is the new system better than what we had before?

  • It’s primarily a static page generator, all pages are generated in advance rather than being rendered on the fly when they are requested. This is much more efficient in terms of server resources. We added static page generation to Anwiki but it wasn’t pretty.
  • Changes are implemented in a repository which provides a convenient way to view the source files and a useful change history. We added repository export to Anwiki but that wasn’t exactly convenient – already because changes to each language version were a separate repository commit.
  • We currently support three formats for content: very flexible Jinja2 templates, easy to write Markdown and raw HTML. The latter is our legacy format, it mostly exists to support migration from Anwiki – all content there had to be written in plain HTML.
  • Testing changes locally before these are pushed to production is easy.
  • Normally, when you need to change something on the website it will be a single commit in a single repository. With Anwiki, one would frequently have to change the website template in the Anwiki source code, static files on the web server and the actual content in the Anwiki database.
  • We plan to translate our website on Crowdin, just like Adblock Plus itself. Uploading our website strings to Crowdin still needs some work but it will be a huge step forward from the Anwiki translation UI.
  • For translators, the new engine supports meaningful string identifiers and optional comments to explain the context. This was a big issue with Anwiki, the context for some strings (particularly the ones not directly visible) being very non-obvious.
  • Even more importantly, the new system has more meaningful translation units. Anwiki would always break strings up at tag boundaries, so a sentence with a link would become three separate strings (start of the sentence, link text, end of the sentence). The new system allows certain tags inside a sentence, so that the sentence would still be translated as a single string.

The big outstanding issue is connecting the new website to Crowdin. Other than that, everything should be done – and for now look identical to the “old” website.


Comment [3]

  1. mapx · 2015-05-19 20:36 · #

    Some strange issue on forum (at least in chrome):
    I’m notified about a new post on forum.
    Open the site and I get the previous situation of the forum: I mean the same unread posts but only apparently. If I (repeatedly) refresh the page the situation come back to normal.

    I deleted the cookies (using EditThisCookie extension), but the wrong behaviour is back again.

    It’s like you see some cached version of the page(s).

    Reply from Wladimir Palant:

    Thank you, we missed that in our testing. I filed, will resolve it shortly.

  2. Sarvesh Shrivastava · 2015-05-20 09:21 · #

    WOW..great news…

  3. P E Rhodes · 2015-06-20 13:45 · #


Commenting is closed for this article.