Comment by lloeki

1 year ago

An interesting aspect of Forgejo is ongoing work on forge federation

https://codeberg.org/forgejo/forgejo/issues/59#issuecomment-...

In an ideal world github and gitlab would also support federation, but I guess that's probably not going to happen.

An alternative solution in the problem space would be going p2p, e.g https://radicle.xyz/

It's a shame "federation" these days basically just means "implement activitpub". So many projects get caught up in the complicated mess of mapping their data model onto AP, debating about how exactly to map things and writing standard extension proposals....

Useful federation between Forgejo instances could be solved with little more than OIDC and a few webhooks (cross-instance collaboration, forking, and PRs). Nobody needs federation between Forgejo and Mastodon - what would that even mean??

  • > So many projects get caught up in the complicated mess of mapping their data model onto AP, debating about how exactly to map things and writing standard extension proposals....

    Well, you either use an existing standard so you can federate with existing implementations, or you come up with a new standard and ask others to implement that. Seems they chose the simpler way, thankfully.

    > Useful federation between Forgejo instances could be solved with little more than OIDC and a few webhooks (cross-instance collaboration, forking, and PRs).

    What about federation between more software than just your own? Once you've done those things, you basically end up with another spec (but informal instead of formal) that others also need to implement. So instead of going the informal way, they aim for the formal one. That does sound appropriate to me.

    Slightly besides the point, but for someone who dealt more with decentralized/distributed systems than bloated authentication systems, it seems both simpler and easier to map+implement ActivityPub than implement OIDC+"a few webhooks", but that might just be because of my familiarity.

    I'll say that ActivityPub is a pretty simple standard though, compared to what's out there.

    • When I saw “federated github”, sharing activity feeds is not what I had in mind. I thought maybe making pull requests across instances or things like that.

      1 reply →

  • I tend to agree that ActivityPub seems pretty horrifying to work with (as an outsider). At least it works, though, and is implemented by a large amount of different projects and not owned by any single one.

    • > seems pretty horrifying to work with (as an outsider).

      As someone who both made my own implementation + hacked on others, what was/seemed to be the horrible parts? It's a pretty simple standard that is basically RSS with some added stuff (very simplified of course, before I got jumped) for facilitating the federation parts.

  • > Useful federation between Forgejo instances could be solved with little more than OIDC and a few webhooks (cross-instance collaboration, forking, and PRs).

    That would only solve the problem of "I don't have an account on this forge yet". The much more relevant problem is identity + reputation. With ActivityPub-based federation you can use your domain-bound identifier to contribute to various projects across servers and gain reputation and trust. If we use OIDC, then it is a lot less clear if the server, you authenticate with, is hosting the real franga2000.

  • It's already awkward just between Lemmy and Mastodon.

    I guess Lemmy could be in the form of issues on the repo and Mastodon would be thumbs up emojis and/or "starring" the repo.

    Yeah I wish there was a different protocol if we are jamming everything on top of it.

The federation page on the Forgejo Web site (https://forgejo.org/2023-01-10-answering-forgejo-federation-...) is out of date and most of the links don't work. They also used to publish annual progress reports until 2023 (on a Web site that no longer seems to be accessible: https://web.archive.org/web/20240830030315/https://forgefrie...).

Although the last mention of federation in a monthly update was in October, where they stressed that federation was and is their 'highest priority'.[0]

[0]: https://forgejo.org/2024-10-monthly-update/#:~:text=Forgejo%...

  • FYI: Just last Friday there was a call/meeting to coordinate and build out the federation efforts in Forgejo. More work is coming and more help is appreciated! There will be a presentation at FOSDEM on this topic and there is a matrix room dedicated to Forgejo Federation.

Over the years I've come to the conclusion that all these UIs on top of Git make little sense. Git itself is already distributed, which goes beyond federation. Exposing a Git repo over the network is trivial with HTTP or SSH. It supports code review workflows via email, though I really like the approach of storing reviews inside the repo itself via something like git-appraise[1]. Integrating it with CI/CD pipelines _can_ be simple, if the pipeline can be triggered by pushes.

Instead we've created these centralized UIs over Git, and are trying to get them to integrate with one another. This seems backwards to me since Git is already decentralized.

[1]: https://github.com/google/git-appraise

  • There's value in quickly browsing files of a project without needing to clone it first -- especially for quickly linking others to specific lines, API docs linking to implementation, etc. That needs to expose content at every commit, for stable links. So, some sort of a "web git viewer" is very useful.

    Unfortunately, the more minimal read-only ones have ended up with far worse UX than the Github clones, or are a scary tangle of shell scripts and/or C. :-(

    (Anyone want to collaborate on a Rust-based read-only git browsing web UI that aims for great usability? I'm all in, I want one. I know how to make it handle search etc, I'm not great at wrangling CSS to will or getting navigation right.)

  • I needed something like this 16 years ago at work to manage shared code, tickets, and code review of private code across a team of engineers. Code review for formal quality assurance was the most important need. I started with trac, then Phabricator, then GitHub enterprise. I just checked out git appraise to see how my nuclear and mechanical engineer friends would like it, and from what I see, I'm guessing they would not. We were using eclipse back then so maybe if that eclipse UI plugin still works it could work.

Really looking forward to the federation, hosting Forgejo for my own stuff while having discoverability/issue tracking with other instances would be the best of both worlds. As of now I'm mirroring stuff across self-hosted forgejo/github.com/gitlab.com where the forgejo instance is just part of my self-hosting hobby and not "load bearing".

I think that Gitlab Cells[1] might go into the same direction, there is a mention of federation in the design document.

[1] https://handbook.gitlab.com/handbook/engineering/architectur...

I would expect Gitea to merge back in federation functionality once it's stable if they get some help with it. IIRC that initiative started in gitea and I'm not aware of that level of animosity or divergence of goals between the two?