Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Projects for new developers: Difference between revisions

From MoodleDocs
(21 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{GSOC}}
{{GSOC}}
==Getting started==
==Getting started==


Line 17: Line 16:
==Potential projects==
==Potential projects==


This evolving page lists possible Moodle projects for new developers derived from community suggestions.
This evolving page lists possible Moodle projects for new developers derived from community suggestions and lists projects together with experienced core developers willing to mentor new developers.


''If you have any ideas for new features in Moodle which might be suitable as projects for new developers, please see [[New feature ideas]].''
''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 ===
=== Improve SCORM plugin ===
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.
There are a number of areas of SCORM that could be improved as part of a GSOC project, some of these are bigger projects and others could be combined to form a single project.
:'''Skills required''': Javascript (JQuery, AMD), PHP
:'''Difficulty level''': Medium
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=1337843 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:
These are just some examples, take a look at the open SCORM issues in the Moodle tracker for a list of other issues.
* Behat tests for all existing SCORM QA tests (where possible)
* Improve Grading (MDL-51086, MDL-52871, MDL-37421)
* Behat tests for all SCORM settings (eg standards mode, mastery score settings etc)  
* Improve validation of SCORM packages (MDL-38060, MDL-24057)
* The code should pass 100% of the Moodle codechecking tools to ensure the code meets with Moodle Guidelines.
* Convert YUI Treeview to use Jquery (Moodle is moving away from YUI and the existing Treeview has a few issues)
* Choose where to send users after completing SCORM (MDL-61677)


