GitRoot

craft your forge, build your project, grow your community freely
 1<!--
 2SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
 3
 4SPDX-License-Identifier: EUPL-1.2
 5-->
 6
 7# Contribution guidelines
 8
 9Any issues or suggestions are welcome at [https://gitroot.dev](https://gitroot.dev).
10
11## Code of conduct
12
13Interaction within this project is covered by the [Code of Conduct](./CODE_OF_CONDUCT.md).
14
15## Scope and design goals of GitRoot
16
17GitRoot has a finite scope. Its purpose is to manage repositories and users. Everything else should be added into plugins. Contributions contradicting this purpose are unlikely to be accepted.
18
19GitRoot is responsible for security, and managing user permissions. If your contribution is not related to this, you should write a plugin.
20
21If you are unable to write the plugin you need, please open an issue to discuss whether GitRoot can handle the work.
22
23Plugins hosted on GitRoot itself should be open-source and serve the community. Contributions to create a new plugin may be refused at any time, for any reason (we don't have the manpower required to maintain all plugins).
24
25## Creating issue/feature request/other
26
27To discuss about anything you should create an "issue". To do that, clone and make a file:
28
29- `git clone ssh://gitroot.dev/`
30- `.gitroot/init.sh`
31- `git checkout -b myIssue`
32- `open issues/myIssue.md`
33- write whatever you want in this file. Ideally, include a title and a description representing what you need
34- `git add . && git commit -m "my issue"`
35- `git push origin myIssue`
36
37After that a maintainer will review your branch and merge it into the default branch.
38
39These instructions follow the classic [usage](./doc/tutorials/use_instance.md) of any GitRoot instance.
40
41## Adding code
42
43To add some code into GitRoot project (called pull-request, merge-request or request-merge) , you need to create a branch with a unique name, and push it. Then, pull the changes made by the grafter plugin. By the way, this is what we call a `graft` in GitRoot.
44
45You need to link an issue to any graft by moving the `issues/issue.md` to another directory (`close` today but can change). Review the instructions in the graft itself.
46
47Graft file can be found in `grafts/nameBranch.md`. You can only find this file after you have pushed and pulled your branch.
48
49**Grafts do not need to be perfect.** Not all the tests need to pass. A graft that is 80% complete is much better than no graft at all.
50We can work together to make the graft merge-ready, or the maintainers can finalise the graft for you.
51
52The following steps are generally necessary for making a graft :
53
54### Set up local development
55
56Follow [instrcutions in the README.md](./README.md#installing)
57
58### Make changes
59
60This is the tricky part for which there is no development guide. You need to make changes
61somewhere in the code. If possible, do the following :
62
63- Update issue.
64- Write code.
65- Write tests.
66- Update documentation.
67
68### Commit and push to submit a graft
69
70GitRoot is designed to help you for this stage. Commit and push you branch. Then pull changes to your branch and follow instructions in the newly created `grafts/nameBranch.md` file.