finals, beta, and release candidates
major versus patch releases
String chill and string freeze¶
String chill: when all new and updated user-facing strings are in
develop, we upload them to Crowdin (see: Extracting and uploading sources) and do a test translation internally. We aim to translate the strings into at least two languages at this stage, and use this opportunity to make any final updates to the English source strings.
String freeze: when the internal review is finished and the user-facing strings have been signed off, the i18n team notifies external translators to begin their work. After this time, it can be highly disruptive to change English source strings because it requires communicating and coordinating with a large number of external contractors and volunteers with diverse schedules and time zones.
The in-context translation server kolibri-translate.learningequality.org should always be available for translation efforts.
Each minor release (
N.N.*) is maintained in a Crowdin Version Branch, following the existing naming scheme
release-vN.N.x. The branch is automatically created when running the first
make i18n-uploadcommand. Crowdin will automatically reuse previously translated strings in new branches.
The strings for the upcoming release need to be uploaded as described in Crowdin workflow.
make i18n-stats branch=<release-vN.N.x>to get figures on the translation work.
Send the stats to the i18n team, who will use them for communication with translators to measure the translation efforts needed.
Strings from the Perseus plugin also need to be revisited. They are maintained in the repo learningequality/kolibri-exercise-perseus-plugin, but the source strings are generated and uploaded through the main
kolibriproject. The translated files from Crowdin such as
kolibri_exercise_perseus_plugin.exercise_perseus_render_module-messages.jsonare downloaded through the
kolibri-exercise-perseus-pluginproject. For instructions, see Crowdin workflow.
Strings exist in more places than just the Kolibri repo. Ensure we have translations for the Perseus plugin as well as other Crowdin projects such as Kolibri Server, and the Windows, Mac, Android, and GNOME Linux apps.
Don’t forget to include the new version notifications! Before the string freeze, make sure that the messages in the UpdateNotfication.vue component have been updated for the upcoming release.
In the component’s
$trsoptions, add a new message with a key indicating the upcoming version. Provide 1-2 sentences describing the most important new features.:
upgradeMessage_0_13_0: 'Kolibri version 0.13.0 is available! It contains major improvements to resource management, coach tools, and much more.'
Continuing the release process¶
While translators are working, we finish final feature development and begin integration testing using our suite of Gherkin scenarios. During this period, we also perform a number of internal “bug bashes” and share beta releases externally with the community for help with review and testing.
The latest beta releases are automatically deployed to kolibri-beta.learningequality.org.
The remainder of the release process is documented in structured workflows in the Kolibri release process repo. (Note: this is currently a private repository because it interacts with internal Learning Equality systems)