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. The goal is to manage repositories and users. All the rest should go into plugins. Contributions which contradict the goal are unlikely to be accepted.
18
19GitRoot is responsible of the security and so who can write where. If your contribution is not related to that, you should write a plugin.
20
21If your plugin can not be written, open an issue to discuss if GitRoot can handle the work or not.
22
23Plugins hosted on GitRoot itself should serve the mass and be open-source. Contribution to create a new plugin can be refused at any time, for any reason (we don't have the man power 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 chekcout -b myIssue`
32- `open issues/myIssue.md`
33- write what you want in this file, ideally a title and an explanation of what you want
34- `git add . && git commit -m "my issue`
35- `git push origin myIssue`
36
37After that a maintenair will review and merge your branch in the default branch.
38
39This instructions follow the classic [usage](./doc/tutorials/use_instance.md) of any GitRoot instance.
40
41## Adding code
42
43To add a portion of code (called pull-request, merge-request or request-merge) in GitRoot, you need to make a uniquely named branche and push it. After that, pull changes made by the grafter plugin. Yes we call that a `graft`.
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 instruction in the graft itself.
46
47Graft file can be found in `grafts/nameBranch.md` (after you had push and pull).
48
49**Grafts need not be perfect.** Not all the tests need to pass. A graft with 80% of the work done is a lot better than no graft at all.
50We can work together on making the graft merge-ready, or the maintainers
51can finalise the graft for you.
52
53Making a graft generally necessitates the following steps:
54
55### Set up local development
56
57Follow [instrcutions in the README.md](./README.md#installing)
58
59### Make changes
60
61This is the tricky bit for which no development guide exists. You make changes
62somewhere in the code. If you can, do the following things:
63
64- Update issue.
65- Write code.
66- Write tests.
67- Update documentation.
68
69### Commit and push to submit a graft
70
71GitRoot is designed to help you on this stage. Commit and push you branch. Then pull changes on your branche and follow instruction in the newly crated `grafts/nameBranch.md` file.