[FEAT] Improving migrations #398

Open
opened 2023-02-20 14:18:20 +00:00 by fnetX · 7 comments
Owner

Needs and benefits

Migrating back and forth between Forgejo instances is among the most important features the software can deliver, breaking vendor lock-in and encouraging users to spread over available instances once federation matures.

However, the migration feature is among the part where a lot of user support requests to Codeberg originate from, because the user experience is not always smooth.

Feature Description

I think, the following domains need improvement, and should be tracked in separate issues by time (feel free to update this comment).

Performance:

  • Forgejo→Forgejo seems to take most time fetching comment reaction for each individual comment, which is rather slow (API update)

UX:

  • allow to auto-migrate a list of migrations from the user account
  • give more helpful error messages and / or encourage users to seek help with their local admins or the Forgejo team (the "Migration failed" screen is rather unhelpful and not motivating)

Other:

  • allow resuming (failed?) migrations (allow resuming failed migrations or updating existing ones to the latest state would make it much smoother for projects to keep a full mirror and switch when the time comes, instead of re-migrating everything)
## Needs and benefits Migrating back and forth between Forgejo instances is among the most important features the software can deliver, breaking vendor lock-in and encouraging users to spread over available instances once federation matures. However, the migration feature is among the part where a lot of user support requests to Codeberg originate from, because the user experience is not always smooth. ## Feature Description I think, the following domains need improvement, and should be tracked in separate issues by time (feel free to update this comment). Performance: - Forgejo→Forgejo seems to take most time fetching comment reaction for each individual comment, which is rather slow (API update) UX: - allow to auto-migrate a list of migrations from the user account - give more helpful error messages and / or encourage users to seek help with their local admins or the Forgejo team (the "Migration failed" screen is rather unhelpful and not motivating) Other: - allow resuming (failed?) migrations (allow resuming failed migrations or updating existing ones to the latest state would make it much smoother for projects to keep a full mirror and switch when the time comes, instead of re-migrating everything)
fnetX added the
enhancement/feature
Discussion
labels 2023-02-20 14:18:21 +00:00
Author
Owner

Just to give an idea what a single (still ongoing BTW) migration causes:

17:26:34 root@gitea-production / # journalctl --grep "/api/v1/repos/calckey" | wc -l
1354173
17:28:23 root@gitea-production / # journalctl --grep "/api/v1/repos/calckey/calckey/issues/comments/(.*)/reactions" | wc -l
1321053
17:28:59 root@gitea-production / # 

No wonder that migrating active repositories literally takes forever when you look at the number of necessary API calls.

Just to give an idea what a single (still ongoing BTW) migration causes: ~~~ 17:26:34 root@gitea-production / # journalctl --grep "/api/v1/repos/calckey" | wc -l 1354173 17:28:23 root@gitea-production / # journalctl --grep "/api/v1/repos/calckey/calckey/issues/comments/(.*)/reactions" | wc -l 1321053 17:28:59 root@gitea-production / # ~~~ No wonder that migrating active repositories literally takes forever when you look at the number of necessary API calls.
Owner

Mentioned this elsewhere, I'm not so sure about the states of affairs w.r.t. F3. But it should be possible to package a repository with its metadata as an F3 package and teach Forgejo to import and export that. @dachary @earl-warren

Mentioned this elsewhere, I'm not so sure about the states of affairs w.r.t. F3. But it should be possible to package a repository with its metadata as an F3 package and teach Forgejo to import and export that. @dachary @earl-warren
Owner

Gentle ping @dachary @earl-warren, would like to know if this is a possibility, or if I have a incorrect mental model of F3.

Gentle ping @dachary @earl-warren, would like to know if this is a possibility, or if I have a incorrect mental model of F3.
Member

Sorry for overlooking the question. This is certainly the goal with F3. And my main focus in the coming weeks.

Sorry for overlooking the question. This is certainly the goal with F3. And my main focus in the coming weeks.
earl-warren added the
dependency
F3
label 2023-09-09 09:51:11 +00:00
earl-warren added the
User Research - feature
User Research - federation
labels 2023-10-25 12:36:22 +00:00
Author
Owner

I just want to add that improving migrations does not only apply to Forgejo<->Forgejo, but also to migrations from propietary platforms.

Features like resuming failed migrations, or migration step-by-step (e.g. migrate issues later than the Git data etc) would benefit a lot.

Currently, it appears like we are hitting a limit in the size of repository migration, which sustains the vendor lock in of proprietary platforms.

Another potential solution would be to start a migration with the most recent data (issues, pulls, releases etc) and fill the archive over time.

I just want to add that improving migrations does not only apply to Forgejo<->Forgejo, but also to migrations from propietary platforms. Features like resuming failed migrations, or migration step-by-step (e.g. migrate issues later than the Git data etc) would benefit a lot. Currently, it appears like we are hitting a limit in the size of repository migration, which sustains the vendor lock in of proprietary platforms. Another potential solution would be to start a migration with the most recent data (issues, pulls, releases etc) and fill the archive over time.
Author
Owner

Also linking in Codeberg/Community#1323

Also linking in https://codeberg.org/Codeberg/Community/issues/1323
Owner

This is what I'm working on, daily. I'll get there.

This is what I'm [working on, daily](https://lab.forgefriends.org/friendlyforgeformat/gof3/-/merge_requests/90/commits). I'll get there.
Sign in to join this conversation.
No Milestone
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: forgejo/forgejo#398
No description provided.