Difference between revisions of "Projects for new developers"

Jump to: navigation, search
(Add two-factor auth as a suggested project)
(Add CLI Persistent tool)
Line 99: Line 99:
 
:'''Skills required:''' PHP, JavaScript, Mustache
 
:'''Skills required:''' PHP, JavaScript, Mustache
 
:'''Difficulty level''': Medium
 
:'''Difficulty level''': Medium
 +
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=268794 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''': [https://moodle.org/user/profile.php?id=268794 Andrew Nicols]
 
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=268794 Andrew Nicols]
  

Revision as of 04:26, 24 January 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

Ability to crop/resize/rotate an image in atto

Moodle comes with it's own HTML editor known as 'atto' (see https://docs.moodle.org/dev/Atto). The editor functions similarly to other editors out there, like TinyMCE, but is tailored to Moodle. It comes with multiple plugins that allow users to perform tasks, such as changing the font size, the alignment, adding links etc. One of these plugins allows the user to add an image to the text editor with the ability to specify the size and alignment of the image via text input. The idea of this project is to extend and improve this current plugin so the user can crop/resize/rotate the image via JS - making the whole experience easier and more aesthetically pleasing.

This project details/discussion can be located at MDL-52982.

Skills required: Javascript (YUI), PHP
Difficulty level: Medium
Possible mentor: Mark Nelson

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

Add support to 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.

The basements for this project are done, see MOBILE-1179, the only remaining work is to add more tests to the app and document the set-up process in the Moodle developers wiki.

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

See also