February 17, 2022
Most of the work done in the past two months revolved around writing software. In part within the forgefriends codebase but also as contributions to the main branch of the Gitea codebase. Last month the organization of the forge federation webinar replaced the monthly update and this report exceptionally covers two months instead of one.
Gitea incremental import/export
Presented to the Gitea community for the first time during the webinar in January, the development work contributed to the Gitea codebase to implement an incremental import/export feature was then the primary motivation for various contributions including:
The development of a file format to represent issues, pull requests etc. began, is evolving and improvements are proposed. It is on pause for a few weeks to avoid conflicts with a large development regarding GitHub migrations.
Persistence of identifiers linking forges together to enable mirroring of issues, pull requests etc. It builds on the code to migrate projects so that it can be used for incremental migrations or mirroring, which is the same thing.
The Gitea codebase for migrations had no unit tests or integration tests which made it difficult to modifying without risking regressions. Very high level migrations integration tests were added first, and various other tests and bug fixes as well. Some of them have been published in the latest stable release of Gitea.
Detailed use cases for federated pull requests
A number of patches developed in the context of the forgefriends project could not be contributed to Gitea because doing so requires using a GitHub account and agreeing to their terms of service. One option would have been to wait until Gitea moves out of GitHub.
Instead, it was the opportunity to manually relay each pull request, mimicking and adapting the user experience provided by a federated forge service. For instance this merge request was manually federated with this pull request during weeks before it was merged and presented a wide variety of use cases.
This provides unique use cases based on actual user needs that can be used to implement pull request federation. Not only is it useful for the forgefriends project, it also helps the ForgeFlux project which pursue the same goal.
Strategy for chasing the Gitea main branch
The strategy to maintain forgefriends as a long standing fork of Gitea proved to be effective in the past two months: a total of 11 synchronizations took around six hours and proved effective to manage Gitea refactor that either create conflicts or CI failures. A guide was written to efficiently implement it using Emacs so that it takes around five minutes when there are no conflicts.
Gitea code walkthrough
Two additional Gitea code walkthrough were published to clarify the codebase that is reused or modified by the forgefriends project.
- Gitea linked accounts, external users and migrations
- Gitea data structures for repositories, issues, …
The chat room has not really been used in 2021 and it was decided to move it to the matrix chat room shared with the ForgeFlux project. It has since been active daily and instrumental in making progress.
Cooperation between forgefriends and ForgeFlux led to an improved tutorial and a short video to explain how Jitsi can be used to provide simultaneous translation.
Although translators were available during the webinar for simultaneous translation from Chinese and French, none of the participants actually used this possibility. Things will need to be done differently in the future for this to provide actual help.
Well being and moderation
The decision to establish a moderation process was an important stepping stone to ensure the forgefriends spaces are safe and inclusive. Followup discussions on community well being followed and were an opportunity to clarify ideas that may be the basis for appointing a team to prevent tensions rather than cure them.
Details on the work done to foster diversity are available in the forum.
The relationships between forgefriends and ForgeFlux continued to develop in multiple ways: the chat room is shared between the two projects, the webinar was jointly organized, manual ferrying merge requests to GitHub developed use cases that apply in both contexts. And there a number of informal discussions in the chat room to share ideas and opinions.
The proposal made to organize a monthly meeting on forge federation was renewed after the announcement that Gitea was funded to work on federation. However it did not receive feedback and is unlikely to happen.
Two Gitea chat rooms were bridged with Matrix (General and Develop): that was a long standing request to allow participation without using proprietary software. Many discussions happened on both channels in the following weeks.
Interactions with Gitea maintainers, in pull requests, the forum or the chat rooms were friendly and productive. Except on one occasion when friction caused contributions to be suspended. The Gitea owners stepped in and it was possible to resume participation the next day.
The go-fed project participated in the forge federation webinar and extended an invitation for participation to whoever was willing to help with with the maintenance. There was a followup and the go-fed author joined the forgefriends chat room.
Project plans for a hosted Gitea online service
The role and impact of federated forges in the context of an online service similar to GitHub or GitLab was explained in a blog post. It may become part of the strategy for a new service offering Gitea hosting, within the Gitea project itself or in a different context. It could help solve the durability problem that self-hosted services usually face by ensuring they are continuously mirroring each other.
Details on the hosted Gitea online services are available in a pad.
Forge federation webinar
In January 2022 a webinar on forge federation was organized in cooperation with Gitea, go-fed, ForgeFlux, aschrijver and Karrot. Around 25 people attended and the webinar was also recorded and edited the next day. The preparation took a significant amount of time and the next webinar is unlikely to happen before 2023.
Three proposals were accepted in the past two months:
There were also many discussions on the current scope and definition of the forgefriends project. Links were made with new ideas being developed in the newly created incubator category such as FSDL. The social coding initiative was discussed, has its own forum category: its scope is broader scope than forgefriends.
Details on governance are available in the forum.
Transparency and funding
Early January 2022, the Gitea project announced it was granted funding. Although it is not directly beneficial to forgefriends, it has a significant impact because it makes it more likely that native forge federation happens in Gitea. If and when it matures, it may be the first forge to provide this feature, which is the end goal of the forgefriends project.
A few additional sources of funding were added to the forum, one of which seems to be a good match for projects pursuing the same goal as forgefriends. It was also proposed to add them to the delightful funding list.
A presentation was made by Karrot during the webinar on the topic of transparency and funding in the context of Free Software projects. It was discussed extensively and a blog post was published to articulate the idea of radical transparency.
The forgefriends project itself no longer has direct funding in 2022, but indirect funding allows one person to work on it full time.
Details on transparency and funding are available in the forum.