If you only need Git plus project tracking Gitea is super mature. It runs happily on small VPS.
Interested! Some detail on how you achieve this for free would be great.
If you want to run a process after each push to a branch or merge into main or whatever, you describe it in a YAML file in that repo. Configure some workers to run those actions and off you go! I use it for things like running tests and applying Terraform changes.
Citation needed. nektos/act is for sure not "like GitHub's"
Sure, it's not identical, and no one claims it is. I think it's defensibly like them, though.
> Forgejo was created in October 2022 after a for profit company took over the Gitea project. It exists under the umbrella of a non-profit organization, Codeberg e.V. and is developed in the interest of the general public. In the year that followed, this difference in governance led to choices that made Forgejo significantly and durably different from Gitea.
If you take it at face value (at your peril), Gitea is about to start enshittification, while Forgejo will not at any point. My personal opinion, is that this is credible.
Will move to that fork in one of my future private infrastructure reconstructions.
While GitHub and GitLab have dedicated design and front-end teams to improve their UI/UX, Gitea and Forgejo aren't large enough to reach that scale, even after Gitea became a company.
For example, look at the number of issues triaged with "UX" [0] or "UX Paper Cut" [1] on GitLab. It is an order of magnitude larger than you would find in any other FOSS option.
[0]: https://gitlab.com/gitlab-org/gitlab/-/issues/?label_name%5B...
[1]: https://gitlab.com/gitlab-org/gitlab/-/issues/?label_name%5B...
- completely docker based CI/CD which makes reasoning about what it's going to do easier than "read through some minified .js from some rando"
- they do have composable CI/CD akin to the GitHub Actions marketplace, but I haven't used it as much in anger to speak to how valuable it is versus "competitive checkbox feature"
- built-in Terraform State, so no more S3 + Dynamo
- highly configurable JWT claim curation for ease of OIDC based access from the pipelines
- good integration between the platform and multiple Kubernetes clusters
- related to that, a strong "review environment" setup
- they were also hinting at being a Sentry replacement, but regrettably I had to switch back to GitHub before that came out of preview so I don't this second know where it stands
GitHub Actions can share runtime environment, which makes them cheap to compose. GitLab components are separately launched Docker containers, which makes them heavyweight and unsuitable for small things (e.g. a CI component can't install a dependency or set configuration for your build, because your build won't be running there).
The components aren't even actual components. They're just YAML templates concatenated with other YAML that appends lines to a bash script. This means you can't write smart integrations that refer to things like "the output path of the Build component", because there's no such entity. It's just some bash with some env var.
<https://docs.gitlab.com/ci/yaml/#environment> plus <https://docs.gitlab.com/ci/yaml/#dynamic-environments> et al
I believe it aligns with this behavior in GitHub: <https://docs.github.com/en/actions/how-tos/deploy/configure-...> with the distinction that it appears from the GH docs that they think of that as "needs administrative approval" whereas GLCI thinks of it as "if the pipeline has permissions to run provisioning, off to the races, because names are free"
GitLab introduced the "deployment tier" I think as a means of communication to other users about the importance of the environment, but control over what credentials were made available to CI/CD was always controlled via <https://docs.gitlab.com/ci/environments/#limit-the-environme...> which partially explains why the only reason to involve a repository administrator would be to install or update a secret needed to deploy successfully
---
it the spirit of "they really, really drink their own champagne," one can see the environments for GitLab itself https://gitlab.com/gitlab-org/gitlab/-/environments
Codeberg and gitea, on the other hand, feel great, like early Github. Fast and simple, instead of a product that’s adding feature on top of half-baked feature to capture the sweet corporate $$$.
most SaaS tools only have github integration which is sucks
I also don't think "it's open source!" is a huge differentiator because it's enormous, difficult to deploy from source and written in Ruby so the chance of being able to actually modify it for some feature you want is near zero.
I think Forgejo is probably a way better option at this point even if it is less mature. It's written in Go so way easier to deploy and edit. And none of the features are paid.
I do like Gitlab but... it's not amazing. I liked Phabricator more (except for its lack of integrated CI).
That's a silly thing to say.
I'm sure if it was your full time job you'd eventually learn the codebase, but there's no way you can just dip in and add a feature unless you really persevere.
But I did manage to add a few features to the gitlab-runner (used for CI) - because it's written in Go, and Go has static types and pretty great IDE support these days. Night and day.
I've also added a few features to VSCode which is a similarly huge codebase. Again it's written in Typescript which has static types and good IDE support. It would have been effectively impossible if that wasn't the case.
> difficult to deploy from source
I won't argue with you here. There are a lot of moving pieces in a Rails deployment. This isn't different from most web app frameworks, but it is difficult.
That said, I've never worked on a Rails app where deployment was any more difficult than a variation on `bin/deploy v123 production`, because I wrote that script and it works 100% of the time.
> and written in Ruby so the chance of being able to actually modify it for some feature you want is near zero
But this is still silly. You just don't know Rails or Ruby well, and don't want to learn them. Fine, but if you hadn't already made that decision, you would find the solution simple enough. No judgement intended -- different framework/language paradigms fit different people differently.
Rails has great IDE support also. Static typing can be a useful language feature, but a lack of same has not ever, in my experience, made it more difficult to understand real-world code.
There is a lot to love about Go too, don't get me wrong. But I would guess that the number of random developers who could drop in and be immediately productive in a Ruby/Rails app, vs a Go webapp, is basically equivalent. The overlap of projects where both would be highly appropriate choices is a bit thin.
[I hire into Ruby/Rails jobs regularly. I often hire senior developers with no Ruby/Rails background, but I do not hire people into these positions who are not open to learning. It takes a senior dev (from the C/Algol family) one day to learn Ruby, and (from a web dev background) a week or less to learn Rails. I have never seen a failure.
I also hire into Go jobs almost as frequently. The hiring criteria is a bit different (less emphasis on web awareness), but I do find it easier to teach Go to a Ruby dev, than Ruby to a Go dev. Make of that what you will.]
That's not even getting into attempting to use their "happy path" <https://gitlab.com/gitlab-org/gitlab/-/blob/v18.2.1-ee/.gitp...> -> https://gitlab.com/gitlab-org/gitlab-development-kit#local which I found just incredibly challenging getting it to use my copies of the repos. But, just like in every one of these conversations, it's been a number of years since I tried it so maybe it's much better now
But I was responding specifically to "in Ruby, so the chance of being able to actually modify it ... is near zero", which does not address the real issue.
It's perfectly possible to write simple, clear code in Ruby (and Rails!), but I'll concede that GitLab is not the best example of that.
If OP had said ~"... and the GitLab codebase is large and can be difficult to navigate and make drop-in contributions to ... also I have an aversion to dynamically-typed languages" :) ... then I wouldn't have bothered commenting.
> You don't want to learn Ruby or Rails
Learning Ruby or Rails wasn't the problem. The Ruby language itself is fairly trivial. The issue is the lack of static types, and the fact that you can't even fall back to grep.
I know Python very well but it is almost as difficult to edit large Python codebases with no type hints. (It's not quite as bad because most Python code is greppable.)
I grep through Rails code bases all the time. It is my first-choice method of discovery. In the very rare cases where it does not work immediately, I set a breakpoint and run from the REPL. This never does not work, even in the GitLab code base.
I have my criticisms of Ruby, and Rails, too. But your "near zero" comment is a shallow dismissal that captures your biases and presents them as some kind of informed truth. It is not.
At home I prefer fossil. It isn’t without rough edges but for the small developer headcount stuff I do it is quite lovely.
Yes and no. If all you want is a remote git server then no, there's not. But there's plenty of legitimate reasons to use a SaaS tool like GitHub.
https://gitlab.gnome.org/ - GNOME uses Gitlab
https://gitlab.com/kicad/ - KiCad uses Gitlab
Knot DNS[1] good enough for you ? GPL licensed.
i consider that a feature