A forge is a software system(s) that facilitates the collaboration around digital assets. Most often it’s centered around a version control system and adds workflow based features to tackle the other aspects of shipping digital or digital derived efforts. I’d commit to saying “software” but forge systems have become robust enough that with some training and willingness you can enable multi-disciplinary teams to effectively interact in an asynchronous fashion.
Version Control Systems #
version control systems (vcs) provide a means of structured temporal interaction. There are many different software systems to facilitate vcs, notably the most popular of late is git, however examine some others if you’re interested:
Of the above, all are distributed by design aside from svn and cvs. Git is a DVCS. Github, Gitlab, Gitea are software forge systems that facilitate all kinds of work-flow around git (and, potentially other DVCS). Distributed version control facilitates peer review workflows via pull/merge requests. Pull/Merge requests are facilitated by a DVCS and a forge system simultaneously. The DVCS maintains the change state between branches while the forge system facilitates peer review. Aside from the pull/merge request workflow there are other opinionated workflows that are interesting, notably Phabricator favored patch based code reviews more akin to the way Linux operates as a project. Atlassian has some good documentation on getting started as well as comparison of work-flows.
Adding a section here was primarily to be able to have some opinion having used a variety of these systems. It should be noted that there are a lot of options but I’m partial to open source systems and… well github due to popularity. These opinions are partly as a user and mostly as a maintainer of these systems when engaging a moderately sized community.
Giving Phabricator as sort of honorable mention is important as it was a fascinating system to use if you wanted to bootstrap a community. There was far more to phabricator than just a conventional software forge, notably self contained blogging (phame), question/answer (ponder), and agreement systems (legalpad). It’s really a shame that phabricator/phacility are closing up shop. There is a fork effort underway called phorge, I hope that it gains a following as phabricator is extremely unique in just how many features it has out of the box for engaging with your community. The downsides to phabricator were essentially:
- most of the pheatures were notional or not fully baked (hiding these from users was sometimes difficult)
- upstream contribution was not easy, there were some prolific developers leading the project and they were naturally overwhelmed keeping the ship sailing.
- the opinionated patch based workflow is less accessible than the more popular git-flow model, also necessitated using a php based toolchain on your development machine (arcanist) to make the entire review process easier to manage.
Gitea (forked from gogs) is a fascinating project that appears to be significantly community developed compared to others. As a project it doesn’t seem to have any specific commercial ties, notably it has a cultural influence of being developed globally with Chinese involvement being noticeable/significant. There appears to be a significant fear of censorship efforts like the Great Firewall, the Russian splinternet and other nation state conflict that would result in the loss of access to western forge systems. These phenomena are talked about quite openly, for example in the Gitea hosted Gitea issue there is a key maintainer pointing out:
A large part of Gitea team is from China (but we also have maintainers in all other continents too), and if development team can’t access code then the user base will suffer, which is why we need development team to be able to access code. We build Gitea so everyone can use it, even users who are banned from GitHub (after recent ban wave from GitHub a lot of those users started using Gitea).
The nation state pressures are frustrating (take a peek at Diamond Age), however it’s probably the most interesting aspect to Gitea. It’s obvious that the centralized model of forge systems is a problem for resiliency, so Gitea is likely the first project that will implement federation. Several federated systems have manifested in recent years with ActivityPub emerging as a W3C standard. Some of the building blocks are in place and Gitea may be the first project to tackle this complexity. Gitlab, comparably, is still talking about maybe doing it. Federation of forge systems I believe is a significant feature for a couple market segments, notably Academia and the Public Sector where there is a significant amount of financial/energy investiture but mostly archaic ways to share and collaborate (although this is under attack from a variety of angles).
Gitea is mostly a dream to operate, it’s extremely small and not resource intensive in any way. The downside to gitea is that it’s using github as an upstream reference for what is good. The simplicity of the user facing objects is great for simple projects but something like Gitlab really shines through as being significantly more mature for complex collaboration. The config-cheat-sheet has grown over the years, making the initial instancing feel a bit overwhelming but most of the defaults are quite sane. There seems to be a race between Gitea and Gitlab to have more knobs to twiddle in the config, currently Gitlab is winning by a lot.
Github is unlike the other mentions here because it’s not open source. It does however seem to have the most active users and appears to be the first place that you’d discover most open source projects. I’d argue that the experience is the standard and certainly sets a baseline (e.g. for Gitea). The tight experience between repositories, pull requests, and actions really seem to solidify it’s popularity. Potentially its popularity is due to the number of users and the ease of discovery within the platform (or search systems driving to the platform), which would be to point out that it’s not necessarily primary features itself.
At one point in time there was a self hosted appliance option from Github but it doesn’t seem to be openly discussed/available now (e.g. their enterprise page makes no reference to it at the time of this writing). Self hosting for certain market segments (or ideologies) is extremely important. Github and Atlassian both have apparently closed that delivery mechanism. Notably Atlassian announced this recently then had a long (more than two weeks) extremely public outage.
There is a wild ecosystem of people building overlays for github that facilitate gaps, for example project management. Github itself has been rolling out more features to address this, but it feels as though there is more interest in something like copilot than to enable users to have threaded discussion.
Github is here, maybe to stay, it’s got so much momentum I wonder if it will be unseated. I’d hope that something like Gitea with Federation will make a significant dent. I’d not wish ill will on the Github ecosystem or its owners, but I think that there is something quite interesting in the necessary resiliency driving the desire for federation. Nation states, and the corporations that exist within them, have a complex relationship when it comes to sustained user membership.
- Deep dive into Gitlab
- Gitlab CI | Github Actions | drone | tekton
- Project Management
- Non-Software collaborative workflows (e.g. Gitlab Design Management)