Federation in Gitlab - NLNet grant proposal maybe? (December 2022)

I started watching forgefed because I felt frustrated every time I wanted to report a bug or contribute a patch only to find out that I had to create yet another forge account, or worse, couldn’t participate because the particular forge had registrations disabled. At ANSOL we’re running our own instance of gitea, but keep some mirrors in github and gitlab to enable drive by contributions, particularly during Hacktoberfest.

I’ve been lurking in the ForgeFed matrix room for a while, and recently saw these messages:

[…] getting funding to work on implementing forge federation in GitLab would make a lot of sense. Only nobody applied so far. […] The problem is not so much to get funding, that’s not the hard part. Finding someone with the will, skills and stamina: that’s the real problem.

I’ve been working freelance for some years now, and I haven’t booked anything for 2023 yet, so I thought I might work with you on getting federation working on Gitlab (or a more libre fork). I used to manage the gitlab instance for a company I used to work for, and I have plenty of ruby on rails experience. I don’t know much about Vue, but I have experience in other frontend web frameworks.

I’m aware that gitlab federation is being tracked on #174 - Federation in GitLab CE - ForgeFed - Codeberg.org, and that Gitlab’s interest in implementing/merging forge federation is probably not that high.

Do you think it would be interesting to apply for a grant to work on implementing federation in gitlab? Do we need to convince gitlab somehow that merging this is a good idea, or is working with a fork enough? Should the focus of the grant be the technical part?

I never applied for grants, so your feedback and suggestions are welcome.

5 Likes

Welcome! This topic
gives an idea of the process.

Forge federation for gitlab would be awesome for many projects, including those who are selfhosting gitlab.

2 Likes

Yay! Yes! We need this so much! Someone willing to work on GitLab federation! I’m excited!

I’m not a software project diplomacy expert, but I believe it would be beneficial to get the federation code into GitLab itself. Maintaining a fork is the less preferred option, but it’s possible if the community and the GitLab company fail to cooperate.

I guess the 1st step would be to assess the general structure / architecture for adding federation to the GitLab codebase? Which may involve steps such as:

  • Find out which tech GitLab is planning to use for its GitLab-to-GitLab “internal federation” feature
  • Find out which DB schema changes GitLab is going to do for that - can they be the basis for ActivityPub-based federation as well?
  • Figure out a high-level plan for adding actors, inboxes, outboxes, following, delivery, to GitLab’s backend, while trying to reuse existing implementations (e.g. Mastodon is in Ruby as well)
  • Talk with people from the GitLab company about these items, and see how they feel about the plan - can we all work together? Would they be willing to review your PRs? Would they be willing to expand their internal federation roadmap, to include “open” fediverse federation as well?

I suppose you can apply for NLNet funding; the application form doesn’t require you to fill in the exact work plan yet. So you’d have time to explore the situation and come up with a plan by the time NLNet asks for it.

3 Likes

I think it would be interesting and also that you would get support letters to support your grant application. In addition to the link @onepict provided (very boring read but totally worth it), I’d like to add that GitLab is very unlikely to merge a patch for federation, because it goes against their commercial interest. For instance the git mirroring is only implemented one way, mirroring both ways is a proprietary feature. If you need more clues, there is a collection of issues related to federation that did not make progress over the years in this topic.

In your grant application, I suggest you plan to send a merge request with federation features to Heptapod.net instead, which is a GitLab fork maintained by @gracinet. And he recently said he would be happy to review such a merge request.

1 Like

I’ll be writing the proposal in the next couple of days. I’m having some trouble moving forward because it is a bit hard for me to understand the current state of forge federation and what the current grants are focused on. If someone could help clarify things for me, here are a few questions / my current understanding of things:

  • Is the spec in a finished/usable state, or is it planned to be finished by the time this grant would be approved? (meaning: can I implement it without having to worry much about it being incomplete?)
  • Which forge implementations have federation working, that I could use today (or when the grant would be approved) to test interoperability?
  • This August grant is for implementing federation in gitea, and work will start roughly in December. Is there anything already working today?
  • This October grant is for publishing an official spec and implement things in Vervis, a kind of reference implementation for forge federation. Is there anything already working today?
  • There’s some references to moderation being important to codeberg (understandably), but no one actively focusing on that, and the current grants don’t explicitly mention it in their work plan (so any work I plan on doing re moderation will be from scratch, wrt forges, although it can be based on other fediverse studies/implementations)

I think it would be interesting and also that you would get support letters to support your grant application.

@dachary given the current timeline, I don’t think there will be time to get these written, but who were you suggesting would write these?

I suggest you plan to send a merge request with federation features to Heptapod.net instead

This sounds like a good plan, thank you for the recommendation.

If by spec you mean forgefed, it is still in flux.

Vervis and Forgejo is likely to be the next one in a few months.

@fr33domlover is the one working on this and will be able to comment.

In the context of GitLab it is likely too much and IMHO you should not worry about moderation.

