From 073929b4e7af6a31b018d4b954c0418d856d0356 Mon Sep 17 00:00:00 2001 From: Anthony Wang Date: Wed, 20 Jul 2022 09:03:10 +0800 Subject: Update 'July presentation' --- July-presentation.md | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 July-presentation.md diff --git a/July-presentation.md b/July-presentation.md new file mode 100644 index 0000000..d0d8a40 --- /dev/null +++ b/July-presentation.md @@ -0,0 +1,77 @@ +--- +title: "Gitea Federation Development" +author: "Anthony Wang" +date: "2022-07-20" +theme: "Berlin" +--- + + +# Current progress + +## Gitea main + +- Not much currently, but the building blocks are there. + - User keypairs and HTTP signatures + +## Pull request #20391 + +- Adds backend for federated following, starring, issues, forks, and pull requests +- Task list: + - 36/84 = 43% done! +- Federated following demo: + - Go to https://YOURFEDIVERSEINSTANCE.com/authorize_interaction?uri=https://git.exozy.me/api/v1/activitypub/user/Ta180m + +# Steps to implement a federated feature + +## Step 1 + +- Think about and **conceptually design** the feature. +- Example: We can support account migrations using a `Move` activity like what Mastodon does, and we'll need a UI to migrate all of an account's repos. + +## Step 2 + +- If there are spec-level changes, **contribute them to ForgeFed**. +- Example: Submit a PR to ForgeFed documenting the usage of `Move`. + +## Step 3 + +- **Implement** the feature in Gitea. +- Example: Write backend code for sending/processing `Move` and implement the UI. + +# Upcoming challenges + +## Frontend/UI + +- I'm temporarily using some Ruby scripts and handwriting AS objects, but that won't work long-term. +- I predict this will be tricky and time-consuming, so we should start now. +- Reuse current Gitea UI but add federation handling to internal functions? + - Example: Use current create new issue UI, but handle federated issues in `issues.CreateCommentCtx()`. + +## Federated collaborators and organizations + +- Federated collaborators: + - How to handle Git push? + - How to handle settings synchronization? +- Federated organizations: + - A huge headache due to all sorts of crazy scenarios that can happen. + - Example: User on instance A is in a organization on instance B and forks a repo located on instance C to the organization. + +## Permissions and private repo federation + +- fr33domlover is working on OCAP in ForgeFed. +- Another simple solution is to use HTTP signatures for authentication. + - Example: I would like to view open issues on a remote private repo, so my instance uses my private key to send a signed request to the remote instance's Ticket actor endpoint. + +## Contributors + +- I won't have much time over the next two weeks to work on Gitea. +- Both Loïc and I posted calls for help on the fediverse, but no one has showed up yet. +- Contributions to my Ta180m/gitea fork highly welcome! +- Gergely Nagy set up daily Docker builds of my Gitea fork, so it'll be easy for testers to try it out. + +## Moderation + +- Blocking instances + - Add each remote instance as a login source, then you can disable login sources in the admin UI? +- Blocking users + - Any ideas how to do this? -- cgit v1.2.3-70-g09d2