Projects for new developers: Difference between revisions
Juan Leyva (talk | contribs) |
|||
Line 57: | Line 57: | ||
:'''Possible mentor''': [http://moodle.org/user/view.php?id=21591&course=5 Dan Marsden] | :'''Possible mentor''': [http://moodle.org/user/view.php?id=21591&course=5 Dan Marsden] | ||
=== | === Improvement end-to-end testing in the Mobile app === | ||
[https://angular.github.io/protractor/#/ Protractor] is an end-to-end test framework for AngularJS applications. Protractor runs tests against your application running in a real browser, interacting with it as a user would. | [https://angular.github.io/protractor/#/ Protractor] is an end-to-end test framework for AngularJS applications. Protractor runs tests against your application running in a real browser, interacting with it as a user would. | ||
The | There are almost 40 e2e tests in the Mobile app, right now tests only works in old versions of Node and Protractor. | ||
The aim of this project is to upgrade the Node, Protractor, Selenium and the rest of dependencies to be able to run tests in both a browser and in real devices via external systems like Saucelabs. | |||
Tasks: | |||
* Upgrade the Node, Protractor and dependencies versions to be able to run tests in modern environments. | |||
* Configure the app to be able to be launched in Saucelabs via Travis (if possible). | |||
* Update Moodle Mobile documentation with new instructions for setting up both environments. | |||
:'''Skills required: Javascript (AngularJS) | :'''Skills required: Javascript (AngularJS) |
Revision as of 09:01, 1 February 2017
Getting started
Moodle uses PHP, JavaScript, SQL and a number of other Web languages, so learning those is a good place to start.
When you have some basic PHP programming skills, you may wish to start learning about how the Moodle code is organised. It is recommended that you complete the Introduction to Moodle Programming course on dev.moodle.org. To access this you will need to have an account on moodle.org first.
If you are looking for projects suggested in the tracker, look for issues with the 'addon_candidate' label.
If you are looking to make a quick contribution, look for tracker issues with marked as easy.
Please consider adopting a plugin seeking a new maintainer. See the Plugins adoption programme.
As you become more involved in Moodle development, you might like to learn more about the coding conventions used and how changes to Moodle core code are processed.
Potential projects
This evolving page lists possible Moodle projects for new developers derived from community suggestions.
If you have any ideas for new features in Moodle which might be suitable as projects for new developers, please see New feature ideas.
Pusher integration for HTML5 push notifications
Moodle supports message output plugins. By adding a plugin for pusher.com and a Javascript service worker to listen for push notifications, we can have realtime HTML5 notifications on all platforms.
- Skills required: Javascript (JQuery, AMD), PHP
- Difficulty level: Medium
- Possible mentor: Damyon Wiese
Improve Behat tests in SCORM plugin
The Moodle SCORM plugin does not contain very many behat tests and most tests are manual. The Claude Ostyn diagnostic SCO should be used to implement a range of new Behat tests to cover the functionality that the SCORM module provides.
Deliverables:
- Behat tests for all existing SCORM QA tests (where possible)
- Behat tests for all SCORM settings (eg standards mode, mastery score settings etc)
- The code should pass 100% of the Moodle codechecking tools to ensure the code meets with Moodle Guidelines.
Extra requirement for prospective students:
- We require prospective students to make an attempt at fixing at least 1 issue in the Moodle tracker before their proposal can be considered - on top of this you must also attempt to convert one existing QA test into a Behat test. This MUST be completed before your application can be considered valid.
- Skills required: PHP
- Difficulty level: Medium
- Possible mentor: Dan Marsden
Advanced Grading in Forums
Finish the work required to add the advanced grading feature to the Moodle forum activity. This builds on some existing work available at MDL-31860
Deliverables:
- Modify the forum grading so that it pushes 2 grade areas (or 3 including ratings) into the gradebook instead of a single grade.
- Improve interface that allows overall forum participation grading.
- Behat tests for all new functionality.
- The code should pass 100% of the Moodle codechecking tools to ensure the code meets with Moodle Guidelines.
Extra requirement for prospective students:
- We require prospective students to make an attempt at fixing at least 1 issue in the Moodle tracker before their proposal can be considered - on top of this you must also attempt to convert one existing QA test into a Behat test. This MUST be completed before your application can be considered valid.
- Skills required: PHP
- Difficulty level: Medium
- Possible mentor: Dan Marsden
Improvement end-to-end testing in the Mobile app
Protractor is an end-to-end test framework for AngularJS applications. Protractor runs tests against your application running in a real browser, interacting with it as a user would.
There are almost 40 e2e tests in the Mobile app, right now tests only works in old versions of Node and Protractor.
The aim of this project is to upgrade the Node, Protractor, Selenium and the rest of dependencies to be able to run tests in both a browser and in real devices via external systems like Saucelabs.
Tasks:
- Upgrade the Node, Protractor and dependencies versions to be able to run tests in modern environments.
- Configure the app to be able to be launched in Saucelabs via Travis (if possible).
- Update Moodle Mobile documentation with new instructions for setting up both environments.
- Skills required: Javascript (AngularJS)
- Difficulty level: Medium
- Possible mentor: Juan Leyva
Clef | Two-Factor Authentication
Create Clef two factor authentication plugin, so a user can log in using their mobile to reduce login time. This will improve security and reduce the login time for users.
- Skills required: PHP, Javascript
- Difficulty level: Medium
- Possible mentor: Rajesh Taneja
Multi-step login screen
Update the login screen to first ask for a username, and then the password as a two-step process. See the login process for Google
- Skills required: PHP, JavaScript, Mustache
- Difficulty level: Medium
- Possible mentor: John Okely
2FA - Two Factor Authentication
Add support for Two-Factor Authentication. This would work well when combined with the Multi-step login screen. Factors requiring consideration include the Mobile app integrations.
- Skills required: PHP, JavaScript, Mustache
- Difficulty level: Medium
- Possible mentor: Andrew Nicols
CLI Helper for Moodle Developers
Possibly an addendum to MDK, a set of scripts to help facilitate various common tasks. In particular:
- creation of Persistent Objects including their Class files, the XMLDB code to create their tables, and the XMLDB upgrade scripts required to upgrade (including version bumps)
- Skills required: PHP, Python?
- Difficulty level: Hard
- Possible mentor: Andrew Nicols
Trait for Mock DB in unit tests
In moodle we run every unit test using a real database. This is extremely slow with little benefit. Granted it does catch some cross-database compatibility issues, but we don't need it for every test. We should add a trait that test classes can use that will automatically set up mock $DB to save processing power and unnecessary waiting for DB.
- Skills required: PHP, PHPUnit
- Difficulty level: Easy
- Possible mentor: Andrew Nicols or John Okely
Mock implementation of DML
In moodle we run every unit test using a real database. This is extremely slow with little benefit. Granted it does catch some cross-database compatibility issues, but we don't need it for every test. It is possible to extend moodle_database and mock all the calls to use an in memory/mocked database. The easiest way to do this may be to use first make a Data Access Object implementation, and then use a mock DAO
- Skills required: PHP, PHPUnit
- Difficulty level: Very Hard
- Possible mentor: John Okely
See also
- GSOC - describing Moodle's involvement with Google in their Summer of Code program
- Popular new feature and improvement requests in Tracker that can be implemented as plugins
- Archive of outdated and/or inactive calls for projects
- a Wishlist by some Moodle users. Some of the good ideas here may be adopted.