Contribute

## Contribution Overview

* How To Contribute

Are you the kind of person who likes to contribute to a community where you belong? You came to the right place: ChromieCraft is a NON-profit project, based on AzerothCore and entirely managed by volunteers who believe in the open-source philosophy.

If you want to help the project, you do not need any special permission or access, can already start contributing. Being that our project codebase and communication channels are completely open, everyone can just start learning and contribute.

*The open-source is not only our philosophy: it is our strength.*

And, there is actually a lot you can do even if you are not a programmer. As we will explain here, there are different roles you can choose to make ChromieCraft a better project. Both technical and non-technical roles.

People who contribute regularly to the project that show professionalism and dedication may be considered to become ChromieCraft Staff.

## Game-Master applications

Thank you for your interest in contributing to our project. While we always look for active contributors, who can help us to raise the quality of AzerothCore and ChromieCraft even further, our GMs will be recruited from our Contributors. All our GMs earned their state by fulfilling one or more of the roles below.

## Non-technical roles

### Bug reporter

Reporting bugs in our bug tracker is of course a way of helping our project. Just make sure to:

* avoid reporting duplicates: always search among the existing bugs before opening a new report
* make sure what you are reporting is actually a bug – checking bug reports takes us time, help us save it, and double-check your reports before submitting them
* make sure you fill the template of the report and include enough information so it is easy to understand and reproduce the bug
* always include reproduction steps: developers cannot fix a bug if they cannot reproduce it first
* include links to any items/NPCs/Spells/etc… related to the bug, you can use wowgaming or similar search engines
* attach images or videos to the bug report, you can easily drag-n-drop (or copy-paste) images directly into the GitHub report
* if you think some game mechanic should work differently than it currently does, you have to include relevant sources that demonstrate it

### Advertiser

Help our community grow and find new users and contributors by advertising our project around the web.

### Videomaker

Creating videos about playing on ChromieCraft and publishing them on YouTube helps our project to get more visibility and gives our advertisers great tools to better do their job.

Make sure you include “ChromieCraft” in the video title and our website URL in the video description.

### Graphics Designer / Artwork creator

If you have image editing skills, you can help us by providing graphic content for our website.

You can also help the project by providing nice screenshots of the game that include the ChromieCraft logo, so we can include them in our website posts. For more info about this, check the #chromie-artworks channel of our Discord server.

### Supporter

You can help other users who need help with installing and accessing the game or simply need some generic guidance by answering their questions on the #support channel of our Discord.

### Moderation

Help us keeping ChromieCraft a friendly community. Report to the Moderators or Admins whatever needs to come to our attention.

Always act to turn off any drama instead of feeding it. Encourage people to use the ignore feature of the game instead of feeding the troll.

Be a peacekeeper. This will make you a good candidate to become a Moderator.

## Technical roles

Don’t let the word “technical” scare you. There is a huge amount of tasks you can perform by just getting a local AzerothCore server running on your computer.

This guide can give an overview of how to achieve it as well as giving extra hints on how to learn further: Getting started with AzerothCore.

The technical roles are listed from the easiest role to the most complex. Per every role some requirements are listed, every role implicitly requires the requirements of the previous role(s).

### Bug triaging

Requirements:

* basic knowledge of the game
* NEW: using the ChromieCraft PTR to triage bugs OR a local AzerothCore server (of a recent version) installed in your machine [recommended]
* a free GitHub account

Nice to have:

* good knowledge of GM commands (but you can learn them along the way)

Players report bugs to the ChromieCraft bug tracker on GitHub. We receive many bug reports, however, not all of them are valid or properly reported. So contributors have to triage the bug reports and link the valid ones to the AzerothCore GitHub repository, dividing them per category (e.g. generic bugs, 1-19, 20-29, etc…), where all the technical discussions happen, so developers can focus on them.

Bug triaging is very simple and extremely important for our project. If you are able to install a local AzerothCore server on your PC, you can help with this.

The process of Bug Triaging is explained here: >>> HOW TO TRIAGE BUG REPORTS <<<

We are always looking for contributors who can help us in the process. Initially, you do not have the permissions to change the labels of the issues, so just leave a comment instead. After you start doing some triaging, you will be granted permissions to change the issue labels by yourself.

### Game Tester

No (additional) requirements.

Nice to have:

* having a good understanding of the basic git command can help

At AzerothCore no one pushes fixes directly into the master branch. Not even admins. We care about stability, so we first require every developer to open a Pull Request (PR) containing the code changes, which must be properly reviewed and tested. We mark the PRs that require to be tested with a [Waiting to be tested] label.

Contributing as a Game Tester is also relatively easy, and it is so important that we have published a dedicated guide for it: How to test PRs at AzerothCore.

Helping the project by testing PRs will give a boost to our project development, allowing fixes to be approved faster and get to the ChromieCraft live server sooner.

### DB Fixer

(Additional) requirements:

* use applications such as Keira3
* understanding of how the tables of the AC world database are structured
* basic understanding of the SQL language `SELECT`, `UPDATE`, `DELETE`and `INSERT` statement

Nice to have:

* a deeper understanding of the SQL language can help

If you want to learn how to fix bugs in WoW, this is your starting point. This point is well explained here so there is no need to repeat it.

### Core Developer

Requirements:

* Knowledge of the C++ programming language
* – OR –  knowledge of other object-oriented programming languages and be willing to learn C++

If you want to learn C++ and help with core development, we recommend getting some programming knowledge first. Unlike the other tasks, this is not something you can figure by just experimenting with your local server. There are plenty of tutorials online about C++ programming, like this for example.

Also, it is good to get a good IDE so you can easily do debugging, such as Visual Studio (Windows-only) or CLion (cross-platform). You can try CLion for free for 1 month, then we can give you an open-source license.

### Bugs lifecycle and where to find reports

In short, the lifecycle of a bug is:

* 1) the player finds a bug and reports it on the ChromieCraft bugtracker
* 2) a contributor triages the bug report and link it to AzerothCore
* 3) a contributor creates a fix and submit it via PR
* 4) the PR is then reviewed and tested
* 5) the PR is then merged into AzerothCore `master` and so the bug solution will get to ChromieCraft at the next server update (check #changelog-chromie on Discord to know when the server gets updated)

Bug reports coming from ChromieCraft that have passed the triaging step are divided into GitHub “projects”. Every project contains all the bugs of different contents, for example: “generic bugs”, “1-19”, “20-29”, etc… You can pick a bug that is in TODO and does not have any open solution or assignee yet and work on it. When you have a solution ready, send your code via PR.

## Rewards

Bug reporters are compensated monthly with Chromie Points according to the number of valid reports (i.e. issues having the [AC Linked] tag on GitHub).

All regular ChromieCraft contributors (i.e. people who help with bug triaging, testing, development, GMs, etc…) are compensated monthly with a number of Chromie Points according to their contributions. In addition, they can access the following exclusive (non-game-breaking) services for free:

* Warlock pets custom names
* Move characters to a different account
* RAF pet rewards without needing to recruit
* Guild rename (not exclusive anymore, yet still free)

Senior contributors will also receive a permanent rested bonus to all their characters, similar to our RAF program available for all users. This bonus will not have an effect within a week of a new bracket launching.

## Contact us

If you need any assistance while contributing, just poke us on the ChromieCraft Discord.

Any development-related discussions about AzerothCore should take place in the AzerothCore Discord instead. Public conversations are preferred to private messages, unless really necessary,

For technical questions such as programming, installation, troubleshooting, or usage of AzerothCore, it is better to use StackOverflow rather than directly ask on Discord (read this).