diff --git a/docs/adding games.md b/docs/adding games.md index 1c59f256..24d9e499 100644 --- a/docs/adding games.md +++ b/docs/adding games.md @@ -341,3 +341,4 @@ The various methods and attributes are documented in `/worlds/AutoWorld.py[World [world api.md](https://github.com/ArchipelagoMW/Archipelago/blob/main/docs/world%20api.md), though it is also recommended to look at existing implementations to see how all this works first-hand. Once you get all that, all that remains to do is test the game and publish your work. +Make sure to check out [world maintainer.md](./world%20maintainer.md) before publishing. diff --git a/docs/contributing.md b/docs/contributing.md index 4e90db95..899c06b9 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -10,3 +10,5 @@ Otherwise, we tend to judge code on a case to case basis. For adding a new game to Archipelago and other documentation on how Archipelago functions, please see [the docs folder](/docs/) for the relevant information and feel free to ask any questions in the #archipelago-dev channel in our [Discord](https://archipelago.gg/discord). +If you want to merge a new game, please make sure to read the responsibilities as +[world maintainer](/docs/world%20maintainer.md). diff --git a/docs/world maintainer.md b/docs/world maintainer.md new file mode 100644 index 00000000..9cd7a378 --- /dev/null +++ b/docs/world maintainer.md @@ -0,0 +1,60 @@ +# World Maintainer + +A world maintainer is a person responsible for a world or part of a world in Archipelago. + +If a world author does not want to take on the responsibilities of a world maintainer, they can release their world as +an unofficial [APWorld](/docs/apworld%20specification.md) or maintain their own fork instead. + + +## Responsibilities + +Unless these are shared between multiple people, we expect the following from each world maintainer + +* Be on our Discord to get updates on problems with and suggestions for the world. +* Decide if a feature (pull request) should be merged. +* Review contents of such pull requests or organize peer reviews or post that you did not review the content. +* Fix or point out issues when core changes break your code. +* Use the watch function on GitHub, the #github-updates channel on Discord or check manually from time to time for new + pull requests. Core maintainers may also ping you if a pull request concerns your world. +* Test (or have tested) the world on the main branch from time to time, especially during RC (release candidate) phases + of development. +* Let us know of long unavailabilities. + + +## Becoming a World Maintainer + +### Adding a World + +When we merge your world into the core Archipelago repository, you automatically become world maintainer unless you +nominate someone else (i.e. there are multiple devs). + +### Getting Voted + +When a world is unmaintained, the [core maintainers](https://github.com/orgs/ArchipelagoMW/people) +can vote for a new maintainer if there is a candidate. +For a vote to pass, the majority of participating core maintainers must vote in the affirmative. +The time limit is 1 week, but can end early if the majority is reached earlier. +Voting shall be conducted on Discord in #archipelago-dev. + + +## Dropping out + +### Resigning + +A world maintainer can resign. If no new maintainer steps up and gets voted, the world becomes unmaintained. + +### Getting Voted out + +A world maintainer can be voted out by the [core maintainers](https://github.com/orgs/ArchipelagoMW/people), +for example when they become unreachable. +For a vote to pass, the majority of participating core maintainers must vote in the affirmative. +The time limit is 2 weeks, but can end early if the majority is reached earlier AND the world maintainer was pinged and +made their case or was pinged and has been unreachable for more than 2 weeks already. +Voting shall be conducted on Discord in #archipelago-dev. Commits that are a direct result of the voting shall include +date, voting members and final result in the commit message. + + +## Handling of Unmaintained Worlds + +As long as worlds are known to work for the most part, they can stay included. Once a world becomes broken it shall be +moved from `worlds/` to `worlds_disabled/`.