Starting this task item in order to collect requirements and come up with a possible roadmap for translations' SVN-to-Git migration.
Background
SVN is currently used in KDE almost exclusively for translations into human languages, see most recently updated directories being l10n-kf5 and l10n-support:
There are a few problems with SVN and advantages of Git:
- SVN is harder to use for new contributors. SVN is less popular than Git (see e.g. this poll at a Russian online forum: https://www.linux.org.ru/polls/polls/15179371), therefore more perspective contributors need to learn it from scratch, while Git may often be already familiar to them.
- SVN requires additional Sysadmin manpower to support (1) the SVN server in addition to Gitlab [invent.kde.org], (2) websvn.kde.org, (3) pre-commit hooks, etc.
- Committing offline is not possible in SVN.
- Git should facilitate integration with external translation file trees maintained by Linux distributions (e.g. BaseALT)
- ...
Proposal Overview
I suggest that we migrate the translations into a set of Git repositories, one per language or per language variant.
Roadmap
Here is a possible sequence of steps to migration translations to Git:
- Migrate scripty code from SVN to Git - https://phabricator.kde.org/T4803
- Refactor/rewrite scripty in a way to make future changes easier and safer (testable). Make scripty easy to integrate with both SVN and Git in an SCM-agnostic way - this is going to be necessary for the transitional period when some translation teams will be beta testing Git support.
- Modify scripty to also generate a Git repository l10n/templates.git with the same contents as https://websvn.kde.org/trunk/l10n-kf5/templates/ (and sister directories - branches/stable/l10n-kf5/templates, etc)
- Modify scripty to also generate a Git repository l10n/x-test.git with the same contents as https://websvn.kde.org/trunk/l10n-kf5/x-test/ (and sister directories also named "x-test")
- Adopt or implement tooling to facilitate mass changes in all Git translations repositories. The tooling must work with both SVN and Git, the Git integration can be tested against x-test.git. I'm not sure about the requirements, @ltoscano probably knows the typical usage scenarios.
- Implement full Git integration in scripty. This means scripty should keep translations synchronized daily for any language that is stored in Git. Can be tested against x-test.git.
- Update release scripts (mainly https://invent.kde.org/sdk/releaseme) to support translations in Git as well as in SVN.
- [In the meantime,] work on PO Summit Git integration.
- Run a survey and pick 1-3 translation teams for Beta onboarding, these should be the teams already familiar with Git. If PO Summit integration is not ready yet at this point, only onboard teams that don't use PO Summit. Disable GitLab merge requests feature for l10n/[language].git repositories unless we have an explicit approval from particular language team's coordinators.
- Onboard into beta testing 1-3 translation teams using PO Summit.
- Update/create documentation for translators.
- Update l10n.kde.org backend to display statistics for translation teams using Git.
- Gradually migrate translations for all language teams (or do it in one go if it feels safe).
Alternative Roadmap
A different roadmap where we would do the full migration in one shot:
- Migrate scripty code from SVN to Git - https://phabricator.kde.org/T4803
- Implement the automation needed to reduce the manual renames and moves of the files (the underlying logic is mostly scm-agnostic)
- Automate POSummit (to called from scripty) to reduce the operations that needs to be executed daily by each translation team;
- Adapt the non-extracting part of scripty to also checkout from and commit to Git.
- Adopt or implement tooling to facilitate mass changes in all translations repositories which should be used as last resort if the automatic detection doesn't work. The tooling must work with both SVN and Git.
- Implement a web-based translation system for teams who need a proper review system and hopefully be used as replacement for l10n.kde.org.
- Update release scripts (releaseme and sysadmin/release-scripts) to support translations in Git.
- Freeze translations in SVN and migrate translations for all language teams into Git. At this point all the scripts should be able to work with git as well.
- Update any remaining system (for example l10n.kde.org if it has not been replaced yet).