https://codeberg.org uses the https://gitea.io software for its free remote Git repository service. If you're uncomfortable with non-free software, open-core, commercial underpinnings and/or corporate ownership of Github and Gitlab, hosting your repos on Codeberg — or starting your own Gitea site — are very viable alternatives.
Thanks, this was very helpful! I was scanning the prose on the Codeberg website looking to see if Codeberg itself was open source, but all it said was that it was "free" and "non-profit."
Now I see that Gitea is the software (basically a clone of GitHub that is visually almost div-for-div, released with an MIT license, that you can host yourself), and Codeberg is central hosting (a "hub") running Gitea, operated as a non-profit.
I had developed the impression that gitea kept all the project metadata -- bug tracking, PRs, etc -- in the same repository with the project code. Was this impression correct? Looking at the "Comparison" page does not suggest anything, one way or the other.
To me that would be the most important differentiator. Do any of the others do it?
Wait, is that something you would want? I would find it pretty awful if my git history for my code had all the other things like issues and PR metadata in it. Could potentially see it being useful if it were stored in an "auxiliary" repo that I could pull separately.
The big advantage would be that all that metadata would also be decentralised, i.e. I'd have a backup of all that on my own PC, and I could push it to a different host to automatically transfer everything, whereas e.g. GitLab has had to write custom import scripts for GitHub metadata, and you just have to hope that everything maps cleanly if you use it.
Of course I want it. History is history. Furthermore, why should PRs, bug reports, and build artifacts not be able to refer directly to source objects and revisions, and vice versa?
A simple way to represent it might be as an ASCII dump of one or more databases representing it all, so you could roll back to any day's state; or as an update-log transcript, so you could roll back to the state after any given transaction. Both amount to successive diffs, so are reasonably compact.
Except PRs, bug reports etc. can't affect the runtime behavior of your program, only code can. There are many times when I am looking through a dependency's history to see "what changed?" in order to decide if I want to pull a new version, and the ONLY thing I want to look at in that case are code changes.
> Furthermore, why should PRs, bug reports, and build artifacts not be able to refer directly to source objects and revisions, and vice versa?
I do that all the time in GitHub today.
I certainly understand wanting that auxiliary data to be versioned, and I also understand wanting it to be in a portable, distributed format like Git. I just definitely don't want it cluttering up the history of my code
Also, security is a big deal. I often want to allow pretty much anyone to open a PR or an issue, but I don't necessarily want that now to be part of the repo every time someone clones it.
> Except PRs, bug reports etc. can't affect the runtime behavior of your program, only code can
Are your repos free of docs, READMEs and tests, then?
> I just definitely don't want it cluttering up the history of my code
Separate branch?
> I often want to allow pretty much anyone to open a PR or an issue, but I don't necessarily want that now to be part of the repo every time someone clones it.
That is a good point; perhaps solvable by having the webapp frontend provide the GUI but make commits itself? That should give you the best of both worlds.
Gitlab was basically a pixel-for-pixel clone in the beginning before they started differentiating themselves on features and then developed their own UI. Made it super easy to onboard new employees 5+ years ago, honestly.
(Edited for typos)