It’s a little short indeed. I would be happy to provide you with a recommendation.

@hugopeixoto, ForgeFed is going through tech stack changes, so the spec is unstable, but all of us here will be working together in coordination. I can happily give you an overview of the technology and you’d have plenty of work to do in GitLab :stuck_out_tongue: essentially same work that is being done in parallel in Gitea/Forgejo and in Vervis; and GitLab joining in would be great! Vervis and Gitea/Forgejo are already a few steps ahead so you should be able to test your code against them.

Here’s a copy of the text so far: Forge federation in GitLab-like forges (NLnet grant proposal) - HedgeDoc

I appreciate any feedback and/or endorsement letters.

I am planning on submitting it late Wednesday (around midnight).

It looks good and I’ll write a letter of recommendation later today.

A suggestion: in the part And if so, can you tell us a bit about your contributions? could you add URLs to some contributions that show your Ruby skills? And any other forge related work you may have done in the past would also help a little, I think.

In the compare section you may also want to mention Forgejo and @Dodecahedron’s work in particular at #59 - [FEAT] implement federation - forgejo - Codeberg.org. There is also F3 that could be helpful to sync projects (or part of them) between GitLab and Forgejo. And the F3 integration with Forgejo that is in the works.

A suggestion: in the part And if so, can you tell us a bit about your contributions? could you add URLs to some contributions that show your Ruby skills? And any other forge related work you may have done in the past would also help a little, I think.

Thanks for the suggestion. While rereading it, I noticed that it isn’t clear that I meant the actual framework and programming language codebases, so I reworded it a bit and added a link to a list of FOSS contributions I made. Unfortunately, I don’t think I ever contributed to a forge.

In the compare section you may also want to mention Forgejo and @Dodecahedron’s work in particular at #59 - [FEAT] implement federation - forgejo - Codeberg.org.

Is this the same as the work being done in the gitea federation grant? I mentioned “federation in gitea” because that was the title of the grant, but I can add a reference to Forgejo.

Yes, it is the same.

I did not know that ANSOL has a Gitea instance, I added a link to https://git.ansol.org/ in the pad. Here is a short recommendation. It is not much but that’s what I can provide before the deadline :smile:


Dear NLnet,

Software Forges are used by most Free Software developers but do not, unfortunately, communicate with each other. In the past few years work started to change that status quo and NLnet funded an effort to that end in Gitea.

Unfortunately the efforts to federate GitLab are at a standstill. It is however the most popular self hostable Free Software forge and implementing ActivityPub could have a major impact.

Hugo Peixoto https://hugopeixoto.net/ is both a Ruby developer and a long time activist involved in ANSOL, a Portugal based non-profit dedicated to Free Software. His willingness to engage in a work to implement ActivityPub in GitLab is a rare opportunity and allowing him move forward with financial support would be a great move.

Loïc Dachary - Free Software developer working on implementing federation features in Forgejo

Thank you for the recommendation, that’s very kind. I’ll submit this later today.

I did not know that ANSOL has a Gitea instance, I added a link to https://git.ansol.org/ in the pad

The gitea instance is fairly new (early 2022). We used to have a phabricator instance, but managing it was not easy and its usage wasn’t as obvious to those used to other forges, so we ended up moving. We considered gitlab but its open-core nature pushed us to gitea. When proposing the migration, I did mention that self hosting without open signups would decrease the number of drive by contributions, and that it was being fixed by the nlnet grant, so this is all connected.

ANSOL publishes quarterly newsletters with a summary of our activities (the gitea release is buried somewhere in there), but it’s in portuguese: Noticias | ANSOL - Associação Nacional para o Software Livre

1 Like

I got a submission confirmation 2 days ago:

this mail serves to acknowledge receipt of your grant application “Federation in GitLab-like forges”

1 Like

Got an email with some questions regarding the proposal:

You requested 50000 euro, which at a rate of 60 euro/hr means about 833 hours. Can you provide some more detail on how you arrived at that time estimate? Could you provide a breakdown of the main tasks, and the associated effort?

GitLab was not designed for federation, and is as you mention vast. Doing this with support from upstream would save a lot of time. Have you contacted GitLab on whether they are interested in this effort?

What is your relationship to Heptapod […] and Octobus? How viable do you consider this effort? Is the Mercurial angle enough to get critical mass with users? Will you cover both versioning systems in your federation implementation?

Can you reflect on the ForgeFed specification, and to what extent it would allow for a bridge application to interface with GitLab (a la Bridgy) - rather than going into the rabbithole of implementing in their codebase?

You mention creating a ForgeFed gem, and also that there is no suitable ActivityPub gem. Would the former involve creating a solution for the latter?

If anyone has any feedback regarding the bridge application question, I’d appreciate it.

Received the rejection email today:

we have identified the projects we will be entering negotiations with for the latest NGI0 Entrust open call. I’m sorry to have to inform you that your project “Federation in GitLab-like forges” (2022-12-131) unfortunately was not among those selected.