You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CONTRIBUTING.md 5.0 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # Contributing Guide
  2. There are many ways in which you can contribute to the project, be it reporting issues, fixing them, implementing new features or even making art/audio assets.
  3. If anything in this contributing guide is not clear, don't hesitate to contact Waf or Vildravn on [Isleward's Discord](https://discord.gg/gnsn7ZP).
  4. ## Issues
  5. ### Creating Issues
  6. * Isleward uses the integrated [Issue Tracker](https://gitlab.com/Isleward/isleward/issues) on GitLab.
  7. * Issues are used to track work to be done (this includes bug fixes).
  8. * Before making a new issue, make sure the same issue is not already listed in the issue tracker, either opened or already closed.
  9. * In case it is listed and you have some more info, for example on how to reproduce a bug, post a comment in the original issue.
  10. * If the issue is of a more sensitive nature (a serious game breaking exploit for example), please report the issue as [confidential](#confidential-issues).
  11. ### Issue Labels
  12. Labels can only be assigned by people with Reporter and higher permissions in the project (see [Members](https://gitlab.com/Isleward/isleward/project_members)).
  13. People with rights to assign labels should do so regularly to keep the issues organized.
  14. The project is using the following, rather self-explanatory, labels:
  15. * ~Balance
  16. * ~Bug
  17. * ~Content
  18. * ~DevOps
  19. * ~Draft
  20. * ~Enhancement
  21. * ~Feature
  22. * ~Good first issue
  23. * ~Mobile
  24. * ~Mod
  25. * ~Modding
  26. * ~Polish
  27. * ~Refactor
  28. * ~Suggestion
  29. ### Issue Weights
  30. * In addition to labels, issues tagged with the ~Bug label are also assigned Weights.
  31. * Bugs are weighed by severity, with 1 being trivial and 5 being severe.
  32. * Weights can assigned by people with Reporter or higher privileges.
  33. ### Confidential Issues
  34. * Confidential issues are issues that are visible only to people with Reporter or higher access rights.
  35. * Therefore they are very useful for reporting issues that are very sensitive and that not every user should know about.
  36. * To create a confidential issue, simply check the `This issue is confidential and should only be visible to team members with at least Reporter access.` checkbox when creating a new issue.
  37. ### Becoming a Reporter
  38. For more information about becoming a reporter, contact Waf on [Isleward's Discord](https://discord.gg/gnsn7ZP).
  39. ## Project Workflow
  40. ### Branching Structure
  41. The project is using the following branching structure
  42. * `master`
  43. * `release`
  44. * release tags (e.g. `0.3.1`)
  45. * feature branches (e.g. `990-contributing-rewrite`)
  46. **master** is the "nightly" branch, so to speak. All feature branches should be branched from and merged into `master`.
  47. **release** is a single release branch. When a new version is to be released, `master` is merged into this branch and a release tag is created.
  48. **release tags** are pointing at the latest commit in `release` at the point of releasing a new version.
  49. **feature branches** are branches in which the actual development happens. The name of a feature branch should always contain the number of the issue that's being addressed (e.g. the `990` in `990-contribuing-rewrite`), and be all lowercase with hyphens between words.
  50. ### Using SSH keys
  51. While not necessary, it is recommended to use SSH keys with git. Please follow [this page](https://gitlab.com/help/ssh/README.md) to learn how to set up and use SSH keys.
  52. ### Forking and Syncing
  53. All contributed work needs to be done in your own fork, in a branch created from the `master` branch. To learn more about forking a repository, follow [this guide](https://docs.gitlab.com/ce/workflow/forking_workflow.html).
  54. In case your work on the contribution is taking longer, your branch may become out of date with the parent repository. [This article](https://help.github.com/articles/syncing-a-fork/) from GitHub will help you sync your fork with the upstream (parent) repository.
  55. ### Code Style and Linting
  56. Isleward uses ESLint and has a .eslintrc file with rules set up. When contributing code, please make sure to fix any errors and warnings produced by ESLint as your merge request won't be accepted otherwise.
  57. Also please make sure to follow the [JS Style Guide](https://gitlab.com/Isleward/isleward/wikis/JS-Style-Guide).
  58. ### Merge Requests
  59. Once you are done working on your contribution, you need to submit a merge request to merge your branch from your fork back into the upstream (parent) repository.
  60. The merge request should have `master` as its target branch unless arranged otherwise.
  61. You don't need to remove the source branch upon accepting the merge request if the merge request is being made from a fork.
  62. Squishing commits is usually not recommended as it breaks the ability to rebase nicely in certain cases.
  63. Once your merge request is submitted, GitLab CI will run a few tests on it. Should those tests fail, please address the failures.
  64. A Merge Request with passing tests is ready to be merged.
  65. ### Running Isleward
  66. * [Windows](https://gitlab.com/Isleward/isleward/wikis/installation-and-usage-(windows))
  67. * [Linux](https://gitlab.com/Isleward/isleward/wikis/installation-and-usage-(linux))
  68. * [MacOS](https://gitlab.com/Isleward/isleward/wikis/installation-and-usage-(macos))