In general, it's easier to contribute to the Oppia codebase if you have some knowledge of git, as well as at least one of Python or AngularJS/Angular. You don't need to know all of this before you start, though! Many of our contributors have picked these skills up concurrently while tackling their first issues.
That said, we strongly recommend that you be open to learning new things. If you need to brush up on some of the technologies used in Oppia, here are some resources that may help:
-
Git and Github are used to make changes to the repository, so it's good to know how to use them to do basic stuff like branching, merging, pulling, pushing, and committing.
-
For beginners:
-
Learn Branching Git helps explain how git works. Try the levels below:
- Levels 1, 2, and 3 from the Introduction sequence.
- Levels 1, 2, 3, 4, 5, and 6 from Push and Pull Git Remotes.
-
Introduction to GitHub covers how to use GitHub.
-
-
More advanced:
- The other levels from Learn Branching Git cover git in more depth.
- You may find this git visualizer helpful for understanding more advanced git operations. It can be helpful for simple ones too!
- GitHub's managing merge conflicts page explains how to address merge conflicts.
-
-
AngularJS (v1) and Angular (2+) are used for Oppia's frontend; we are currently in the process of migrating from AngularJS to Angular, so you will use Angular for any new code. However, you might want to know AngularJS to understand some of the code we haven't migrated yet.
Most of our open issues are in the frontend and require at least some knowledge of HTML, AngularJS/Angular and CSS, so knowledge of frontend coding will serve you well if you'd like to contribute to Oppia over the longer term.
-
AngularJS
-
A nice YouTube video tutorial for AngularJS can be found here.
-
For an outline of AngularJS, you can also take a look at this short overview with pointers to other resources.
-
-
Angular
- Check out the official documentation, which also includes a tutorial.
-
-
If you are new to HTML, some tutorials include Mozilla's guide (which includes some practice assessments), as well as this tutorial for beginners.
If you find a useful learning resource that isn't listed here, please add it to help other new contributors!