This is an AMP version of the article, its original content can be found here.
This manual explains the workflow used when working with a XDSD project hosted on GitHub.com. You start when a GitHub issue is assigned to you. Next, you will receive a message from a project manager containing the issue number, title, description and its budget in hours (usually 30 minutes).
If you don't agree with the budget allotment, don't hesitate to ask for an increase. As soon as you are comfortable with the budget and understand the scope of the work, say so in a reply to the ticket and start working. Be aware that you won't be paid for time spent above and beyond the allotted time budget.
Even though you're part of the development team, you don't have write access to the repository in GitHub. Consequently, to contribute changes, you should fork the repository to your own GitHub account (create a private copy of it), make needed changes and then submit them for review using "a pull request."
After you submit a pull request review, the repository owner approves your changes by merging them into the main repository. This is how we protect the main development stream against accidental damage.
This article explains how to fork a repository: fork-a-repo
This one explains how to download and install GitHub on your computer: set-up-git
Finally, don't forget to add your private SSH key to GitHub: generating-ssh-keys
Once you have a forked our repository to your account, clone it to your
computer, and then check out the
master branch. For example:
Now, it's time to branch (
123 is the number of the GitHub issue you're going
to work with, and the name of the branch):
By convention, we use the same names for the branch and issue you're working with.
All task-related questions should be discussed in the GitHub issue. For GitHub issues, we don't use emails, Skype, phone calls or meetings. All questions should be asked directly in the GitHub issues.
Don't hesitate to submit new issues if something is not clear or you need help. It's a very common to receive a task that you may not be able to implement. Don't panic. This usually happens when you first just join a project and don't yet have enough information. If this happens, don't try to figure out a problem or issue by yourself.
The rule of thumb for this type of situation is: "if something is not clear, it is our fault, not yours." Therefore, if you don’t understand the project design, it is the fault of the project designer.
Submit a bug report requesting an explanation of a design concept. You will be paid for this report, and the information you receive in the reply will be shared between all other developers.
Read this article: Bugs Are Welcome.
Don't expect anyone to help you. Your only source of help is the source code itself. If the code doesn't explain everything you need to know—it is a bug, which must be reported.
4. Commit and Push
Make any needed changes using a text editor or IDE. It's a good practice to commit changes as soon as you make them. Don't accumulate large numbers of changes too long before committing them.
If you have questions about the scope of work, post them in the GitHub issue and wait for an answer. If you think that the existing code needs improvements, don't hesitate to submit a new issue to GitHub.
Don't try to fix all problems in one branch; let other programmers take care of them.
5. Pull Request
Create a pull request in GitHub using the process in the following article: using-pull-requests
Post its number in the original issue and wait for feedback.
6. Code Review
After a while, your pull request will be reviewed by someone from the project
team. In many cases, you may receive a few negative comments, and you will have
to fix any and all issues associated with them. Your pull request won't be
master branch, until your changes satisfy the reviewer.
Be patient with the reviewer, and listen to him carefully. However, don't think that your reviewer is always right. If you think that your changes are valid, insist that someone else review them.
When everything looks good to the reviewer, he will inform our automated
The automated merge bot will then select your pull request and try to merge
master branch. For various reasons, this operation fails often. If the
merge fails, regardless of the reason, it is your responsibility to make sure
that your branch is merged successfully.
If you can't merge a branch because of failures in tests not associated with your task, don't try to fix them yourself. Instead, report a problem as a new bug and wait for its resolution.
Remember, until your branch is merged, you are not paid.
Once your changes are merged, return to the GitHub issue and ask the author to close it. Once the issue is closed by a project manager, you will receive your payment within a few hours, through oDesk or PayPal.