Calamares, the universal Linux installer which is used by dozens of different small distro’s, is translated into more than 50 languages. However, I realised recently that my development workflow isn’t translator-friendly. That was before I heard from Nick Richards at the Linux Applications Summit about product management things.

In any case, I’ve decided to change my own workflow a little to be better to translators. The intended effect is that future Calamares releases ship with more complete translations.

The problem is roughly this:

  • Calamares follows the git-alligator workflow: Always summer in master, with feature branches for nearly all work. When branches are done, they get merged to master.
  • Short-cycle development with releases roughly every two weeks.
  • Branches tend to pile up, then all get merged at the end of a cycle in a housekeeping day. Then the release is cut.

In qgit this looks roughly like so (image is edited from actual Calamares history).

Git history of Calamares showing merges

The just-before-a-release merges of branches into master and then releasing that means that the translations from the last release are pulled in, and applied to new code. As a result, translations are nearly always slightly broken.

For larger projects, a string freeze is a perfectly normal part of releases. I just hadn’t internalized that it applies (or should apply) to Calamares as well.

So as part of the current release cycle, I’m adding tooling to force me to be better to translators. Releases are mostly automated anyway, and some extra checks for the release are just a good thing. The new tooling adds two checks to a release:

  • there was a push to Transifex (with current strings); the tooling now adds a local translation tag to mark that that happened.
  • since then, no strings have changed.

Since the translators for Calamares are really on-the-ball, and changes are handled really quickly, the one-week lead time plus consistent update-translations-before-release should improve the situation: I won’t be breaking existing translations just before a release, and overall coverage will improve.