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).
1011## Code of conduct
1213Interaction within this project is covered by the [Code of Conduct](./CODE_OF_CONDUCT.md).
1415## Scope and design goals of GitRoot
1617GitRoot 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.
1819GitRoot is responsible of the security and so who can write where. If your contribution is not related to that, you should write a plugin.
2021If your plugin can not be written, open an issue to discuss if GitRoot can handle the work or not.
2223Plugins 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).
2425## Creating issue/feature request/other
2627To discuss about anything you should create an "issue". To do that, clone and make a file:
2829-`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`3637After that a maintenair will review and merge your branch in the default branch.
3839This instructions follow the classic [usage](./doc/tutorials/use_instance.md) of any GitRoot instance.
4041## Adding code
4243To 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`.
4445You 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.
4647Graft file can be found in `grafts/nameBranch.md` (after you had push and pull).
4849**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.
5253Making a graft generally necessitates the following steps:
5455### Set up local development
5657Follow [instrcutions in the README.md](./README.md#installing)
5859### Make changes
6061This is the tricky bit for which no development guide exists. You make changes
62somewhere in the code. If you can, do the following things:
6364- Update issue.
65- Write code.
66- Write tests.
67- Update documentation.
6869### Commit and push to submit a graft
7071GitRoot 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.