|
1 | | -# Contributing Guidelines |
2 | | -Thank you for considering to contribute! Here are some guidelines to help you get started.  |
| 1 | +# Contributing to Wurst |
| 2 | + |
| 3 | +This guide exists to save both sides time.  |
| 4 | + |
| 5 | +## Priorities |
| 6 | + |
| 7 | +1. **Maintainers first:** architecture, gametests, release workflows, review burden. |
| 8 | +2. **Users second:** features, bugfixes, compatibility, documentation. |
| 9 | +3. **Sponsors third:** advertising, donation perks, monetization. |
| 10 | + |
| 11 | +Happy maintainers ensure happy users, happy users ensure happy sponsors. In that order. |
| 12 | + |
| 13 | +## Issues |
| 14 | + |
| 15 | +- **Search before posting:** Both GitHub issues and [WurstForum](https://wurstforum.net/) might have a post about your bug or feature request already. Find and read that first. Remember that posting duplicates makes it harder for the next person to find the original with all the answers. |
| 16 | + |
| 17 | +- **State the bug or request clearly:** For requests, explain what it is, how it works, and why it matters. For bugs, include repro steps. "idk it's weird sometimes" is not actionable. |
| 18 | + |
| 19 | +- **Include the crash report file:** If the game is crashing and/or it's unclear which versions you're using, I _need_ that file to diagnose the issue. No crash? Hold down <kbd>F3</kbd> + <kbd>C</kbd> for 10 seconds to force one. |
| 20 | + - Windows: `%APPDATA%/.minecraft/crash-reports/crash-<timestamp>-client.txt` |
| 21 | + - Linux: `~/.minecraft/crash-reports/crash-<timestamp>-client.txt` |
| 22 | + - macOS: `~/Library/Application Support/minecraft/crash-reports/crash-<timestamp>-client.txt` |
| 23 | + |
| 24 | +- **If you want to implement the change yourself, say so.** |
3 | 25 |
|
4 | 26 | ## Pull Requests |
5 | 27 |
|
6 | | -### 1. Keep Pull Requests Small and Focused |
7 | | -- **1 PR = 1 change**: Each pull request should address a single issue or add a single feature. |
8 | | -- **Avoid Bloat**: Aim to keep the diff small and digestible. Don't stuff PRs with unrelated changes. |
9 | | - |
10 | | -### 2. Respect the Project's Scope and Vision |
11 | | -- **Communicate Before Coding**: Open an issue to discuss any major changes before you start working on them. This can save you a lot of time and effort in case your idea is rejected. When in doubt, ask first. |
12 | | -- **Avoid Breaking Changes**: When modifying existing features, it's usually better to make your changes optional. Your version may work better for you, but other people will often have different use cases that rely on the original behavior. |
13 | | - |
14 | | -### 3. Ensure Quality and Completeness |
15 | | -- **Finish the Code**: Submit a PR only when it's complete, tested, and ready for review. Don't use pull requests as a dumping ground for half-baked prototypes. |
16 | | -- If you need early feedback on a larger change, clearly mark the PR as a draft. You should have already started a discussion and gotten the go-ahead for your idea at this point. |
17 | | -- **Watch the Checks**: Make sure that all automated checks are passing and that there aren't any merge conflicts. Fix such issues before asking for a review. |
18 | | - |
19 | | -### 4. Follow the Code Style |
20 | | -- Run Eclipse's Clean Up and Format tools with the settings from the [codestyle folder](codestyle). |
21 | | -- If you don't use Eclipse, you can run `./gradlew spotlessApply` instead. However, be aware that this isn't as thorough as Eclipse's tools. |
22 | | -- For anything that these automated tools don't cover, please try to match the existing code style as closely as possible. |
23 | | - |
24 | | -## Other Ways To Help |
25 | | - |
26 | | -- fixing a typo |
27 | | - - in the Wurst Client itself (look for the pen icon at the top right) |
28 | | - - on WurstClient.net (scroll all the way down and click "edit this page") |
29 | | - - on the Wurst Wiki (login and click "Edit this page") |
30 | | -- improving an existing bug report |
31 | | - - figuring out which Minecraft versions are affected by the bug |
32 | | - - Can you figure out how to make the bug happen every time? If so, please let me know. |
33 | | - - The ["could not reproduce"](https://github.com/Wurst-Imperium/Wurst7/labels/could%20not%20reproduce) label lists bug reports where I haven't been able to figure this out. |
34 | | -- reporting a new dupe/exploit in Minecraft that could be added to Wurst |
35 | | -- helping with a feature request |
36 | | - - Can you explain how the feature works? |
37 | | - - Can you add the feature in a Pull Request? |
38 | | - - Do you know anything else about the feature that hasn't been mentioned? |
39 | | -- helping with the [Wurst Wiki](https://wurst.wiki/) |
40 | | - - translating Wurst Wiki articles to another language |
41 | | - - adding screenshots of features where appropriate |
42 | | - - making sure that changes from recent Wurst updates are documented |
43 | | - - digging through old Wurst updates to find out when exactly a feature was added |
44 | | -- helping people who can't figure out how to install Wurst |
45 | | -- making tutorials / how-to videos |
46 | | - - how to make [AutoBuild templates](https://wurst.wiki/autobuild#creating_templates) |
47 | | - - how to use the [profile system](https://www.wurstclient.net/updates/wurst-7-1/) |
48 | | -- creating more backups/archives of Wurst |
49 | | - - [creating a fork](https://github.com/Wurst-Imperium/Wurst7/fork) / mirror of this repository |
50 | | - - adding [WurstClient.net](https://www.wurstclient.net/) pages to the Internet Archive |
51 | | - - adding [Wurst Wiki](https://wurst.wiki/) articles to the Internet Archive |
52 | | - - archiving old [Wurst releases](https://www.wurstclient.net/download/) & source code in case they are ever taken down |
53 | | - - archiving [WiZARDHAX Wurst videos](https://www.youtube.com/c/wizardhax/videos) in case the channel is ever taken down |
54 | | -- just spreading the word, telling people about Wurst, etc. |
55 | | -- expanding this list with more things that people can do to help (This is all I could think of for now.) |
| 28 | +- **Communicate first:** Please talk to me before opening a PR. I don't like receiving PRs out of the blue. This is supposed to be a collaborative process. |
| 29 | + |
| 30 | +- **1 PR = 1 change:** Each pull request should address a single issue or add a single feature. Don't stuff PRs with unrelated changes. |
| 31 | + |
| 32 | +- **Make it easy to review:** Keep the diff small and the code readable. Include any `/give` commands or whatever I need to test your change in the PR description. Remember that review is the bottleneck. |
| 33 | + |
| 34 | +- **Follow the code style:** Run `./gradlew spotlessApply` or Eclipse settings from the [codestyle folder](codestyle). For anything that this doesn't cover, please try to match the existing style as closely as possible. |
| 35 | + |
| 36 | +- **Run tests:** `./gradlew check runClientGameTest runClientGameTestWithMods` must pass. Consider adding a gametest for your change. It's not easy, but it helps a lot. |
| 37 | + |
| 38 | +- **Sign the CLA:** <https://cla-assistant.io/Wurst-Imperium/Wurst7>. See below for why. |
| 39 | + |
| 40 | +### Why we have a CLA |
| 41 | + |
| 42 | +The CLA basically just restates the important bits of the GPLv3 license: |
| 43 | + |
| 44 | +- Copyright exists. You can't just submit code that you don't have the rights to. |
| 45 | +- You can't request to have your PR "un-merged" later. No takesies-backsies. |
| 46 | +- Anyone can use Wurst, even if it includes your code, to do things you don't like. |
| 47 | +- Anyone can sell or make money from Wurst, even if it includes your code, without having to pay you. |
| 48 | + |
| 49 | +The GPL already enforces these rules. The CLA is just there to draw attention to them, because "I didn't read the license" has happened enough times already. |
| 50 | + |
| 51 | +## Wurst Wiki |
| 52 | + |
| 53 | +Anyone can contribute to the wiki. You don't need permission. You only need an email address to create an account. |
| 54 | + |
| 55 | +See: <https://wurst.wiki/how_to_help> |
| 56 | + |
| 57 | +Note: The wiki has a Cloudflare captcha on the login/registration page to lock out spam bots. Sorry if this is blocked in your country. It's necessary. |
0 commit comments