[FEAT] implement federation #59
Labels
No labels
arch
amd64
arch
arm6
arch
arm64
arch
arm7
arch
riscv64
backport/v1.19
backport/v1.20
backport/v1.21/forgejo
backport/v7.0/forgejo
backport/v8.0/forgejo
backport/v9.0/forgejo
breaking
bug
bug
confirmed
bug
duplicate
bug
needs-more-info
bug
new-report
bug
reported-upstream
codeberg
database
CockroachDB
database
MySQL
database
PostgreSQL
database
SQLite
dependency-upgrade
dependency
ACT
dependency
alpine
dependency
asciinema-player
dependency
bleve
dependency
cache
dependency
certmagic
dependency
chart.js
dependency
Chi
dependency
Chroma
dependency
citation.js
dependency
codespell
dependency
css-loader
dependency
devcontainers
dependency
dropzone
dependency
editorconfig-checker
dependency
elasticsearch
dependency
enmime
dependency
F3
dependency
ForgeFed
dependency
garage
dependency
Git
dependency
git-backporting
dependency
Gitea
dependency
gitignore
dependency
go-ap
dependency
go-enry
dependency
go-gitlab
dependency
Go-org
dependency
go-rpmutils
dependency
go-sql-driver mysql
dependency
go-swagger
dependency
go-version
dependency
go-webauthn
dependency
gocron
dependency
Golang
dependency
goldmark
dependency
goquery
dependency
Goth
dependency
grpc-go
dependency
happy-dom
dependency
Helm
dependency
image-spec
dependency
jsonschema
dependency
KaTeX
dependency
lint
dependency
MariaDB
dependency
Mermaid
dependency
minio-go
dependency
misspell
dependency
Monaco
dependency
PDFobject
dependency
playwright
dependency
postcss
dependency
postcss-plugins
dependency
pprof
dependency
prometheus client_golang
dependency
protobuf
dependency
relative-time-element
dependency
renovate
dependency
reply
dependency
ssh
dependency
swagger-ui
dependency
tailwind
dependency
temporal-polyfill
dependency
terminal-to-html
dependency
tests-only
dependency
text-expander-element
dependency
urfave
dependency
vfsgen
dependency
vite
dependency
Woodpecker CI
dependency
x tools
dependency
XORM
Discussion
duplicate
enhancement/feature
forgejo/accessibility
forgejo/actions
forgejo/api
forgejo/branding
forgejo/ci
forgejo/documentation
forgejo/email
forgejo/federation
forgejo/furnace cleanup
forgejo/i18n
forgejo/moderation
forgejo/privacy
forgejo/release
forgejo/scaling
forgejo/security
forgejo/time-tracker
forgejo/ui
forgejo/wiki
Gain
High
Gain
Nice to have
Gain
Undefined
Gain
Very High
good first issue
Incompatible license
issue
closed
issue
do-not-exist-yet
issue
open
manual test
Manually tested during feature freeze
OS
FreeBSD
OS
Linux
OS
MacOS
OS
Windows
QA
regression
release blocker
Release Cycle
Feature Freeze
release-blocker
v7.0
release-blocker
v7.0.1
release-blocker
v7.0.2
release-blocker
v7.0.3
release-blocker
v7.0.4
release-blocker
v8.0.0
release-blocker/v9.0.0
run-end-to-end-tests
test
manual
test
needed
test
needs-help
test
not-needed
test
present
untested
valuable code
worth a release-note
User Research - Accessibility
User Research - bug
User Research - Config (instance)
User Research - Dashboard
User Research - documentation
User Research - Errors
User Research - feature
User Research - federation
User Research - Filters
User Research - In the Future
User Research - Labels
User Research - Moderation
User Research - Needs Input
User Research - Notifications
User Research - release
User Research - Repo creation
User Research - Repo Units
User Research - security
User Research - Settings (in-app)
User Research - testing
User Research - UI
User Research - UX
No milestone
No project
No assignees
15 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: forgejo/forgejo#59
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Update June 2024: this issue is no longer updated. Progress on federation can be followed from:
forgejo/federation
This issue tracks the progress of implementing federation in Forgejo.
Ongoing tasks (updated monthly)
Tasks backlog
Discovery
This is done.
WEB_DOMAIN
variable. This enables federation for instances using a subdirectory)Actors
This is almost done.
ForgeFed
go-ap
Adding ForgeFed types to go-ap Mastodon discussion, mailing list discussion
Serving ActivityStreams
Processing ActivityStreams
attributedTo
matches HTTP signatureDatabase representation of remote data
User eXperience and User Interface
See https://gitea.com/xy/gitea/issues/8 for discussions
authorize_interaction?uri=
page (like Mastodon)Migrations
See https://gitea.com/xy/gitea/issues/9
Interoperability
Moderation
See https://gitea.com/xy/gitea/issues/10
Contributing
If you'd like to help out with forge federation but don't know where to start, the links below might be helpful.
General
Some high-level links for learning about forge federation and the bigger picture
ActivityPub
Resources for learning ActivityPub (AP)
ForgeFed/F3
Forge federation protocol based on AP
Go-Ap
A lightweight AP library in Go that Gitea is using for implementing federation
Running federated Forgejo
You can also help federation development by running federated Forgejo and reporting bugs and regressions.
forgejo-federation
branch. If you would like to build a Docker image, there is aDockerfile
in this repo. If you would like to build a binary, install Go and Node.js and then runTAGS="bindata" make
.ENABLED=true
in the[federation]
section of your config file.I'm in favor of creating a forgejo-federation feature branch. AFAICT forge federation is a goal shared by all people involved in Forgejo.
@xy are there are changes in the
forgejo-federation
branch that should be merged in v1.20?Just to add to the mill: be aware that the French CHATONS collective is very eager to see this feature implemented. Indeed, some of us know each other, and we personnally maintain quite the database of login/passwords to contribute to our comrades forges and repositories. Be it documentation, infrastructural code, or even free projects forks and patches. Many of us used to run Gitea, and e.g. Deuxfleurs (the chaton I participate in) notably moved to Forgejo already.
See this forum post (in French): https://forum.chatons.org/t/federation-de-forges/1869
So I'm not the only one to believe that enabling federation between Forgejo instances would be beneficial to free software at large. It would tighten our infrastructural bounds, improve our capacity to contribute, and allow us to produce more generalistic software more easily.
Very glad to see you have a NLNet partnership towards this end!
Unfortunately no, since I am once again busy with something else at the moment, but hopefully I'll finally be able to resume work on it later this month.
With GitLab implementing federation, it would be great to see Forgejo do the same
@ip GitLab does not implement federation and never will, because it would hurt their business model. GitLab restricts the direction in which you can mirror git repositories, this is where they stand. If you want git mirroring in both directions you are required to acquire a proprietary license. That's telling you how far away they are from even the idea of federated forges 😄
That being said, I'm working on implementing federation in Forgejo and there is a lot to do. Would you like to help? There is no need to have particular skills. Just time.
GitLab is working on implementing federation between GitLab instances1.
Only for merge requests for now iirc, but one of the people implementing it, said they will consider ForgeFed when also implementing support for other stuff2.
But yes, they will probably limit some stuff like they do with mirrors, because of them being a for-profit company.
https://gitlab.com/groups/gitlab-org/-/epics/11247 ↩︎
https://gitlab.com/gitlab-org/gitlab/-/issues/21582 ↩︎
That's a lot of activity and I missed it completely, thanks for the pointers. Are there merge requests to implement that already? When you write "GitLab is working" do you mean that all these epics / issues originate from GitLab employees in their official capacity? Or is it more of an initiative from people in the GitLab community but not necessarily endorsed by GitLab? It would actually be better news if it was the later.
I'm not really sure how far it's done, I'm not active in the GitLab community, I just heard about it from a friend.
I'm also not sure how much GitLab as a company is involved here, If I remember correctly, the federation stuff is primarily implemented by a community member and not by GitLab itself, but don't call me on that, I lost track on all of these issues/epics/merge requests.
@marie it's a lot, some going back five years. But it's good to have that revived. I wish there would be merge requests but I can't seem to find any just yet. If you ever see one and you remember this conversation when it happens, I would love to know.
@earl-warren There is one, but I know neither Gitlab nor ActivityPub.
I think GitLab's activity is a bit off topic for this issue, but here's my understanding:
I don't want to diminish the work being done for GitLab at all. I think it's great to see movement there, and so long as it's done in a thoughtful and interoperable way (and every sign so far indicates that that's the intention), it will be good for the entire ecosystem including Forgejo. It's very exciting to see we're not the only ones working on it.
But it's important to be aware of the limits of what's being done at present - on both sides - and not be drawn in by hyperbole.
Sorry for contributing to derail this topic. I created a new topic in the forgefriends forum where other GitLab related efforts were tracked in the past.
Keep it up! May the Source be with you! Is there a group for testing calls for the federation thing?
No group yet.
Any news on this awesome project? 😃
It is great that you find it awesome. As you will see in following the links at the top of the issue, there is daily progress. Nothing usable just yet though. if you know of someone (all kinds of skills are needed) willing to help, please ask them! There is much to do.
This is a great idea. Can't wait to see forgejo instances federate seamlessly some day :)
I'd like to help but I'm not a professional coder. I'll try and run a docker container of the project and start reporting bugs. I do the same for Mastodon, Lemmy and Matrix. My limited Python and C# knowledge doesnt seem to be of much help atm. Feel free to lmk if I can do anything else. (I made an account just to voice my support in this. Git+Federation is going to change everything imo.)
P.S.: I think there should be much more updates to the state of federation in git forges (if that is the correct term even) because a lot of us fedi folk are looking forward to it but its hard to find which project is ahead and when we can start testing, etc. Obviously, the fediverse would be great for such updates. I would help with that too if needed.
It has come to my attention that there are onlookers that regularly check this this thread because they are curious about the status of federation in Forgejo. For this reason (hello strangers 👋), it might be worth mentioning here that this issue is not a declarative source and that Forgejo's monthly updates are worth checking out.
As of March 8, 2024, some of the PRs that may be worth taking a look at can be found here:
This list is not exhaustive and will get outdated fast (and I'm also not a reliable source because I don't actively work on those features :D). The pull requests marked using the labels forgejo/moderation and forgejo/federation may be worth checking out, as well as f3.forgefriends.org and forgefriends.org.
Forgejo's Issues and Pull Requests are a place of work and there is a dedicated repository for discussions (both of these places are subjected to Forgejo's Code of Conduct).
<namespace>/<repo>/_diffpatch/<branch>/
endpoint ignores the metainformation within the patch #3063'we will contribute the federation code upstream to Gitea.' https://forgejo.org/2023-01-10-answering-forgejo-federation-questions/#will-gitea-also-gain-federation
Is that still the plan after the hard fork?
Well, yes. And Gitness and Gogs really. Whoever needs it. Will it be easy? Not really. But what would be the point of federation of some forges are left behind?
This issue is no longer updated. Progress on federation can be followed from:
forgejo/federation
Although it still lacks a user friends UI, the first federated feature was merged recently (federated stars). Things are moving forward.
@earl-warren I can't find an issue about opening issues from other Fediverse platforms (e.g. Mastodon). Is it planned?
That would be a great addition, because registration wall is a big problem for small self-hosted forges.
From the reports I'm not positive I know when and how to use federation. I dont see any Q&A entries either that touch the topic. My version (7.0.4) does also not show any federation entries. Can someone point me to the correct info?
Nobody knows. It will be ready when it is ready. There is much to do and it is progressing but help is much needed. Would you like to give a hand? Or know someone who would?
@silverpill there is no such issue but this is something I'd like to use as well. Last week my contribution to the effort was helping setup the test environment to launch a GitLab instance so it can be connected via ActivityPub to a Forgejo instance. https://code.forgejo.org/forgejo/end-to-end/pulls/207
I recommend you follow the reports, that's currently the best way to keep up to date. And if you ever know someone willing to participate in the implementation, they would be very welcome. There is a need for a lot more workforce.