Software frontend/backend dealings...

Badly worded title, I have no idea what to word this one, but I just wanna talk about the hassle that is picking a frontend for Git. Nowadays everyone might just go and use an actual forge like forgejo or gitea, but that's not how git was supposed to be used like, git... git itself is what it is supposed to be used like... or well that's how torvalds thought it would but there are major issues that needs to be addressed.

The simple usage of Git

It's easy, you just use git with ssh and that's it. You have a server than you can ssh into, maybe you have a repo dir named `repositories/` in your `$HOME` and you put all your repos... well bare git repos with the command:

$ git init --bare <name>

And you clone with

$ git clone user@ip:repositories/<name>.git

And remember, `.git` is important. And you do every git things over ssh, like even hooks if you set them up on the server. (Like you could setup a post-recieve hook to update your site, but I don't do that)

That is about it you know, that is all you need for private repositories however. But... well git has a tool called git-daemon which allows people to clone repos over the `git://` protocol, which only allows pulling. So you have a workflow of pushing over ssh and pulling over git. That's the simplest form of working that has been designed. If you want multiple people to contribute to your project you just need them to send you a patch and you just apply it! Easy as that! If it is a large, projects it would require the needs of tracking things, which _that_ git really doesn't provide. Stuff like issue tracking, milestones and all that... or well there's tags to create a snapshot of a repo to be able to clone that part and compile that version. But with issue tracking, you need to use a mailing list, and for milestones you just to need to... perhaps just use the README file?

Gitolite?

*sigh*. Nonetheless git surely is enough. But well, now we talk about discovery, meaning frontend. the `git://` protocol is great but it doesn't help with discovery and also its kind of unfriendly to people who want to read about the project and are not that into technical aspects (although I just would hate them). But yeah, okay... we need something don't we. Well there is a tool that handles git stuff called

gitolite

that sits between your git user and you. Gitolite helps with the problem of having multiple user work in the same server but as virtual users instead of real users. But you really don't need this, you can just do it with git again... tbh virtual users or not doesn't really matter. But gitolite makes it simple.

Choosing one...

Then, yes, now it is time for the frontend bullshit. Picking a frontend is hard, infact I would want to create a frontend myself for the gemini protocol instead :-) (because there ain't any... or skyjake has one?). Most of the frontends are web based so that literally everyone in the planet earth can access it. Instead of dumping it into some underrated protocol that only the geekiest of people or well, somewhat geeky people; use.

Cgit, forgejo or stagit

I tried out cgit, when using with gitolite. The main problem is that it is a web CGI program, meaning it will be open to web scrapers and is bound to get DDoS'ed. There are a lot of dynamic things in cgit which is bad, and robots.txt ofcourse as it should just does not work. Forgejo has the same problem at a much higher level because of all the JS bs. I then tried out stagit... which is kind of difficult to use. Infact, it's _quite_ difficult to use. You would need a lot of git hooks to make stagit work, however it doesn't really support a lot of things that cgit does like snapshotting per commit, automatic tar archive per tag... But they all suffer the problem of being a web application.

Conclusion

Hence, I was thinking of making or well finding a program that allows me to statically compile git to my gemini capsule so I can host source code over the gemini protocol instead... And then when that's done, run kineto on it to make it accessable over https... or not... AAAAAh this is such a painful thing to decide, and there's no correct answer for this, its always problematic when it's stuff like this!

Anyways, I guess I still have no idea what I'd pick.