Add two Forgejo federation drafts

This commit is contained in:
Anthony Wang 2023-01-10 21:48:48 +00:00
parent 1d4dd5d96e
commit 59ae6e5d13
Signed by untrusted user: a
GPG key ID: 42A5B952E6DD8D38
2 changed files with 85 additions and 0 deletions

View file

@ -0,0 +1,31 @@
---
title: "Answering Forgejo Federation Questions"
date: 2023-01-10T21:47:26Z
draft: true
description: "This post answers some commonly asked questions about Forgejo federation"
type: "post"
tags: ["federation", "forgejo", "activitypub"]
---
### Is Forgejo federation development being worked on right now?
Yes. You can find an up-to-date task list [here](https://codeberg.org/forgejo/forgejo/issues/59).
### When will federation be released?
Forgejo federation will be merged into mainline Forgejo through two (or more) pull requests. The first pull request, which will be submitted later this month, includes backend support for some basic federation features like following remote users, opening issues on remote repositories, and blocking instances. A second pull request will include a UI for federation, more moderation features, and backend support for federating all of Forgejo's features, such as adding remote users as repository collaborators. Federation will most likely be included in Forgejo 1.19, which will be released in a few months.
### Will Gitea also gain federation?
Most likely yes. We want as many forges as possible to be federated, so we will contribute the federation code upstream to Gitea.
### What's F3 and how does it relate to federation?
A lot of difficult and seemingly unrelated problems like migrating projects, federated pull requests, and mirroring issues actually have the same solution. A project's code is stored using Git and can be easily migrated, but the issues, pull requests, and project metadata are stored in the database. If only we had a common format for representing all the various components of a project and code to serve and store project components using this format... then mirroring issues would be as easy as fetching remote issues in this format and storing them on our instance. I know, [let's make our own format](https://xkcd.com/927/)!
And that's why F3 was created. It's a JSON format closely based on how projects are internally stored in Forgejo's database. Unfortunately, there are also 14 competing standards, most notably the [ForgeFed vocabulary](https://forgefed.org/vocabulary.html). Since the rest of Forgejo federation uses ForgeFed, we're currently spending a lot of effort on merging the F3 and ForgeFed formats into a single standard.
### Further reading
If you thought this post was helpful, you should read [Forge Federation Myths](/posts/forge-federation-myths/). Note that it predates Forgejo, so you might want to mentally `s/Gitea/Forgejo/g` while reading it.

View file

@ -0,0 +1,54 @@
---
title: "Forgejo Federation Design Overview"
date: 2023-01-09T21:19:27Z
draft: true
description: "A deep dive into the design of Forgejo federation"
type: "post"
tags: ["forgejo", "federation", "activitypub"]
---
This post describes the details of the design of [Forgejo federation](https://codeberg.org/forgejo/forgejo/issues/59).
## Identity
Forgejo, like most ActivityPub implementations, uses WebFinger to resolve @user@instance.com usernames to IRIs.
Likewise, Forgejo signs all activities using HTTP signatures
An interesting application of this is private repository federation.
## Common data format
A lot of seemingly difficult problems like federated pull requests, mirroring entire projects including issues, and migrations are
F3, ForgeFed vocabulary
Mirroring
Migrations
## Consistency
Write about primary-secondary replication for federated collaborators
Performance/scalability
Redirect Git pushes
## Moderation
Blocking users and instances
Rate-limiting and spam
## UI
Better AP UI? Fetch data from original instance instead of your instance? Performance problems?