Forge federation: monthly report 4/9

July 25, 2021

Most of the work during the last month was writing code, publishing the June release and preparing the July release. Collaboration with existing forges, Gitea, forgefed and Heptapod was initiated. The July 2021 monthly update videoconference will be held July 29th 5:30pm, 2021 and is open to everyone.

Software Development

There is nothing user facing yet but the code is running in the integration tests environment. It relies on fixtures that target each available forge (Gitea and GitLab) as well as fixture factories to create test users that can be re-used between tests.

The support for Mercurial was added and the semantic of the DVCS interface simplified. To allow for integration testing with Mercurial, GitLab will be replaced by Heptapod because it supports both Git and Mercurial.

The discussions related to the representation of users that exist on multiple forges and discussions with people running the Chapril forge led to the conclusion that security was an primary concern, even for experimental purposes. The operations that were previously carried out with a root token in the integration tests are now done by a unprivileged users. The various incarnations of a user on federated forges are represented by Identities that are loaded from the DVCS when Fedeproxy is initialized.

Where possible tests are implemented using the abstract interface rather than the concrete implementation: for instance test_forge.py exclusively rely on the forge interface. The concrete tests are only for forge features for which it is yet unclear what the interface will be, for instance the fork feature of Gitea).

Although the initial idea was to use the GitLab format to store Issues, it turned out to be hazardous and a new format was bootstrapped, and documentated. It is limited to issues and comments and used to implement the load/save functions.

The first release of fedeproxy was published June 30th and is in alpha stage. The next release is scheduled for July 31st. See the release notes for details about what they provide. The documentation is now published for each release.

In anticipation for UX testing, a few volunteers stepped up. More will be recruited by publishing a call and actively reaching out to people and organizations.

More technical details can be found in the development category of the forum.

Diversity

Resources and organizations that could help were explored and the conclusion was published as a blog entry and on the OSD forum. The next action will be to reach out to underrepresented groups to find early adopters.

The Key Performance Indicators (KPI) required by the organization funding fedeproxy were received and include diversity (page 8). The documented efforts to improve diversity will therefore be part of the grading of the project, a pre-condition for 13 of the money to be released.

Details on the work done to foster diversity are available in the forum.

Collaboration

Chapril forge

Loïc was onboarded as a maintainer of the Gitea based, Chapril forge and will spend two hours a week helping with the maintenance. Pierre-Louis also announced his intention to help with the maintenance of Chapril. This effort is accounted as time spent for the benefit of fedeproxy because it will provide an opportunity to deploy and monitor experimental versions of fedeproxy against the Chapril forge. These motivations were disclosed to the current maintainers of the Chapril forge in the introduction message proposing help.

Gitea

Gitea is more amicable to the idea of a native implementation of federated features in the near future than GitLab or GitHub. However the discussions started months ago are not making progress and no federated features are currently included in the 1.16 plan initiated in July for the next Gitea release. A 5K€ bounty was proposed but did not trigger any proposal. A grant application is being worked on to fund this work. The time spent by Loïc on this grant application is accounted as time spent for the benefit of fedeproxy because the ultimate goal is that it becomes redundant, when forges natively implement federation.

Heptapod

An additional effort has been made to support Mercurial and acknowledge that DVCS is not synonym of Git. It is facilitated by the availability of Heptapod docker images which can conveniently by used to replace the GitLab fixture and provides both Git and Mercurial support. Since Heptapod is a friendly fork of GitLab, it is the path of least resistance to contribute changes to GitLab: a patch against Heptapod has a higher chance of being reviewed than a patch against GitLab because the developers support fedeproxy from the beginning. A positive review of a patch against Heptapod means the patch has a better chance of being taken into account by the GitLab developers.

Forgefed

A first contribution to forgefed was merged. Another is under review and was discussed on IRC. In addition help was provided to bring the forgefed website back online.

Communication

A communication plan was drafted and will be set in motion in a few weeks. The collaboration initiated with existing forges (Heptapod and Chapril) led to discussions that clarified their expectations regarding fedeproxy. They may be inclined to relay messages related to fedeproxy if they are met.

The June 2021 monthly event happened, with Arnold, Pierre-Louis and Loïc. It was an opportunity to follow up on the discussions about multi forge web services and seeded the idea of reaching out to underrepresented groups when looking for early adopters. It turned out to be a good idea and will happen sooner than expected.

The July 2021 monthly event will happen July 31st.

Transparency and funding

A 5K€ grant earmarked for diversity was announced and a few ideas proposed to spend it. A decision will be made July 30th, 2021.

Because of exceptional circumstances (the pandemic) Pierre-Louis and Loïc will have an excess of funds (because there will be very little travel expenses) and they will be redirected for implementing federation in Gitea. The total amount is 5,000€ and will be released to developers who claim merged pull requests in Gitea, as long as they contribute to federation.

Loïc is considering increasing his involvement in fedeproxy. In the following months it will be on a volunteer basis and he will look for funding to keep going in 2022.

A HOWTO was published explaining how to make an earmarked donation to fedeproxy via liberapay.