How to help building GitRoot 11-2025
This article is the translation of french version thanks to DeepL
I just read this article and I can’t stop thinking about it. I’m putting it into perspective for GitRoot contributors. I’m the only contributor (apart from my friend Damien, who corrected numerous typos, thank you to him) on this project. And as this toot shows, I have a job to pay the bills, a wife and two children who take up practically all the rest of my time. On top of that, I have GitRoot. For now, I’m having a blast and hanging in there, but how long can I keep it up?
So why not have external contributors on GitRoot?
I often tell myself that the project is young, too young, to be accessible to an external developer. Sometimes I think that a better issues system would be necessary to have a โwelcome new contributionโ label. Sometimes I think that once I’ve deployed the SDK plugins and created a plugin marketplace, then you can come and help me make GitRoot a true open-source project.
But, because there is a but, this list will never end. Let’s be honest, there will always be something else to do before you can help me make GitRoot the best it can be. So I decided to do the simplest thing possible right now to explain how you can help me: a blog post.
Here, I’ll explain everything that can be done in the current state of the project. Not what might be possible someday, but what you can do right now. I’ll repeat this kind of article as often as necessary.
Prerequisites
There isn’t much you need to do to get ready to help out on GitRoot:
- you need to have git
- git clone ssh://gitroot.dev
- cd gitroot.dev
- ./gitroot/init.sh
If you want to code, you will also need:
- bash and make (if you are a developer, chances are you already have them)
- Install mise, which is the easiest way to get all the right versions of the compilers
And now you’re ready to start helping. But what should you do? Well, like any good developer, I’ll answer, “It depends.”. It depends on what you want to do! I’ll list a set of possible tasks below, and you can choose.
Before we begin
Before telling you what you can do, I thought it would be a good idea to explain what I am doing. So, for this version 0.3.0, my top priority is to make sure that GitRoot builds GitRoot itself. Currently, for each release, I build the binaries on my machine and then scp them. I want this to no longer be the case with version 0.3.0.
So, if I can restrain myself, I shouldn’t have to do the following tickets. You have all the time you need to do them. The easiest thing, I think, is to meet up on matrix channel gitroot to discuss them.
We can also talk about it by email contact@gitroot.dev or on the fediverse [forge@gitrrot.dev](https://gts.gitroot.dev/@forge).
What can we do?
Correct mistakes
English is not my native language, and I think there are a lot of typos, so one task could be to read all the MD files in /doc/, /blog/, and maybe even /issues/. Correct them, create a branch, and push. I’ll take care of the rest!
I want to work on the web
It would be great to create (or find) a theme. GitRoot currently uses simplecss, and it only needs classless CSS. There are many available, but you can also create one for GitRoot.
The easiest way to try it out is to run the make testsuite command. When it’s finished, go to cd /tmp/repo1, edit the style.css file, then git add . git commit -m "try style" and git push. Open http://127.0.0.1:4546/repo1.
When you are satisfied, create a branch with your CSS in apex, then git add . and git push. I’ll take care of the rest.
I want to code
Okay, no worries, here’s a list of small tasks (well, they seem small to me, but if that’s not the case for you, let me know):
- in golang:
- in the grafter plugin, be able to display something else in the first message of a graft. The banner is hard-coded in the plugin; it would need to be exported to the plugin configuration and used.
- In the silo plugin, allow grouping by file or date
- More difficult, but I would like to have more renderers in apex, for example info, warnings, and others
- in typescript:
- in the pollen plugin there is a bug in the RSS feed it is never cleaned up. Added an option (or not, 100 seems fine to me) to limit the number of
<item>. - Still in the pollen plugin, why not add a json feed in addition to the RSS feed? We can serialize json in assemblescript.
- More difficult, but it would be nice to be able to tell the pollen plugin to generate an RSS feed with the contents of the files. This would allow GitRoot to have an RSS feed displaying blog articles, for example. Currently, it only puts commits in the RSS feed.
- in the pollen plugin there is a bug in the RSS feed it is never cleaned up. Added an option (or not, 100 seems fine to me) to limit the number of
- in Rust:
- Do what Ygor said in https://floss.social/@ygor/115474535138702961 I’m not a Rust developer and converting
Stringto&strdoesn’t mean much to me, but if you are, I’m sure it’s a small task. The code can be found in the plugin sdk and the hop plugin. - Add a fakeServer to the plugin sdk to facilitate plugin testing. Here is the one for Go https://gitroot.dev/worktree/app/libs/golang/plugin/test/fakeserver.go.html
- Do what Ygor said in https://floss.social/@ygor/115474535138702961 I’m not a Rust developer and converting
I’m a sysadmin.
Perfect, there’s plenty to do:
- Today, there are too many steps to release GitRoot. Automating as much as possible would help me a lot.
- If you have a little space on one of your servers, try deploying an instance just for fun. Maybe you can improve the documentation or find something that no longer works. Or add a paragraph on using gitroot with nginx or something else.
I want to test
- All tests are in bash in /app/testsuite/. The largest test is located in
runtest.sh, along with others.- Running them to see if they work on your system seems like a good first task to me.
- Creating new ones
- Improving existing ones by, for example, moving helper functions such as
quiet_git(),report(), ormySleep()to other files (and importing them) would be a great help to the project. You can also create new ones forkillGitroot(), which is done at the beginning of each file. OrcreateProject(), which consists of going to the root repository each time and adding its name to the.gitroot/repositories.ymlfile
I just want to think/discuss
You are welcome to join the gitroot channel on Matrix. Or contact us by email at contact [AT] gitroot.dev or on the Fediverse at @forge@gitroot.dev on this server.