Extra requirement for prospective students:
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.
* We require prospective students to make an attempt at fixing at least 1 issue in the Moodle tracker before their proposal can be considered. This MUST be completed before your application can be considered valid.
:'''Skills required''': PHP
:'''Skills required''': PHP
:'''Difficulty level''': Medium
:'''Difficulty level''': Medium
:'''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]


=== Advanced Grading in Forums ===
=== Migrate end-to-end testing support in the Mobile app to Ionic 3 ===
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:
[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.
* 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''': [http://moodle.org/user/view.php?id=21591&course=5 Dan Marsden]


=== Add support to end-to-end testing in the Mobile app ===
There are almost 167 e2e tests in the Mobile app (see detailed information [https://magician03.github.io/2017/08/21/gsoc-moodle-final-phase/ here]).


[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 aim of this project is to upgrade the existing end-to-end testing support in the Mobile app to Ionic 3 (the original tests were implemented for Ionic 1/AngularJS).  


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.
Tasks:
* Upgrade the Node, Protractor and dependencies versions to be able to run tests in modern environments.
* Update all the tests so they can run in the new version of the framework (Ionic 3)
* Update Moodle Mobile documentation with new instructions for setting up both environments.


:'''Skills required: Javascript (AngularJS)
:'''Difficulty level: Medium
:'''Possible mentor: [https://moodle.org/user/profile.php?id=49568 Juan Leyva]


===Clef | Two-Factor Authentication===
Requirement for prospective students:
Create [https://getclef.com 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
* We require prospective students to set-up and run in a local environment the existing tests following this documentation: [[Moodle Mobile End To End Testing]], student must record a video of the tests running on a local machine.
:'''Difficulty level''': Medium
* We also require students to create an additional test (detailed instructions for writing tests are available in the previous link)
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=1328988 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
:'''Skills required:''' Javascript (Angular and Ionic 3)
:'''Difficulty level''': Medium
:'''Difficulty level:''' Medium
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=1779959 John Okely]
:'''Possible mentor:''' [https://moodle.org/user/profile.php?id=49568 Juan Leyva]


=== Migrate Moodle Mobile publishing scripts to Gulp tasks ===


=== 2FA - Two Factor Authentication ===
Right now the Mobile app uses several scripts ([see here https://github.com/moodlehq/moodlemobile-scripts]) for common tasks related to publishing.
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
Those scripts should be migrated to Gulp tasks so they are available among the other tasks already implemented.
:'''Difficulty level''': Medium
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=268794 Andrew Nicols]


=== CLI Helper for Moodle Developers ===
Tasks:
Possibly an addendum to MDK, a set of scripts to help facilitate various common tasks. In particular:
* Migrate the prepare-release-version.sh script to gulp task
* 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)
* Migrate the prepare-release-integration.sh script to gulp task
* Improve previous scripts to compile the resulting app via Phonegap Build API
* Migrate the rest of scripts that synchronizes language translations


:'''Skills required:''' PHP, Python?
Requirement for prospective students:  
:'''Difficulty level''': Hard
* We require prospective students to  set-up a local development environment of the Mobile app (and run it locally) following this documentation: [[Setting_up_your_development_environment_for_Moodle_Mobile_2]], students must provide a video or detailed screenshots including a detailed explanation of what they did to run the app locally.
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=268794 Andrew Nicols]


=== Trait for Mock DB in unit tests ===
:'''Skills required:''' Javascript
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.
:'''Difficulty level:''' Medium
:'''Possible mentor:''' [https://moodle.org/user/profile.php?id=49568 Juan Leyva]


:'''Skills required:''' PHP, PHPUnit
=== Add Mobile app support to Attendance plugin ===
:'''Difficulty level''': Easy
A new version of the Moodle Mobile app will be finished in May 2018 - This will provide a simpler way for plugins to add support for the Mobile app.
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=268794 Andrew Nicols] or [https://moodle.org/user/profile.php?id=1779959 John Okely]
Draft spec is available here https://moodle.org/mod/forum/discuss.php?d=361230


=== Mock implementation of DML ===
Minimum requirements for this would involve the ability for teachers and students to take attendance, and for students to view their reports.
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
Requirement for prospective students:
:'''Difficulty level''': Very Hard
* We require prospective students to make an attempt at fixing at least 1 issue in the Moodle tracker before their proposal can be considered. This MUST be completed before your application can be considered valid.
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=1779959 John Okely]
:'''Skills required''': PHP
:'''Difficulty level''': Medium
:'''Possible mentor''': [http://moodle.org/user/view.php?id=21591&course=5 Dan Marsden]


==See also==
==See also==
Line 117: Line 94:
* [[GSOC]] - describing Moodle's involvement with Google in their Summer of Code program
* [[GSOC]] - describing Moodle's involvement with Google in their Summer of Code program
* [https://tracker.moodle.org/issues/?jql=type%20in%20%28%22New%20Feature%22%2C%20Improvement%29%20AND%20resolution%20%3D%20unresolved%20and%20labels%20in%20%28addon_candidate%29%20ORDER%20BY%20votes%20DESC Popular new feature and improvement requests in Tracker that can be implemented as plugins]
* [https://tracker.moodle.org/issues/?jql=type%20in%20%28%22New%20Feature%22%2C%20Improvement%29%20AND%20resolution%20%3D%20unresolved%20and%20labels%20in%20%28addon_candidate%29%20ORDER%20BY%20votes%20DESC Popular new feature and improvement requests in Tracker that can be implemented as plugins]
* [[Projects for new developers/Archive|Archive]] of outdated and/or inactive calls for projects
* [https://docs.moodle.org/dev/Moodle_Wishlist a Wishlist] by some Moodle users. Some of the good ideas here may be adopted.

Revision as of 19:42, 23 March 2018


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 and lists projects together with experienced core developers willing to mentor new developers.

If you have any ideas for new features in Moodle which might be suitable as projects for new developers, please see New feature ideas.

Improve SCORM plugin

There are a number of areas of SCORM that could be improved as part of a GSOC project, some of these are bigger projects and others could be combined to form a single project.

These are just some examples, take a look at the open SCORM issues in the Moodle tracker for a list of other issues.

  • Improve Grading (MDL-51086, MDL-52871, MDL-37421)
  • Improve validation of SCORM packages (MDL-38060, MDL-24057)
  • Convert YUI Treeview to use Jquery (Moodle is moving away from YUI and the existing Treeview has a few issues)
  • Choose where to send users after completing SCORM (MDL-61677)

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. This MUST be completed before your application can be considered valid.
Skills required: PHP
Difficulty level: Medium
Possible mentor: Dan Marsden

Migrate end-to-end testing support in the Mobile app to Ionic 3

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 167 e2e tests in the Mobile app (see detailed information here).

The aim of this project is to upgrade the existing end-to-end testing support in the Mobile app to Ionic 3 (the original tests were implemented for Ionic 1/AngularJS).

Tasks:

  • Upgrade the Node, Protractor and dependencies versions to be able to run tests in modern environments.
  • Update all the tests so they can run in the new version of the framework (Ionic 3)
  • Update Moodle Mobile documentation with new instructions for setting up both environments.


Requirement for prospective students:

  • We require prospective students to set-up and run in a local environment the existing tests following this documentation: Moodle Mobile End To End Testing, student must record a video of the tests running on a local machine.
  • We also require students to create an additional test (detailed instructions for writing tests are available in the previous link)


Skills required: Javascript (Angular and Ionic 3)
Difficulty level: Medium
Possible mentor: Juan Leyva

Migrate Moodle Mobile publishing scripts to Gulp tasks

Right now the Mobile app uses several scripts ([see here https://github.com/moodlehq/moodlemobile-scripts]) for common tasks related to publishing.

Those scripts should be migrated to Gulp tasks so they are available among the other tasks already implemented.

Tasks:

  • Migrate the prepare-release-version.sh script to gulp task
  • Migrate the prepare-release-integration.sh script to gulp task
  • Improve previous scripts to compile the resulting app via Phonegap Build API
  • Migrate the rest of scripts that synchronizes language translations

Requirement for prospective students:

  • We require prospective students to set-up a local development environment of the Mobile app (and run it locally) following this documentation: Setting_up_your_development_environment_for_Moodle_Mobile_2, students must provide a video or detailed screenshots including a detailed explanation of what they did to run the app locally.
Skills required: Javascript
Difficulty level: Medium
Possible mentor: Juan Leyva

Add Mobile app support to Attendance plugin

A new version of the Moodle Mobile app will be finished in May 2018 - This will provide a simpler way for plugins to add support for the Mobile app. Draft spec is available here https://moodle.org/mod/forum/discuss.php?d=361230

Minimum requirements for this would involve the ability for teachers and students to take attendance, and for students to view their reports.

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. This MUST be completed before your application can be considered valid.
Skills required: PHP
Difficulty level: Medium
Possible mentor: Dan Marsden

See also