For further information on GitHub in general, see Wikipedia's entry.
Habitica's Use of GitHub
All of the officially code supported by Habitica are housed in HabitRPG account. Some of the main repositories are:
- Source code for the main Habitica site is stored in the habitica repository.
- Mobile App for Android: Habitica is stored at habitica-android
- Mobile App for iOS: Habitica is stored in habitica-ios.
- Chrome extensions is at habitica-chrome.
- Chrome Chat Extension is housed in habitica-chat-extension.
Images and Algorithms
Most of the algorithms - such as when you score a task - are stored in the "common" directory in the habitica repository, which is used for both mobile and web. That way it can be used in multiple locations and the code does not have to be duplicated.
Bugs and Issues
With the capacity to house source code, GitHub also provides issue tracking for any repository on its servers. A GitHub account is needed to log a new issue or comment on an existing one.
However, using GitHub is usually not necessary for reporting bugs. Instead, you can go to the Habitica website and click on Help > Report a Bug to send an email to firstname.lastname@example.org. If your bug is complex or requires significant work or detailed information from you, you may be asked to report it on GitHub.
Issues in GitHub are assigned labels which identify the type, priority and status of the issue as well as section of Habitica the issue is related to. You can filter issues by labels or multiple labels in the GitHub issue list.
Learning How to Use of GitHub
For those that are new to GitHub, it is recommend to read Pro Git Book. The first two chapters will give you a good overview on using git. The third chapter regarding branching is important if you wish to work in collaborative projects with other developers.
There is also a step by step walk through provided by GitHub itself. This will take you step by step on how to branch and merge the branch with a pull request.
There is also GUI tools like GitHub Desktop which many developers find useful to quickly upload, compare changes, etc., without the need of remembering specific commands.