-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Learning Resources
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.
-
-
Most of our open issues are in the frontend and require at least some knowledge of HTML, Angular and CSS, so knowledge of frontend coding will serve you well if you'd like to contribute to Oppia over the longer term.
-
JavaScript/TypeScript
-
Check out this TypeScript tutorial
-
Check out https://jskatas.org/#bundle-es6-katas for some JavaScript practice exercises using ES6.
-
-
Angular
-
Check out the official documentation, which also includes a tutorial.
-
This slide deck might also be helpful: Let's Learn Angular!
-
-
HTML/CSS:
-
See Mozilla's guide, which includes some practice assessments.
-
Here is an HTML tutorial for beginners.
-
This is a fun game for learning CSS: https://flexboxfroggy.com/
-
-
-
Our backend is written in Python. If you are new to Python, then:
-
The free CS50p course is a great place to start learning.
-
W3Schools' Python Tutorial is a good quick reference guide and includes interactive practice exercises.
-
Also, check out the official Python documentation.
-
-
Explore our curated tutorials designed to help contributors familiarize themselves with our codebase and gain hands-on experience with the development process at Oppia.
If you find a useful learning resource that isn't listed here, please add it to help other new contributors!
Have an idea for how to improve the wiki? Please help make our documentation better by following our instructions for contributing to the wiki.
Core documentation
Developing Oppia
- FAQs
- How to get help
- Getting started with the project
- How the codebase is organized
- Making your first PR
- Debugging
- Testing
- Codebase policies and processes
- Guidelines for launching new features
- Guidelines for making an urgent fix (hotfix)
- Testing jobs and other features on production
- Guidelines for Developers with Write Access to oppia/oppia
- Release schedule and other information
- Revert and Regression Policy
- Privacy aware programming
- Code review:
- Project organization:
- QA Testing:
- Design docs:
- Team-Specific Guides
- LaCE/CD:
- Developer Workflow:
Developer Reference
- Oppiabot
- Git cheat sheet
- Frontend
- Backend
- Backend Type Annotations
- Writing state migrations
- Calculating statistics
- Storage models
- Coding for speed in GAE
- Adding a new page
- Adding static assets
- Wipeout Implementation
- Notes on NDB Datastore transactions
- How to handle merging of change lists for exploration properties
- Instructions for editing roles or actions
- Protocol buffers
- Webpack
- Third-party libraries
- Extension frameworks
- Oppia-ml Extension
- Mobile development
- Performance testing
- Build process
- Best practices for leading Oppia teams
- Past Events