GitRoot

craft your forge, build your project, grow your community freely
 1# How to help building GitRoot 11-2025
 2
 3> This article is the translation of [french version](./how-to-help_fr_11-2025.md) thanks to [DeepL](https://www.deepl.com)
 4
 5I just read [this article](https://antonin.delpeuch.eu/posts/too-much-time-on-your-hands/) 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](https://gts.gitroot.dev/@forge/statuses/01K98BCFEB9V430JD9TFQ32YZN) 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?
 6
 7So why not have external contributors on GitRoot?
 8
 9I 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.
10
11But, 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.
12
13Here, 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.
14
15## Prerequisites
16
17There isn't much you need to do to get ready to help out on GitRoot:
18
19- you need to have [git](https://git-scm.com/)
20- git clone ssh://gitroot.dev
21- cd gitroot.dev
22- ./gitroot/init.sh
23
24If you want to code, you will also need:
25
26- [bash](https://www.gnu.org/software/bash/manual/bash.html) and [make](https://www.gnu.org/software/make/) (if you are a developer, chances are you already have them)
27- Install [mise](https://mise.jdx.dev/), which is the easiest way to get all the right versions of the compilers
28
29And 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.
30
31## Before we begin
32
33Before 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.
34
35So, 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](https://matrix.to/#/%23gitroot:matrix.org) to discuss them.
36
37We can also talk about it by email [contact@gitroot.dev](contact@gitroot.dev) or on the fediverse [@forge@gitrrot.dev](https://gts.gitroot.dev/@forge).
38
39## What can we do?
40
41### Correct mistakes
42
43English 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!
44
45### I want to work on the web
46
47It would be great to create (or find) a theme. GitRoot currently uses [simplecss](https://simplecss.org/), and it only needs `classless CSS`. There are many available, but you can also create one for GitRoot.
48
49The 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](http://127.0.0.1:4546/repo1).
50
51When you are satisfied, create a branch with your CSS in [apex](https://gitroot.dev/worktree/app/plugins/apex/resources/styles/), then `git add .` and `git push`. I'll take care of the rest.
52
53### I want to code
54
55Okay, 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):
56
57- in golang:
58  - in the [grafter](https://gitroot.dev/worktree/app/plugins/grafter/) plugin, be able to display [something else](../issues/3d33-grafter-dco.md) 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.
59  - In the [silo](https://gitroot.dev/worktree/app/plugins/silo/) plugin, allow [grouping by file or date](../issues/76ec-silo-more-selects.md)
60  - More difficult, but I would like to have more [renderers](../issues/e6d8-apex-alert-support.md) in [apex](https://gitroot.dev/worktree/app/plugins/apex/), for example info, warnings, and others
61- in typescript:
62  - in the [pollen](https://gitroot.dev/worktree/app/plugins/pollen/) plugin there is a bug in the RSS feed [it is never cleaned up](../issues/3986-pollen-rss-grow-infinite.md). Added an option (or not, 100 seems fine to me) to limit the number of `<item>`.
63  - Still in the [pollen](https://gitroot.dev/worktree/app/plugins/pollen/) plugin, why not add a [json feed](https://en.wikipedia.org/wiki/JSON_Feed) in addition to the RSS feed? We can serialize json in assemblescript.
64  - More difficult, but it would be nice to be able to tell the [pollen](https://gitroot.dev/worktree/app/plugins/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.
65- in Rust:
66  - Do what Ygor said in https://floss.social/@ygor/115474535138702961 I'm not a Rust developer and converting `String` to `&str` doesn'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](https://gitroot.dev/worktree/app/libs/rust/plugin/) and the [hop](https://gitroot.dev/worktree/app/plugins/hop/) plugin.
67  - Add a [fakeServer](../ issues/9f00-rust-sdk-fake-server-test.md) to the [plugin sdk](https://gitroot.dev/worktree/app/libs/rust/plugin/) to facilitate plugin testing. Here is the one for Go https://gitroot.dev/worktree/app/libs/golang/plugin/test/fakeserver.go.html
68
69### I'm a sysadmin.
70
71Perfect, there's plenty to do:
72
73- Today, there are too many steps to release GitRoot. [Automating](../issues/dba0-simplify-release.md) as much as possible would help me a lot.
74- If you have a little space on one of your servers, [try deploying an instance](../doc/tutorials/deploy_instance.md) 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.
75
76### I want to test
77
78- All tests are in bash in [/app/testsuite/](https://gitroot.dev/worktree/app/testsuite/). The largest test is located in `runtest.sh`, along with others.
79  - Running them to see if they work on your system seems like a good first task to me.
80  - Creating new ones
81  - Improving existing ones by, for example, moving helper functions such as `quiet_git()`, `report()`, or `mySleep()` to other files (and importing them) would be a great help to the project. You can also create new ones for `killGitroot()`, which is done at the beginning of each file. Or `createProject()`, which consists of going to the root repository each time and adding its name to the `.gitroot/repositories.yml` file
82
83### I just want to think/discuss
84
85You are welcome to join the [gitroot channel](https://matrix.to/#/%23gitroot:matrix.org) on Matrix. Or contact us by email at `contact [AT] gitroot.dev` or on the Fediverse at `@forge@gitroot.dev` [on this server](https://gts.gitroot.dev/@forge).