Where to help with ForgeFed


Hello there,

I am motivated to work on ForgeFed but I am not really sure where I can help.

I know there is Vervis, but I would like to throw in the idea to maybe implement a simple, generic AP mock we can throw things into the inbox and send things to other outboxes, just for getting a feeling for AP. We then could extend the vocabulary step-by-step to simulate forgefed there.

Just thoughts, but I like the idea of the AP “mock” and will play around with that idea a little bit. :slight_smile:

Reference implementations and bridges

Hi @criztovyl!

There are definitely various ways to help :slight_smile:

Soon I will start writing a draft explaining the extensions and vocabulary I’m using. Ideas for things you can do that don’t need the draft:

  • Talk to the devs of existing forges such as GitLab CE, Gogs, Gitea, Pagure etc. and see if they’re open to changing their system to support federation and remote collaboration; make a list with the status of each forge’s feedback on this and willingness to support federation
  • Pick forge software such as the ones above and start patching it to support remote users in the database. For example, in an issue’s comments, allow a comment to be authored by either a local user or a remote user from another server.
  • Pick forge software and look into supporting the ActivityPub basics in it, such as storing remote actors and their HTTP signature keys in the database, and producing and verifying the signatures. And support for parsing and encoding ActivityStreams JSON(-LD) documents.
  • Generally, implement some simple ActivityPub client/server if you like, which can be used for playing with ForgeFed. I guess especially a client, because there don’t seem to be many ActivityPub clients

Soon I’ll be ready to deploy a basic federation test/demo. When that’s ready:

  • Test it, play with it, report bugs and feedback
  • Test it against other servers
  • Write a client, test with the client, report results

Once I start working on the draft:

  • Write comments, feedback, ideas
  • Implement it in an existing federated server
  • Implement it in an existing forge
  • Implement a CLI/TUI/GUI/web client


For tracking I will collect some links here :slight_smile:

GitLab: https://gitlab.com/gitlab-org/gitlab-ce/issues/4013
Gogs: https://github.com/gogs/gogs/issues/4437
Gitea: https://github.com/go-gitea/gitea/issues/1612

While looking into building an AP mock, if found ActivityPHP and JSON-NS.

ActivityPHP unfortunately requires all the properties in the JSON-LD data to be explicitly defined and fails otherwise (e.g. Mastodon/Pleroma publicKey), that makes it rather hard poking around in the Fediverse. I would prefer to ignore unknown properties, will open an issue for that ^^ Otherwise ActivityPHP seems fine, especially having the basic AP and AS objects (Like OrderedCollection) already implemented is nice.
(Or I learn go and use go-fed.)

JSON-NS seems to be interesting regarding the fact that I think (and was already discussed previously in ForgeFed context, if I am not mistaken) that not every AP software should be required to fully understand JSON-LD in all it’s complexity.

So far for now, I will maybe try to summarize and collect interesting things from the issues. (ForgeFed is already mentioned in the issues, except for GitLab.)


criztovyl -

im not sure exactly what you meant by a “mock”; but i think you are imagining something like the demo peers we are discussing in this thread: Reference implementations and bridges

as for ways to help, you could work on one of those, if you have experience with python, ruby, or golang - but there is one other thing that fr33domlover did not mention that i would put at the highest priority at this time; which is doing some CSS design for vervis - that is of course only superficial; but right now there is none - its just a MFWS - appearances are of little concern to implementers; but have a great impact on many people who would not see the beauty behind the plain face - so i would like to encourage anyone with design experience to help give vervis a make-over


Hello Bill,

yes, that „mock” I refer to is kind of a demo peer, but without any real implementation besides the handling of AP and just for experimenting around with AP, non-specific to ForgeFed.

Regarding vervis design, I tried to set up a vervis environment locally last week and did not get to finish it, had to abort the initial stack build downloading and compiling half of the internet (:D) and did not continue yet.


I am currently struggeling with setting up a local instance of vervis, to play a little bit around; where is the right place to ask for help in that case? :slight_smile:

My current issue is that I cannot run on http://localhost:3000/, vervis wants to run on https://localhost/ albeit being configured differently. I will try what happens if I configure https on port 443 and ignore cert errors in my browser. ^^


Thank you for trying and reporting :slight_smile:

I saw you opened a ticket on the Vervis ticket tracker, that’s indeed the right place! In addition, you can ping me on IRC or XMPP.

I commented on the ticket, and I’ll look into it soon :slight_smile: