If you are frustrated with Github being down again, and just want an alternative, the other options listed are better fits. If you have the time to look at doing more than that, then check out fossil https://fossil-scm.org/home/doc/trunk/www/index.wiki
- It isn't git
- Works best with smaller teams
- You need to be ok self hosting (single binary, easy to do)
The first point is really the killer. It is revision control, it is as good as git (maybe better), but it is different. Git = branches are easy, was built to support Linux's lieutenant development model, and a massive, loosely connected team. Fossil = branches are intentionally hard, built to support a small, tight knit team (SQLite).
Most teams I've been on are closer in size to SQLite than they are to Linux, but everyone already knows git at a gut deep level. YMMV.
I've sorta overlooked Fossil a lot (mostly because it's not git...), but just browsing some instances on chisel and the fossil homepage has me intrigued.
If you'll entertain me for a moment...
My dream "forge" would just be nice-looking frontend for displaying repos on the web, a public issue tracker (with per-issue permissions), a public way to submit issues, and essentially a single canonical root for repositories that users on the team work on. I don't want individual user repos or pages, organizations, or any social stuff. I definitely don't want open registration.
It really looks like fossil is actually what I've always wanted.
How limiting is the custom theme support? It looks like you can just straight up write your own HTML/CSS for everything. If I really want a custom design, will I be disappointed in the long run?
Also, it looks like it follows that user model I want, where it's "repositories with users" instead of "users with repositories". Is that correct?
And here I was trying to hype myself up to write my own git web frontend.
I can entertain you since no one else has so far. I've been using Fossil since 2009.
> My dream "forge" would just be nice-looking frontend for displaying repos on the web, a public issue tracker (with per-issue permissions), a public way to submit issues, and essentially a single canonical root for repositories that users on the team work on.
Fossil will get you the frontend (for some value of nice-looking) for displaying repositories on the Web. It will also get you the issue tracker, which can optionally be public[0].
For products you're developing that involve multiple repositories, it's possible to use a "meta repository"[1] to establish what's called a login group in a way that's vaguely reminiscent of using, say, Kerberos as an adjunct to /etc/passwd. You still have to ensure that the users exist in the user information table on the joined repositories[2], but the password information will at least be synchronized.
> I don't want individual user repos or pages, organizations, or any social stuff. I definitely don't want open registration.
There's some social stuff if you find later that you want it. Fossil development moved from a more traditional mailing list to a self-hosted forum a while ago, but it isn't enabled by default.
You can use tech notes as a sort of micro-logging facility in the same vein as snippets if you're familiar with how Silicon Valley companies sometimes have cultures of personal status updates. I'll admit that I've gotten a fair amount of use out of this.
I'm honestly not sure if open registration is possible. I've never had an excuse to try it.
> How limiting is the custom theme support? It looks like you can just straight up write your own HTML/CSS for everything. If I really want a custom design, will I be disappointed in the long run?
If you stick just to HTML and CSS, you should be fine. The functionality is pretty spartan.
> Also, it looks like it follows that user model I want, where it's "repositories with users" instead of "users with repositories". Is that correct?
Yep. The repository itself is what has the user information.
> For products you're developing that involve multiple repositories, it's possible to use a "meta repository"[1] to establish what's called a login group
Gotcha; that makes sense considering how users are handled.
> There's some social stuff if you find later that you want it. Fossil development moved from a more traditional mailing list to a self-hosted forum a while ago, but it isn't enabled by default.
That all sounds reasonable (this + the tech notes you mention next). I generalized a bit too wide when I said "social stuff". I was thinking more along the social media angle (GitHub stars, follows, etc.); but with the way it sounds, that wouldn't make sense given the user model anyway!
I currently run a Forgejo instance for a small team, and I can disable some of those features, but it just feels a bit messy with so many UI elements that don't have a purpose.
> If you stick just to HTML and CSS, you should be fine. The functionality is pretty spartan.
I think I'll have to try it out to see what is possible on this front!
> This is governed by the capabilities assigned to a user. [...]
Between this and login groups, it actually looks quite reasonable to manage a set of repositories in the way I'd like! I really dig everything being so tightly coupled to a given project, actually. Makes me a bit bummed I never gave Fossil a look all these years.
> 2: Funnily enough, it shares the same pain as administering Plan 9's fossil(4) fileserver.
Reading that over, I can see how that requires some due diligence. I already foresee the inevitable "why weren't the changes propagated to the other repositories?" moment.
> I generalized a bit too wide when I said "social stuff". I was thinking more along the social media angle (GitHub stars, follows, etc.)
I figured given the context, but I wanted to cover this base too just in the off chance that the intention was different. I overcorrected a little perhaps. (:
> I already foresee the inevitable "why weren't the changes propagated to the other repositories?" moment.
It's something of an ironic "What manages the configuration of the software configuration management system?" moment, really. My suggestion is to have a sensible chuckle at it.
Fossil looks really cool. I like how it's all in one and includes the web interface. The only thing is it doesn't seem like anyone actually uses it outside of sqlite. I don't necessarily need to use the most popular thing out there, but some social proof is nice.
- It isn't git - Works best with smaller teams - You need to be ok self hosting (single binary, easy to do)
The first point is really the killer. It is revision control, it is as good as git (maybe better), but it is different. Git = branches are easy, was built to support Linux's lieutenant development model, and a massive, loosely connected team. Fossil = branches are intentionally hard, built to support a small, tight knit team (SQLite).
Most teams I've been on are closer in size to SQLite than they are to Linux, but everyone already knows git at a gut deep level. YMMV.