2024-01-07 21:43:26 +01:00
|
|
|
# Contributing to iOwO
|
|
|
|
|
|
|
|
Before we get started, thank you for thinking about doing so!
|
|
|
|
|
|
|
|
## Through an issue
|
|
|
|
|
2024-01-19 03:09:31 +01:00
|
|
|
- Be excellent to each other. Adhere to the [code of conduct].
|
2024-01-07 21:43:26 +01:00
|
|
|
- About the title: If you had 5 seconds to tell someone the essence of the issue, what would it be?
|
|
|
|
|
|
|
|
### Bugs
|
|
|
|
|
2024-01-19 03:09:31 +01:00
|
|
|
- Write out in detail which steps in which order are necessary to reproduce the bug.
|
|
|
|
- Include environmental information as well, in specific:
|
2024-01-07 21:43:26 +01:00
|
|
|
- How did you install iOwO?
|
|
|
|
- What version of iOwO are you running?
|
|
|
|
- What operating system are you running?
|
2024-01-19 03:09:31 +01:00
|
|
|
In the case of a Linux distro, mention the specific distro and when you last update as well.
|
|
|
|
- If the bug causes a crash, try to get a backtrace or in worse cases, a coredump.
|
2024-01-07 21:43:26 +01:00
|
|
|
|
|
|
|
### Feature requests
|
|
|
|
|
2024-01-18 22:38:19 +01:00
|
|
|
- Be sure to include a motivation in which case your intended feature would be used
|
2024-01-19 03:09:31 +01:00
|
|
|
even if it seems obvious to you.
|
|
|
|
- Estimate what would be needed to implement the feature:
|
2024-01-07 21:43:26 +01:00
|
|
|
- Is it an addition to the language itself?
|
|
|
|
- Is it just a new command?
|
|
|
|
- Does it ground-breakingly change how iOwO works?
|
|
|
|
|
|
|
|
## Through a PR
|
|
|
|
|
2024-01-19 03:09:31 +01:00
|
|
|
1. Clone the repo.
|
|
|
|
2. Switch to a new appropiately named branch for what you want to do, using `git switch -c`.
|
|
|
|
3. Implement your code changes with your favorite code editor.
|
|
|
|
4. Try them with `cargo run`.
|
|
|
|
5. If there are errors or warnings, go to step 3. Commit occasionally.
|
2024-01-07 21:43:26 +01:00
|
|
|
6. Otherwise,
|
|
|
|
- if you have an account at https://forge.katzen.cafe,
|
|
|
|
1. fork the repo
|
|
|
|
2. set it up as a remote using `git remote add`
|
|
|
|
3. push using `git push @ -u`
|
|
|
|
- if you don't,
|
|
|
|
1. combine your patches using `git diff --patch` and throw them in a file
|
|
|
|
2. send that file to one of the maintainers per email
|
|
|
|
- alongside with a description of what it does
|
2024-01-18 22:38:19 +01:00
|
|
|
3. also mention in the mail that we should consider GitHub and GitLab mirrors,
|
|
|
|
referring to this line
|
2024-01-07 21:43:26 +01:00
|
|
|
|
|
|
|
### Tech stack
|
|
|
|
|
|
|
|
The techstack we operate on is
|
|
|
|
|
|
|
|
- [typst] for documents and concrete proposals
|
|
|
|
- [Rust] for the actual code
|
|
|
|
|
|
|
|
So if you want to contribute functionality, take a look at [The Rust Programming Language book]!
|
2024-01-20 18:23:42 +01:00
|
|
|
If you want to contribute thoughts and technical designs, then consider taking a ride through
|
2024-01-07 21:43:26 +01:00
|
|
|
[typst's excellent tutorial]!
|
2024-01-20 13:39:53 +01:00
|
|
|
|
2024-01-20 18:23:42 +01:00
|
|
|
For creative things, we suggest using whatever **you** are comfortable with.
|
2024-01-20 13:39:53 +01:00
|
|
|
Otherwise, we suggest these:
|
|
|
|
|
|
|
|
- [Inkscape], [GIMP] and [Blender] for promotional material like logos and posters
|
|
|
|
- [Penpot] for layouting prototypes and the like
|
2024-01-07 21:43:26 +01:00
|
|
|
|
|
|
|
[typst]: https://typst.app
|
|
|
|
[Rust]: https://www.rust-lang.org
|
2024-01-20 13:39:53 +01:00
|
|
|
[The Rust Programming Language book]: https://doc.rust-lang.org/book/
|
|
|
|
[typst's excellent tutorial]: https://typst.app/docs/tutorial
|
|
|
|
|
2024-01-07 21:43:26 +01:00
|
|
|
[Inkscape]: https://inkscape.org/
|
|
|
|
[GIMP]: https://www.gimp.org/
|
|
|
|
[Blender]: https://www.blender.org/
|
2024-01-09 10:27:07 +01:00
|
|
|
[Penpot]: https://penpot.app/
|
2024-01-07 21:43:26 +01:00
|
|
|
|
|
|
|
## Politics
|
|
|
|
|
2024-01-18 22:38:19 +01:00
|
|
|
- Current maintainers are defined as the entities listed in the [code of conduct]
|
2024-01-07 21:43:26 +01:00
|
|
|
|
|
|
|
### PRs
|
|
|
|
|
2024-01-18 22:38:19 +01:00
|
|
|
- Every PR requires an approving review from a maintainer (that is not the author) before merge
|
|
|
|
- Maintainers can merge their own PRs
|
|
|
|
- But only after approval
|
2024-01-07 21:43:26 +01:00
|
|
|
|
|
|
|
### Major decisions
|
|
|
|
|
2024-01-19 03:09:31 +01:00
|
|
|
- All current maintainers have to agree **unanimously**.
|
|
|
|
- Agreement must be based on [informed consent].
|
|
|
|
- In effect, a maintainer has to understand what they agree to.
|
2024-01-07 21:43:26 +01:00
|
|
|
|
2024-01-10 23:31:21 +01:00
|
|
|
# Interacting with PRs
|
|
|
|
|
2024-01-18 22:38:19 +01:00
|
|
|
Remember, be respectful.
|
|
|
|
Entities invest their free time and motivation into making these changes,
|
|
|
|
treat them appropiately.
|
2024-01-10 23:31:21 +01:00
|
|
|
|
2024-01-19 03:09:31 +01:00
|
|
|
- Since in iOwO, we mostly work based on forks, [git's remotes] work fairly good.
|
|
|
|
- Replace things in pointy brackets (`<>`) respectively (and remove the pointy brackets).
|
2024-01-10 23:31:21 +01:00
|
|
|
|
|
|
|
## Initial steps for a new contributor or new local checkout
|
|
|
|
|
|
|
|
```sh
|
|
|
|
git remote add <contributor-name> https://forge.katzen.cafe/<contributor-account>/iowo.git
|
|
|
|
git remote update <contributor-name>
|
|
|
|
```
|
|
|
|
|
|
|
|
## After setting up the remote
|
|
|
|
|
2024-01-19 03:09:31 +01:00
|
|
|
- You can repeat this step anytime you want to switch branches or update your local checkout.
|
|
|
|
- The PR branch is visible just below the PR title on Forgejo, after the colon (`:`).
|
2024-01-10 23:31:21 +01:00
|
|
|
|
|
|
|
```sh
|
|
|
|
git switch <pr-branch>
|
|
|
|
git pull
|
|
|
|
```
|
|
|
|
|
|
|
|
|
2024-01-07 21:43:26 +01:00
|
|
|
[code of conduct]: ./CODE_OF_CONDUCT.md
|
|
|
|
[informed consent]: https://en.wikipedia.org/wiki/Informed_consent
|
2024-01-10 23:31:21 +01:00
|
|
|
[git's remotes]: https://git-scm.com/docs/git-remote
|