Update contrib doc pages

This commit is contained in:
Griatch 2022-01-08 16:30:31 +01:00
parent e96bbb4b86
commit 3b5e20c4c2
5 changed files with 176 additions and 169 deletions

View file

@ -1,118 +1,192 @@
# Contributing
# How To Contribute And Get Help
If you cannot find what you are looking for in the documentation, here's what to do:
Wanna help out? Great! Here's how.
- If you need help, want to start a discussion or get some input on something
you are working on, make a post to the [discussions forum][forum].
- If you want more direct discussions with developers and other users, drop
into our very friendly [Discord channel][chat].
- If you think the documentation is not clear enough, create a [documentation issue][issues]
- If you have trouble with a missing feature or a problem you think is a bug,
[request or report it][issues].
## Spreading the word
## Community and Spreading the word
Even if you are not keen on working on the server code yourself, just spreading the word is a big
help - it will help attract more people which leads to more feedback, motivation and interest.
Consider writing about Evennia on your blog or in your favorite (relevant) forum. Write a review
somewhere (good or bad, we like feedback either way). Rate it on places like [ohloh][ohloh]. Talk
about it to your friends ... that kind of thing.
Being active and helpful in the [forums][forum] or [chat][chat] is already a big
help.
## Donations
The best way to support Evennia is to become an [Evennia patron][patron]. Evennia is a free,
open-source project and any monetary donations you want to offer are completely voluntary. See it as
a way of announcing that you appreciate the work done - a tip of the hat! A patron donates a
(usually small) sum every month to show continued support. If this is not your thing you can also
show your appreciation via a [one-time donation][donate] (this is a PayPal link but you don't need
PayPal yourself).
Consider writing about Evennia on your blog or in your favorite (relevant)
forum. Write a review somewhere (good or bad, we like feedback either way). Rate
it on listings. Talk about it to your friends ... that kind of thing.
## Help with Documentation
Evennia depends heavily on good documentation and we are always looking for extra eyes and hands to
improve it. Even small things such as fixing typos are a great help!
Evennia depends heavily on good documentation and we are always looking for
extra eyes and hands to improve it. Even small things such as fixing typos are a
great help!
The documentation is a wiki and as long as you have a GitHub account you can edit it. It can be a
good idea to discuss in the chat or forums if you want to add new pages/tutorials. Otherwise, it
goes a long way just pointing out wiki errors so we can fix them (in an Issue or just over
chat/forum).
- Easiest is to just [report dicumentation issues][issues] as you find them. If
we don't know about them, we can't fix them!
- If you want to help edit the docs directly, [check here](./Contributing-Docs.md)
on how to do it.
- If you have knowledge to share, how about writing a new [Tutorial](Howto/Howto-Overview.md)?
## Contributing through a forked repository
## Helping with code
We always need more eyes and hands on the code. Even if you don't feel confident with tackling a
[bug or feature][issues], just correcting typos, adjusting formatting or simply *using* the thing
and reporting when stuff doesn't make sense helps us a lot.
If you find bugs, or have a feature-request, [make an issue][issues] for it. If
it's not in an issue, the issue will most likely be forgotten.
The most elegant way to contribute code to Evennia is to use GitHub to create a *fork* of the
Evennia repository and make your changes to that. Refer to the [Forking Evennia](Version-
Control#forking-evennia) version
control instructions for detailed instructions.
Even if you don't feel confident with tackling a [bug or feature][issues], just
correcting typos, adjusting formatting or simply *using* the thing and reporting
when stuff doesn't make sense helps us a lot.
Once you have a fork set up, you can not only work on your own game in a separate branch, you can
also commit your fixes to Evennia itself. Make separate branches for all Evennia additions you do -
don't edit your local `master` or `develop` branches directly. It will make your life a lot easier.
If you have a change that you think is suitable for the main Evennia repository, you issue a [Pull
Request][pullrequest]. This will let Evennia devs know you have stuff to share. Bug fixes should
generally be done against the `master` branch of Evennia, while new features/contribs should go into
the `develop` branch. If you are unsure, just pick one and we'll figure it out.
## Contributing with Patches
- The code itself should follow Evennia's [Code style guidelines][codestyle] both
for code and documentation. You should write code for that others can read an understand.
- Before merging, your code will be reviewed. Merging of your code into Evennia
is not guaranteed. Be ready to receive feedback and to be asked to make
corrections or fix bugs or any documentation issues and possibly tests (this
is normal and nothing to worry about).
To help with Evennia development it's recommended to do so using a fork repository as described
above. But for small, well isolated fixes you are also welcome to submit your suggested Evennia
fixes/addendums as a [patch][patch].
### Using a Forked reposity
You can include your patch in an Issue or a Mailing list post. Please avoid pasting the full patch
text directly in your post though, best is to use a site like [Pastebin](https://pastebin.com/) and
just supply the link.
The most elegant way to contribute code to Evennia is to use GitHub to create a
*fork* of the Evennia repository and make your changes to that. Refer to the
[Forking Evennia](Coding/Version-Control.md#forking-evennia) version control instructions
for detailed instructions.
## Contributing with Contribs
Once you have a fork set up, you can not only work on your own game in a
separate branch, you can also commit your fixes to Evennia itself.
While Evennia's core is pretty much game-agnostic, it also has a `contrib/` directory. The `contrib`
directory contains game systems that are specialized or useful only to certain types of games. Users
are welcome to contribute to the `contrib/` directory. Such contributions should always happen via a
Forked repository as described above.
- Make separate branches for all Evennia additions you do - don't edit your
local `master` or `develop` branches directly. It will make your life a lot
easier.
- If you have a change that you think is suitable for the main Evennia
repository, issue a [Pull Request][pullrequest]. This will let Evennia
devs know you have stuff to share.
- Bug fixes should generally be done against the `master` branch of Evennia,
while new features/contribs should go into the `develop` branch. If you are
unsure, just pick one and we'll figure it out.
* If you are unsure if your idea/code is suitable as a contrib, *ask the devs before putting any
work into it*. This can also be a good idea in order to not duplicate efforts. This can also act as
a check that your implementation idea is sound. We are, for example, unlikely to accept contribs
that require large modifications of the game directory structure.
* If your code is intended *primarily* as an example or shows a concept/principle rather than a
working system, it is probably not suitable for `contrib/`. You are instead welcome to use it as
part of a [new tutorial][tutorials]!
* The code should ideally be contained within a single Python module. But if the contribution is
large this may not be practical and it should instead be grouped in its own subdirectory (not as
loose modules).
* The contribution should preferably be isolated (only make use of core Evennia) so it can easily be
dropped into use. If it does depend on other contribs or third-party modules, these must be clearly
documented and part of the installation instructions.
* The code itself should follow Evennia's [Code style guidelines][codestyle].
* The code must be well documented as described in our [documentation style
guide](https://github.com/evennia/evennia/blob/master/CODING_STYLE.md#doc-strings). Expect that your
code will be read and should be possible to understand by others. Include comments as well as a
header in all modules. If a single file, the header should include info about how to include the
contrib in a game (installation instructions). If stored in a subdirectory, this info should go into
a new `README.md` file within that directory.
* Within reason, your contribution should be designed as genre-agnostic as possible. Limit the
amount of game-style-specific code. Assume your code will be applied to a very different game than
you had in mind when creating it.
* To make the licensing situation clear we assume all contributions are released with the same
[license as Evennia](./Licensing.md). If this is not possible for some reason, talk to us and we'll
handle it on a case-by-case basis.
* Your contribution must be covered by [unit tests](Coding/Unit-Testing.md). Having unit tests will both help
make your code more stable and make sure small changes does not break it without it being noticed,
it will also help us test its functionality and merge it quicker. If your contribution is a single
module, you can add your unit tests to `evennia/contribs/tests.py`. If your contribution is bigger
and in its own sub-directory you could just put the tests in your own `tests.py` file (Evennia will
find it automatically).
* Merging of your code into Evennia is not guaranteed. Be ready to receive feedback and to be asked
to make corrections or fix bugs. Furthermore, merging a contrib means the Evennia project takes on
the responsibility of maintaining and supporting it. For various reasons this may be deemed to be
beyond our manpower. However, if your code were to *not* be accepted for merger for some reason, we
will instead add a link to your online repository so people can still find and use your work if they
want.
### Contributing with Patches
[ohloh](http://www.ohloh.net/p/evennia)
[patron](https://www.patreon.com/griatch)
[donate](https://www.paypal.com/en/cgi-bin/webscr?cmd=_flow&SESSION=TWy_epDPSWqNr4UJCOtVWxl-)
pO1X1jbKiv_-
UBBFWIuVDEZxC0M_2pM6ywO&dispatch=5885d80a13c0db1f8e263663d3faee8d66f31424b43e9a70645c907a6cbd8fb4
[forking](https://github.com/evennia/evennia/wiki/Version-Control#wiki-forking-from-evennia)
[pullrequest](https://github.com/evennia/evennia/pulls)
[issues](https://github.com/evennia/evennia/issues)
[patch](https://secure.wikimedia.org/wikipedia/en/wiki/Patch_%28computing%29 )
[codestyle](https://github.com/evennia/evennia/blob/master/CODING_STYLE.md)
[tutorials](https://github.com/evennia/evennia/wiki/Tutorials)
To help with Evennia development it's strongly recommended to do so using a
forked repository as described above. But for small, well isolated fixes you are
also welcome to submit your suggested Evennia fixes/addendums as a
[patch][patch].
You can include your patch in an Issue or a Mailing list post. Please avoid
pasting the full patch text directly in your post though, best is to use a site
like [Pastebin](https://pastebin.com/) and just supply the link.
### Making an Evennia contrib
Evennia has a [contrib](Contribs/Contrib-Overview.md) directory which contains
user-shared code organized by category. You can contribute anything that you
think may be useful to another dev, also highly game-specific code. A contrib
must always be added via a forked respository.
#### Guidelines for making a contrib
- If you are unsure about if your contrib idea is suitable or sound, *ask in
discussions or chat before putting any work into it*. We are, for example,
unlikely to accept contribs that require large modifications of the game
directory structure.
- If your code is intended *primarily* as an example or to show a
concept/principle rather than a working system, you _can_ add to the
`contribs/tutorials/` subfolder, but consider if it may be better to instead
write a new tutorial doc page.
- The contribution should preferably work in isolation from other contribs (only
make use of core Evennia) so it can easily be dropped into use. If it does
depend on other contribs or third-party modules, these must be clearly
documented and part of the installation instructions.
- The contrib must be contained within a separate folder under one of the
contrib categories (`game_systems`, `rpg`, `utils` etc). Ask if you are
unsuare which category to put your contrib under.
- The folder (package) should be on the following form:
```
mycontribname/
__init__.py
README.md
module1.py
module2.py
...
tests.py
```
It's often a good idea to import useful resources in `__init__.py` to make
it easier to access them (this may vary though).
The `README.md` will be parsed and converted into a document linked from
[the contrib overview page](Contribs/Contrib-Overview.md). It should follow
the following structure:
```markdown
# MyContribName
Contribution by <yourname>, <year>
A paragraph (can be multi-line)
summarizing the contrib (required)
Optional other text
## Installation
Detailed installation instructions for using the contrib (required)
## Usage
## Examples
etc.
```
The credit and first paragraph-summary will be used on the index page. Every
contrib's readme must contain an installation instruction. See existing contribs
for help.
- If possible, try to make contribution as genre-agnostic as possible and assume
your code will be applied to a very different game than you had in mind when creating it.
- To make the licensing situation clear we assume all contributions are released
with the same [license as Evennia](./Licensing.md). If this is not possible
for some reason, talk to us and we'll handle it on a case-by-case basis.
- Your contribution must be covered by [unit tests](Coding/Unit-Testing.md). Put
your tests in a module `tests.py` under your contrib folder - Evennia will
find them automatically.
- In addition to the normal review process, it's worth noting that merging a
contrib means the Evennia project takes on the responsibility of maintaining
and supporting it. For various reasons this may be deemed beyond our manpower.
- If your code were to *not* be accepted for some reason, you can ask us to
instead link to your repo from our link page so people can find your code that
way.
## Donations
Evennia is a free, open-source project and any monetary donations you want to
offer are _completely voluntary_. See it as a way of showing appreciation by
dropping a few coins in the cup.
- You can support Evennia as an [Evennia patreon][patron]. A patreon donates a
(usually small) sum every month to show continued support.
- If a monthly donation is not your thing, you can also show your appreciation
by doing a [one-time donation][donate] (this is a PayPal link but you don't need
PayPal yourself to use it).
[patron]: https://www.patreon.com/griatch
[donate]: https://www.paypal.com/donate?token=zbU72YdRqPgsbpTw3M_4vR-5QJ7XvUhL9W6JlnPJw70M9LOqY1xD7xKGx0V1jLFSthY3xAztQpSsqW9n
[forking]: https://github.com/evennia/evennia/wiki/Version-Control#wiki-forking-from-evennia
[pullrequest]: https://github.com/evennia/evennia/pulls
[issues]: https://github.com/evennia/evennia/issues
[patch]: https://secure.wikimedia.org/wikipedia/en/wiki/Patch_%28computing%29
[codestyle]: https://github.com/evennia/evennia/blob/master/CODING_STYLE.md
[forum]:https://github.com/evennia/evennia/discussions
[issues]:https://github.com/evennia/evennia/issues/choose
[chat]: https://discord.com/invite/AJJpcRUhtF
[paypal]: https://www.paypal.com/se/cgi-bin/webscr?cmd=_flow&SESSION=Z-VlOvfGjYq2qvCDOUGpb6C8Due7skT0qOklQEy5EbaD1f0eyEQaYlmCc8O&dispatch=5885d80a13c0db1f8e263663d3faee8d64ad11bbf4d2a5a1a0d303a50933f9b2
[patreon]: https://www.patreon.com/griatch
[issues-bounties]:https://github.com/evennia/evennia/labels/bounty
[bountysource]: https://www.bountysource.com/teams/evennia