Contributing
There are several ways you can contribute to the C:DDA project. You can write code, support bugs, update documentation, help answer questions of people, or even donate money to help hosting and or fund development. This page will explain the several methods how to contribute.
Contributing code
For an up to date guide see CONTRIBUTING.md. Might be a bit hard to read, as it contains a lot of information. But if this page contradicts CONTRIBUTING.md, the latter is probably right.
This is a guide to setting up and using Git for the purposes of contributing to Cataclysm:DDA. This does not cover astyle, or the two spaces after sentences, or four spaces instead of indents.
First, make yourself a Github account here:
https://github.com/join?source=header-home
Then, download Git from here:
https://git-scm.com/downloads
Then install Git, for our purposes we are going to tell it to use its own Git Shell, which is where you will be entering these commands.
git clone https://github.com/CleverRaven/Cataclysm-DDA.git cd Cataclysm-DDA git checkout -b YourNewForkName
Then you want to make the changes to the code you just created. Once you are done, compile if you made changes to code, or run the game if you made changes to JSON, and then go back to the Git shell.
If it is your first time using git, you need to tell it who you are:
git config --global user.name "YourGithubUserName" git config --global user.email "YourGithubUserEmail"
Then you want to change the upstream to your own account. You can get your .git link at the top of your github page, under clone or download. It will look like this:
https://github.com/YourGithubUsername/Cataclysm-DDA.git
You change the upstream like this:
git remote set-url origin https://github.com/YourGithubUsername/Cataclysm-DDA.git
Then you add the files and commit them:
git add . git commit
This will bring you to a VIM (I think) window. Delete the lines with # in front, and let us know what you did briefly in your commit message. When you are done, hit esc, then :wq then:
git push origin YourNewForkName
Then go to your github user page, and at the top it will say something like, "YourNewForkName was pushed a couple seconds ago" you want to hit "merge / create pull request". Fill this out with more detail than your commit message. Then hit "create pull request."
Submitting bugs
If you have made a github account, as described above, you can also submit bugs/problems/requests for change to the project. This is a lot easier than adding code.
First read how to properly submit an issue to the project. See issues.md here. It is important to read this well and follow these guidelines. As proper issue reporting will save the people trying to fix the issues a LOT of time. And the less time they spend on bugs, the sooner we all get new stuff.
After reading, log into your github account go to the Cataclysm-DDA issue page. First search if your issue has not been reported already. If it has, great! Saves you work, see if you can add more information to the existing issue, and if it is a closed issue, or a stale issue, mention it is still a problem. At least, if you are still running a current version of the game. Like the experimental version. As bug reports about older versions are not valuable, as the old versions are no longer being developed, and the code has probably been changed.
If the issue has not been reported, follow the steps described in issues.md above and write up a good description of the problem. Submit it. And done.
Wait! not really done yet. Do check your email, or the issue page if you don't allow github to send you emails, for any updates on the issue, there might be some things that are not clear, so stick around to answer some questions. It really helps a lot!
Updating documentation, and writing guides
C:DDA has quite a lot of documentation about it. While most data about the game can easily be gotten from the item browser. But a lot of other information needs to be updated, or checked. Especially the wiki (you are here). You are always welcome to help out on the wiki (just make an account here, via the buttons in the upper right corner of the screen), or with suggestions on how to improve the ingame documentation (you will need to make a github account, and either make an issue out of it, or edit the code, as described above).
You can also write for advanced subjects, such as how to build multi story buildings, or surviving longer, or any other subject that you find important. First, look here at the wiki, if such a guide doesn't already exist, then improving the existing guide is probably better. Lets be honest, you can probably do a better job than the previous editor, and that guide is already outdated. So get to work.
There might also be guides at other places in the community, so you might want to ask/look around so you don't duplicate something already out there.
One word of warning, the CONTRIBUTING.md file linked above also speaks about documentation. But that is for programmers how to properly document their code. Which is different from the documentation meant here, which is or the players of C:DDA.
Translation
There is a special part on the CONTRIBUTING.md file listed earlier about how to help with translations. You should make an account at transifex, and follow the instructions in the TRANSLATING.md document.
We love it when more people help translating the game, it makes the game a lot more accessible to different people.
Answering questions, and helping people
There are various places the community gathers, such as the forums, irc, r/cataclysmdda's subreddit, and the CDDA discord channel, including a lot of new players who have questions about the game. Or older players who don't know everything. Knowledgeable, well read people (which you obviously are, if you reached this far into this guide), are a great resource. Just head out there and answer people's questions.
Donating
Don't have much time or programming skills? But you do have spare money? You can always help by donating. First, you can donate to Chesthole/Chezzo's patreon. He generously hosts this wiki, the item browser, creates tilesets and more. Go here Patreon.
Second, you can use the github bounty system. Where you put bounties on certain pieces of improvements you want to see to the code. And if sombody implements them, they get the monetary reward. While this is no guarantee somebody will implement the thing you want, it will at least be a little bit more appealing.
Lastly, you can always try to contact Kevin Granade and directly donate to him, or the project. He is generally available at the various community locations listed above. He can be a busy man however, so don't expect instant reactions.