diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..c6531368 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,81 @@ +# Contributing to rust-GameDig +This project is very open to new suggestions, additions and/or changes, these +can come in the form of *discussions* about the project's state, *proposing a +new feature*, *holding a few points on why we shall do X breaking change* or +*submitting a fix*. + +## Communications +GitHub is the place we use to track bugs and discuss new features/changes, +although we have a [Discord](https://discord.gg/NVCMn3tnxH) server for the +community, all bugs, suggestions and changes will be reported on GitHub +alongside with their backing points to ensure the transparency of the project's +development. + +## Issues +Before opening an issue, check if there is an existing relevant issue first, +someone might just have had your issue already, or you might find something +related that could be of help. + +When opening a new issue, make sure to fill the issue template. They are made +to make the subject to be as understandable as possible, not doing so may result +in your issue not being managed right away, if you don't understand something +(be it regarding your own problem/the issue template/the library), please state +so. + +## Development +Note before contributing that everything done here is under the [MIT](https://opensource.org/license/mit/) license. +### Naming +Naming is an important matter, and it shouldn't be changed unless necessary. + +Game **names** should be added as they appear on steam (or other storefront +if not listed there) with the release year appended in brackets (except when the +release year is already part of the name). +If there is a mod that needs to be added (or it adds the support for server +queries for the game), its name should be composed of the game name, a separating +**bracket**, the mod name and the release year as specified previously +(e.g. `Grand Theft Auto V - FiveM (2013)`). + +A game's **identification** is a lowercase alphanumeric string will and be forged +following these rules: +1. Names composed of a maximum of two words (unless #4 applies) will result in an +id where the words are concatenated (`Dead Cells` -> `deadcells`), acronyms in +the name count as a single word (`S.T.A.L.K.E.R.` -> `stalker`). +2. Names of more than two words shall be made into an acronym made of the +initial letters (`The Binding of Isaac` -> `tboi`), [hypenation composed words](https://prowritingaid.com/hyphenated-words) +don't count as a single word, but of how many parts they are made of +(`Dino D-Day`, 3 words, so `ddd`). +3. If a game has the exact name as a previously existing id's game +(`Star Wars Battlefront 2`, the 2005 and 2017 one), append the release year to +the newer id (2005 would be `swbf2` (suppose we already have this one supported) +and 2017 would be `swbf22017`). +4. If a new id (`Day of Dragons` -> `dod`) results in an id that already exists +(`Day of Defeat` -> `dod`), then the new name should ignore rule #2 +(`Day of Dragons` -> `dayofdragons`). +5. Roman numbering will be converted to arabic numbering (`XIV` -> `14`). +6. Unless numbers are at the end of a name, they will be considered words, +but digits will always be used instead of the acronym (counter to #2) (`Left 4 +Dead` -> `l4d`) unless they at the start position (`7 Days to Die` -> `sdtd`), +if they are at the end (such as sequel number or the year), always append them +(`Team Fortress 2` -> `teamfortress2`, `Unreal Tournament 2003` -> +`unrealtournament2003`). +7. If a game supports multiple protocols, multiple entries will be done for +said game where the edition/protocol name (first disposable in this order) will +be appended to the game name (Minecraft is divided by 2 editions, Java and Bedrock +which will be `minecraftjava` and `minecraftbedrock` respectively) and one more +entry can be added by the base name of the game which queries in a group said +supported protocols to make generic queries easier and disposable. +8. If its actually about a mod that adds the ability for queries to be performed, +process only the mod name. + +### Priorities +Game suggestions will be prioritized by maintainers based on whether the game +uses a protocol already implemented in the library (games that use already +implemented protocols will be added first), except in the case where a +contribution is made with the protocol needed to implement the game. + +The same goes for protocols, if 2 were to be requested, the one implemented in +the most games will be prioritized. + +### Releases +Currently, there is no release schedule. +Releases are made when the team decides one will be fitting to be done.