heptapod issueshttps://foss.heptapod.net/groups/heptapod/-/issues2023-06-27T15:49:04Zhttps://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/218Socket connection timeout with bower.io2023-06-27T15:49:04ZCédric Kriercedric.krier@b2ck.comSocket connection timeout with bower.ioJobs running on clever-cloud runner are failing because of a socket timeout against bower.io like https://foss.heptapod.net/tryton/tryton-docker/-/jobs/1867825
Locally there are no problem to connect to bower.io so there seems to be netw...Jobs running on clever-cloud runner are failing because of a socket timeout against bower.io like https://foss.heptapod.net/tryton/tryton-docker/-/jobs/1867825
Locally there are no problem to connect to bower.io so there seems to be network issue between clever-cloud and bower.io.https://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/217Mercurial repository for acadamic pruposes2023-04-19T14:29:45ZLuis MolinaMercurial repository for acadamic pruposes## Description of the projects to be hosted
- Project Name: very small Django app
- Project URL:
- Project Maintainers:
- Project License:
Please explain here how they meet our current criteria.
### Main criteria
- [x] Free / Open So...## Description of the projects to be hosted
- Project Name: very small Django app
- Project URL:
- Project Maintainers:
- Project License:
Please explain here how they meet our current criteria.
### Main criteria
- [x] Free / Open Source
- [ ] main development repositories
- [x] you are an official maintainer of the project
- [x] agreement to acknowledge where appropriate the help provided by Octobus
and Clever Cloud by hosting on foss.heptapod.net
### Additional information
Knowing this can help in case there are constraints on resources and/or
administrators availability at the time of the request. It can also help us
suggest the right solution for the needs of the project.
- The project will be not hosted, local only, i am only looking for a mercurial repository
- I study at El Salvador national university, the engineers are old school and asked me to use mercurial instead of git.
### Hosting type
What would you like to have?
- [ ] a top-level group
- [ ] a project in an existing group
- [X] just a project in your personal namespace
## Post approval maintainer task list
See [README](README.md#maintainer-task-list-for-the-import-to-happen)
for explanations.
- [x] Reviewing [Heptapod workflow](https://heptapod.net/pages/faq.html#workflow)
## Post import maintainer task list
- [ ] Add the Octobus and Clever cloud acknowledgement at the selected place.
- [ ] Communicate about the migration to help others to aware of the options
(for example on mastodon, twitter, bitbucket thread, mailing list, …)https://foss.heptapod.net/heptapod/heptapod/-/issues/741about.heptapod.host needs „sign in“ button2023-04-13T07:34:18ZHartmut Goebelabout.heptapod.host needs „sign in“ buttonabout.heptapod.host is lacking a „sign in” button. Thus if one for any reason ended on about.haptapos.host, is not easy to sign in.
Please add some „sign in” button.
Gitlab: ![Sign in button at about.gitlab.com](/uploads/362c5f437dd8e20...about.heptapod.host is lacking a „sign in” button. Thus if one for any reason ended on about.haptapos.host, is not easy to sign in.
Please add some „sign in” button.
Gitlab: ![Sign in button at about.gitlab.com](/uploads/362c5f437dd8e20e229944d3c24c023a/grafik.png)
Github: ![Sign in button at github.com](/uploads/cee8db2d53381c4060aa7b2bb1c108cb/grafik.png)https://foss.heptapod.net/heptapod/heptapod/-/issues/738Ignore topic branches in commit info2023-04-08T14:20:29ZCédric Kriercedric.krier@b2ck.comIgnore topic branches in commit infoWhen looking at a commit, in the branch info box the branches, in which the commit is, are displayed. But there is also all the topics. This information is not very useful as almost all commits from the default branch are in all topics.\...When looking at a commit, in the branch info box the branches, in which the commit is, are displayed. But there is also all the topics. This information is not very useful as almost all commits from the default branch are in all topics.\
I think we should filter out all the "GitLab branches" that starts with `topic/`.https://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/216Job fails because of applet not found2023-04-08T11:06:07ZCédric Kriercedric.krier@b2ck.comJob fails because of applet not foundIt seems there is something missing on the runner as [jobs](https://foss.heptapod.net/tryton/tryton-docker/-/jobs/1823782) fail for missing applet.It seems there is something missing on the runner as [jobs](https://foss.heptapod.net/tryton/tryton-docker/-/jobs/1823782) fail for missing applet.https://foss.heptapod.net/heptapod/heptapod-runner/-/issues/47Failure to launch2023-04-07T12:55:52ZGeorges RacinetFailure to launchWe've had this error today.
```
Apr 07 12:01:37 heptapod-foss heptapod-paas-runner[941353]: 2023-04-07 12:01:37,982 [941353] heptapod_runner.paas_dispatcher INFO Tracking the launch of job 1821184 for runner 'kvzWdEMo' (expected weight ...We've had this error today.
```
Apr 07 12:01:37 heptapod-foss heptapod-paas-runner[941353]: 2023-04-07 12:01:37,982 [941353] heptapod_runner.paas_dispatcher INFO Tracking the launch of job 1821184 for runner 'kvzWdEMo' (expected weight 5.7)
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: 2023-04-07 12:01:38,569 [941353] heptapod_runner.paas_dispatcher INFO Launching PAAS Ressource for job 1821184 for runner 'kvzWdEMo'
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[947454]: error: RPC failed; HTTP 401 curl 22 The requested URL returned error: 401
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[947452]: fatal: expected flush after ref listing
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: 2023-04-07 12:01:38,887 [941353] heptapod_runner.paas_dispatcher ERROR Unexpected exception for job 1821184 for runner 'kvzWdEMo'
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: Traceback (most recent call last):
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: File "/home/heptapod-runner/venv/lib/python3.9/site-packages/heptapod_runner/paas_dispatcher.py", line 372, in launch_job
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: runner.launch(app, job_data)
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: File "/home/heptapod-runner/venv/lib/python3.9/site-packages/heptapod_runner/clever.py", line 383, in launch
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: build_helper.git_push(paas_resource.git_push_url)
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: File "/home/heptapod-runner/venv/lib/python3.9/site-packages/heptapod_runner/docker.py", line 249, in git_push
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: if self.git('ls-remote', remote, remote_branch):
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: File "/home/heptapod-runner/venv/lib/python3.9/site-packages/heptapod_runner/docker.py", line 138, in git
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: return subprocess.check_output(cmd, **kwargs)
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: File "/usr/host/lib/python3.9/subprocess.py", line 424, in check_output
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: File "/usr/host/lib/python3.9/subprocess.py", line 528, in run
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: raise CalledProcessError(retcode, process.args,
Apr 07 12:01:38 heptapod-foss heptapod-paas-runner[941353]: subprocess.CalledProcessError: Command '['git', 'ls-remote', 'paas', 'master']' returned non-zero exit status 128.
```
There was no user feedback beside the job being correctly reported as failed.https://foss.heptapod.net/heptapod/heptapod/-/issues/736Squashing a single commit can be selected, but fails (without clear reason)2023-04-05T13:53:17ZMathias De MareSquashing a single commit can be selected, but fails (without clear reason)### Summary
Squashing a single commit can be selected, but it fails.
### Steps to reproduce
Try to squash a merge request with only 1 changeset.
### Example Project
https://foss.heptapod.net/heptapod/testing-projects/mercurial-paris...### Summary
Squashing a single commit can be selected, but it fails.
### Steps to reproduce
Try to squash a merge request with only 1 changeset.
### Example Project
https://foss.heptapod.net/heptapod/testing-projects/mercurial-paris-workshop/proj2/-/merge_requests/2
### What is the current *bug* behavior?
The squash fails.
### What is the expected *correct* behavior?
The squash should do nothing.
### Relevant logs and/or screenshots
Mercurial returns return code 1 in this specific case (which is not handled separately by Heptapod?).
#### Details about the Heptapod instance where the bug occurs
foss.heptapod.net
### Possible fixes
Adapt to accept return code 1 for this case.https://foss.heptapod.net/heptapod/hgitaly/-/issues/125Support other storages than `default`2023-03-28T19:00:27ZGeorges RacinetSupport other storages than `default`Currently, HGitaly servers only accept repositories with `storage_name=default`.
Actual sharding in HGitaly is not on the table yet, and serving several storages with a single HGitaly server even less, but we might soon want to have sev...Currently, HGitaly servers only accept repositories with `storage_name=default`.
Actual sharding in HGitaly is not on the table yet, and serving several storages with a single HGitaly server even less, but we might soon want to have several storages in a Heptapod installation, with a single one for Mercurial repositories.
In any case, even with a single storage per HGitaly server, it would have to match the name as known in the Rails application, hence potentially not 'default'.
It would be good enough for the foreseeable future to configure both the repositories root and the storage name. We don't need a lookup in a full mapping.HGitaly3: fully in chargehttps://foss.heptapod.net/heptapod/ci-debug-tools/-/issues/2Problems when using Python development versions2023-03-17T13:08:45ZCharlieCProblems when using Python development versionsHi, I hope this is the right project.
I like to add development versions of Python to my tox/CI setup as soon as possible to pick up any potential compatability issues. The is fairly straightforward for the pipelines. However, it looks ...Hi, I hope this is the right project.
I like to add development versions of Python to my tox/CI setup as soon as possible to pick up any potential compatability issues. The is fairly straightforward for the pipelines. However, it looks like timeouts may be an issue for the development versions so I frequently get messages like this:
```
Pipeline #64407 has failed!
Project: openpyxl ( https://foss.heptapod.net/openpyxl/openpyxl )
Branch: branch/3.1 ( https://foss.heptapod.net/openpyxl/openpyxl/-/commits/branch/3.1 )
Commit: 409a5b13 ( https://foss.heptapod.net/openpyxl/openpyxl/-/commit/409a5b13a60dffcc1690048d2c534789ee288018 )
Commit Message: Add a range property for column dimensions and ...
Commit Author: CharlieC ( https://foss.heptapod.net/charlie.clark )
Pipeline #64407 ( https://foss.heptapod.net/openpyxl/openpyxl/-/pipelines/64407 ) triggered by CharlieC ( https://foss.heptapod.net/charlie.clark )
had 1 failed job.
Job #1779022 ( https://foss.heptapod.net/openpyxl/openpyxl/-/jobs/1779022/raw )
Stage: test
Name: test-python312
```
Is there a nice way to handle this so that the definition makes sense but we're not needlessly wasting resources? tox has a definition to skip setups where the Python version is missing. Maybe we could do something similar?https://foss.heptapod.net/heptapod/heptapod-runner/-/issues/46Docker Hub Helper image: symbolic versions2023-03-10T09:38:19ZGeorges RacinetDocker Hub Helper image: symbolic versionsCurrently, our CI/CD process pushes the hash-based image tags to Docker Hub, so that Docker-based executors can work right away without any `helper_image` setting.
Yet, for people using their own registry, it would provide an easier ide...Currently, our CI/CD process pushes the hash-based image tags to Docker Hub, so that Docker-based executors can work right away without any `helper_image` setting.
Yet, for people using their own registry, it would provide an easier identification to also push the version-based tag, such as `x86_64-0.6.0`.
There is also a `latest` tag, that is severely outdated. Users should be discouraged to use it, as the runner version and the helper version must be identical. Either removing it or updating it could break currently working user setups. Perhaps removal is the best way to go (opinions welcome)https://foss.heptapod.net/heptapod/hgitaly/-/issues/123Structured logs2024-03-21T13:42:02ZGeorges RacinetStructured logsSo-called "structured logs" are simply logs where each line is a JSON document.
This is the de-facto standard followed by many projects, notably most GitLab components (some also have legacy logs, which are deprecated). Providing struct...So-called "structured logs" are simply logs where each line is a JSON document.
This is the de-facto standard followed by many projects, notably most GitLab components (some also have legacy logs, which are deprecated). Providing structured logs would presumably allow to leverage the same log mining tools as GitLab generally supports.
It is not clear whether we should systematically switch to structured logs, using the `logging` Python module or simply use them in the general requests logger.
In any case, the recent logging of [correlation_id](#122) has shown the limits of the current approach, with `logging` format strings making all their keys required (even replacing `correlation_id` with an empty string when not available would not be very satisfying), whereas a JSON logger would probably be more flexible.Heptapod 1.4https://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/211Mercurial book hosting2023-02-22T10:57:02ZPierre AugierMercurial book hostingThere is a discussion on hg mailing list on [Mercurial Book](https://book.mercurial-scm.org/) repository hosting.
Since I thought a revisited version could be useful (revisited both in terms of content, with more topic, evolve and hg-g...There is a discussion on hg mailing list on [Mercurial Book](https://book.mercurial-scm.org/) repository hosting.
Since I thought a revisited version could be useful (revisited both in terms of content, with more topic, evolve and hg-git, and in terms of build system to get a nicer result), I worked a bit on a new version. This is very very preliminary but I put some code on Github: https://github.com/paugier/mercurial-jupyterbook
The resulting website could be hosted on readthedocs or even using [Heptapod pages](https://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/75#note_284861).
I was wondering if I could create 2 small repositories here for this (https://foss.heptapod.net/mercurial/hg-jupyterbook and https://foss.heptapod.net/mercurial/hg-tutorial-hello) ?Raphaël GomèsRaphaël Gomèshttps://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/210Many images missing2023-06-26T08:29:58ZHartmut GoebelMany images missingImages on both the foss and the commercial instance are missing. Looks like the reason is: Images are serves via HTTP,
not HTTPS. (For the commercial instance this is might leave the impression of the commercial service not being profess...Images on both the foss and the commercial instance are missing. Looks like the reason is: Images are serves via HTTP,
not HTTPS. (For the commercial instance this is might leave the impression of the commercial service not being professional.)
![Screenshot_20230214_092222](/uploads/e21a3583762bb59396ef4bdc067e19b6/Screenshot_20230214_092222.png)
![Screenshot_20230214_092405](/uploads/49df795b34b53c8a3e4a7df5786adfe5/Screenshot_20230214_092405.png)
![Screenshot_20230214_092820](/uploads/8e737f01125143f6b31d39b6cb5dbfac/Screenshot_20230214_092820.png)
![Screenshot_20230214_092846](/uploads/b37f14069127ab5000d2b6a3a28f643f/Screenshot_20230214_092846.png)https://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/209Cloning Tryton fails: Name or service not known2023-02-13T11:38:59ZHartmut GoebelCloning Tryton fails: Name or service not knownCloning tryton fails:
```
$ hg clone https://foss.heptapod.net/tryton/tryton
Zielverzeichnis: tryton
applying clone bundle from https://cellar-c2.services.clever-cloud.com/heptapod-foss-clonebundles/tryton/tryton-2022-12-18-zstd-v2.hg
er...Cloning tryton fails:
```
$ hg clone https://foss.heptapod.net/tryton/tryton
Zielverzeichnis: tryton
applying clone bundle from https://cellar-c2.services.clever-cloud.com/heptapod-foss-clonebundles/tryton/tryton-2022-12-18-zstd-v2.hg
error fetching bundle: [Errno -2] Name or service not known
Abbruch: error applying bundle
(if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false")
```
Related #183https://foss.heptapod.net/heptapod/heptapod/-/issues/726Pipeline not triggered when pushing from remote but triggered when commiting ...2023-02-08T14:12:19ZFranck BretPipeline not triggered when pushing from remote but triggered when commiting from web IDE<!---
Please read this!
Before opening a new issue, make sure to search for keywords in the issues
filtered by the "Regression" or "Bug" label:
- https://foss.heptapod.net/heptapod/heptapod/issues?label_name%5B%5D=Regression
- https://...<!---
Please read this!
Before opening a new issue, make sure to search for keywords in the issues
filtered by the "Regression" or "Bug" label:
- https://foss.heptapod.net/heptapod/heptapod/issues?label_name%5B%5D=Regression
- https://foss.heptapod.net/heptapod/heptapod/issues?label_name%5B%5D=Bug
and verify the issue you're about to submit isn't a duplicate.
--->
### Summary
There is a behaviour inconsistency between client and Web IDE on git based projects.
The pipeline start after commiting from web IDE, but don't on classic push from client.
### Steps to reproduce
<!-- Describe how one can reproduce the issue - this is very important. Please use an ordered list. -->
* create a new Git repository from template (I tried with the pelican one)
* Pull, edit content and commit, push
* verify if a new pipeline is triggered
* Edit a file from the Web IDE
* verify if a new pipeline is triggered
### Example Project
<!-- If possible, please create an example project here on foss.heptapod.net or over at heptapod.host that exhibits the problematic
behavior, and link to it here in the bug report. If you are using an older version of Heptapod, this
will also determine whether the bug is fixed in a more recent version. -->
https://foss.heptapod.net/heptapod/testing-projects/trypelican
### What is the current *bug* behavior?
CI pipeline not triggered on push
### What is the expected *correct* behavior?
CI pipeline triggered on pushhttps://foss.heptapod.net/heptapod/ci-debug-tools/-/issues/1Batch mode with user-supplied script2023-02-08T13:36:46ZGeorges RacinetBatch mode with user-supplied scriptFor bisection, the ability to run a user-supplied script is very interesting.
Work already done in my older `docker-ci-repro/ci-heptapod-rails.sh` on `purity` (precursor of ci-heptapod-rails).
It needs to be readapted for the Python ver...For bisection, the ability to run a user-supplied script is very interesting.
Work already done in my older `docker-ci-repro/ci-heptapod-rails.sh` on `purity` (precursor of ci-heptapod-rails).
It needs to be readapted for the Python version that `ci-heptapod-rails` is.
The idea is also to provide a working example in the present project.
Important points:
- [ ] HGitaly setup has to be skipped on the `default` branch, to be able to bisect on upstream changesets.
Since `ci-heptapod-rails` reads the job script automatically, perhaps we'll need to make a separate preparation script in heptapod/heptapod-rails> and have it include the necessary conditionals. With the current state of Heptapod branches, this would not need to be backported to the stable series.
- [ ] patch application in the user-supplied script.
In case there are several problems, we need to apply solution of the first for it not to pollute reproduction of the second. Hence `ci-heptapod-rails` must take care of reversal at the end of each run.https://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/208Scheduler job failures2023-02-05T10:14:24ZGeorges RacinetScheduler job failuresWhile checking if runners behave correctly after upgrade, I noticed that [some jobs](https://foss.heptapod.net/tryton/python-sql/-/jobs/1672176) are failing with message "The scheduler failed to assign job to the runner, please try again...While checking if runners behave correctly after upgrade, I noticed that [some jobs](https://foss.heptapod.net/tryton/python-sql/-/jobs/1672176) are failing with message "The scheduler failed to assign job to the runner, please try again or contact system administrator".
Here are some hints:
- This is a server-side failure, having nothing to do with the runner itself
- There seems to be some automatic retry (to be confirmed)
- The prime suspect is [workers saturation in HGitaly](hgitaly#118), as the CI/CD parts of the Web application are severely hammering the HGitaly server for changeset details.
Please, be patient about this. It will take some time to bring hgitaly#118 to a point where it can take care of the load generated by CI, but this is the proper way to solve this.https://foss.heptapod.net/heptapod/heptapod/-/issues/725Add simple tool for 'gitlab-hg' for on server repository maintenance.2023-02-06T22:51:31ZJoshua PedrickAdd simple tool for 'gitlab-hg' for on server repository maintenance.Occasionally, I need to do repository maintenance(e.g. repo mirrors get out of sync and commits need to be stripped). On the [FAQ](https://heptapod.net/pages/faq.html), there's warning about using the wrong mercurial version/configuratio...Occasionally, I need to do repository maintenance(e.g. repo mirrors get out of sync and commits need to be stripped). On the [FAQ](https://heptapod.net/pages/faq.html), there's warning about using the wrong mercurial version/configuration.
I propose a small simplification that parses the `config/gitlab.yml` for the correct configuration, like the following:
```
#!/opt/gitlab/embedded/bin/python3
import yaml
import subprocess
import os
import sys
gitlab_yml = yaml.safe_load( open('/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml', 'r') )
production = gitlab_yml.get('production')
hgrc = production.get('mercurial').get('hgrc')
hg_bin = production.get('mercurial').get('bin_path')
os.environ['HGRCPATH'] = ':'.join(hgrc)
subprocess.run([ hg_bin ] + sys.argv[1:])
```
If this is installed in the /opt/gitlab/embedded/bin directory the paths could be relative to the location of the script itself.https://foss.heptapod.net/heptapod/heptapod/-/issues/724Webhooks sent ' branch/default' as branch name2023-09-05T12:37:26ZCédric Kriercedric.krier@b2ck.comWebhooks sent ' branch/default' as branch nameTrying to use the gitlab webhook for weblate: https://docs.weblate.org/en/latest/admin/continuous.html#automatically-receiving-changes-from-gitlab
It does not work because the name of the branch sent is `branch/default` instead of `defa...Trying to use the gitlab webhook for weblate: https://docs.weblate.org/en/latest/admin/continuous.html#automatically-receiving-changes-from-gitlab
It does not work because the name of the branch sent is `branch/default` instead of `default`. So weblate does not find a matching branch then it ignore the webhook (instead of pulling the repository).
It will be great if Heptapod could sent the mercurial name of the branch.https://foss.heptapod.net/heptapod/foss.heptapod.net/-/issues/205host hg-confman2023-02-06T11:27:34ZAurélien Campéashost hg-confman## Description of the projects to be hosted
- Project Name: hg-confman
- Project URL: https://hg.sr.ht/~auc/confman
- Project Maintainers: Aurélien Campéas, and now people at orus.io
- Project License: GPL v2+
Please explain here how t...## Description of the projects to be hosted
- Project Name: hg-confman
- Project URL: https://hg.sr.ht/~auc/confman
- Project Maintainers: Aurélien Campéas, and now people at orus.io
- Project License: GPL v2+
Please explain here how they meet our current criteria.
### Main criteria
- [X] Free / Open Source
- [X] main development repositories
- [X] you are an official maintainer of the project
### Additional information
Knowing this can help in case there are constraints on resources and/or
administrators availability at the time of the request. It can also help us
suggest the right solution for the needs of the project.
- is the project officially released? In downstream distributions or
packaging systems? Yes and Yes
- estimation of the user base if possible, or number of downloads,
reverse dependencies… : Small user base
- number of maintainers and regular contributors: Very small
- where is the project currently hosted? Are there issue trackers,
review systems, CI/CD to hook to or to replace somehow? -> hosted on sourcehut, currently no infra but one CI will be wanted
### Hosting type
What would you like to have?
- [ ] a top-level group
- [X] a project in an existing group (Mercurial)
- [ ] just a project in your personal namespace
## Post approval maintainer task list
See [README](README.md#maintainer-task-list-for-the-import-to-happen)
for explanations.
- [ ] Reviewing [Heptapod workflow](https://heptapod.net/pages/faq.html#workflow)
## Post import maintainer task list
- [ ] Add the Octobus and Clever cloud acknowledgement at the selected place.
- [ ] Communicate about the migration to help others to aware of the options
(for example on mastodon, twitter, bitbucket thread, mailing list, …)Georges RacinetGeorges Racinet