Hi people! I’d like to share with you the work I’ve been doing related to project hosting. I haven’t written about it anywhere yet, so I guess this is also sort of an announcement. And you’re welcome to spread the word Since there’s no ForgeFed category at the moment, I’m posting in the ActivityPub category.
Long time ago, the software freedom movement started. And then came more ideas:
- “Free software, free tools” - this is the idea that you don’t just make free software, you also use free software for that process. Many many years ago this was difficult, but for a very long time we’ve had free software development tools. Sadly, there are still some popular proprietary limited tools, such as github.
- Software freedom when using software over the network - this is the idea that if you use some software as a service that runs on another computer, you still depend on this software and the freedoms you have with respect to it are important. The AGPL license was created, which allows you to write and publish free software service applications and require that derived works aren’t only free software, but they also provide the source such that when you access them even over the network, you’re using free software. The AGPL seems common in the free-sharing part of the community, but companies and profit-first entities have been slow to adopt this idea. For example, GitLab CE is free software, under a “permissive” license, and there’s the proprietary GitLab EE. And the popular gitlab.com server runs the latter, proprietary version.
- Decentralization: Instead of one entity running a service, there may be multiple instances of the service, allowing not to depend on a single provider. And the different instances may be communicating with each other. This is something we barely have. GitLab, githu8 etc. do allow login using accounts on other services, but you still get a separate user account and there’s no full transparent remote collaboration support or anything close to that.
- Federation: Different servers, possibly running different software, communicate with each other, forming a single network where users on different instances can transparently communicate and collaborate. We have this sort of thing for some social networking and blogging applications, that’s what we call the Fediverse. Servers communicating with OStatus and ActivityPub. There’s also plain old email, in which people send and receive messages across servers. But we don’t have project hosting support in the fediverse.
A few years ago, I started writing a project hosting platform called Vervis. And I always wanted it to federate! In 2017 there was a series of discussion among the Peers Community about the possibility of replacing NotABug instance of Gogs with a new federated forge system. That resulted in this NotABug-2.0 design document which outlines the motivation for and the essential features of such a system, without specifying any implementation details.
ForgeFed is a protocol and specification in development, for federating project and version control repository hosting. It started as a repository on githu8 a few days after githu8 announced their sale. This gained traction very quickly and a work-group formed soon afterward. In order to be maximally accessible, a mailing list was started for discussions, followed by a sister repository at NotABug.org (which runs free software Gogs). ForgeFed was chosen as the project name, CC0 as the license of the work, and ActivityPub as the base protocol for federation. (Note: unfortunately the last vote for licensing was unclear and more-so unfortunately the githu8 repo has a no-derivatives license before anyone voted. I think we need another vote to make a final decision; either way all my own work has been CC0, and I must say I prefer consensus-based decisions over majority-wins votes)
During the last few months I’ve been working on research and implementation of the federation, based on ActivityPub and related technologies into Vervis. And things are going really well!
Since all that discussion, what’s been happening with ForgeFed? I’m here to tell you
- Vervis has a somewhat confusing and not-exactly-shiny UI, but it’s been self-hosting its own code and issues etc. and I’m implementing federation on it to build the ForgeFed protocol
- It’s based on how ActivityPub is used on the Fediverse, with some changes and extras
- Soon I’ll start writing a specification of how federation works
- Forming a standard vocabulary will require collaboration of the existing forges, such as GitLab, Gitea and so on, and I suppose also the proprietary ones like githu8 if they decide to participate
- I hope my specification draft and my implementation in Vervis will attract interest and collaboration from forges, developers and communities, both established and new, so that we can refine the draft and the concepts into a polished protocol and get it implemented in forges and turn all the many many lonely islands into a single big federated network.
How to participate
Soon there will be 2-3 Vervis instances running my federation demo, and I’ll announce it and invite everyone to test it.
Vervis doesn’t have a good UI, and there’s no client program of any kind. Any help with that would be highly appreciated, but there’s something much more important: Motivated people willing to work with me and the community on implementing ForgeFed in other forges! Such as GitLab, Gitea, Gogs, Pagure and so on.
Places for discussion:
- The Vervis ticket tracker, here
- The ForgeFed development repo at NotABug.org, here
- The SocialHub forum, here
- Freenode IRC channels
- All the usual federation related IRC channels on Freenode (such as
#feneas) and on W3C IRC (such as
- The Matrix rooms corresponding to these IRC channels
There’s also the mailing list, but I suggest we use SocialHub instead and keep the mailing list just for the archive.
Technically there’s also the repo on githu8, but I’d like to recommend and ask you not to use it (githu8 is proprietary and centralized, among other reasons, both technical and political I’m afraid), and switch all new work and discussion to the resources I linked above.
My work isn’t anything officially voted or chosen, and I don’t represent anyone except for myself. But I’ve been working on project federation and I hope we can all work together in the community and make it happen!!!