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
No edit summary
(Badges criteria subplugin)
(3 intermediate revisions by 3 users not shown)
Line 4: Line 4:
* Moodle uses PHP, JavaScript, SQL and a number of other Web languages, so learning those is a good place to start.
* 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 go through the [[Tutorial]].
* 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 go through the [[Tutorial]].
* If you are looking for projects suggested in the tracker, look for issues with the [https://tracker.moodle.org/issues/?jql=labels%20in%20%28addon_candidate%29 'addon_candidate' label].
* If you are looking for projects suggested in the tracker, look for issues with the [https://tracker.moodle.org/issues/?jql=Difficulty%20%3D%20Easy%20AND%20resolution%20%3D%20Unresolved%20 'addon_candidate' label].
* If you are looking to make a quick contribution, look for tracker issues with marked as [https://tracker.moodle.org/issues/?jql=Difficulty%20%3D%20Easy easy].
* If you are looking to make a quick contribution, look for tracker issues with marked as [https://tracker.moodle.org/issues/?jql=Difficulty%20%3D%20Easy easy].
* As you become more involved in Moodle development, you might like to learn more about the [[Coding|coding conventions]] used and how changes to Moodle core code are [[Process|processed]]. Once you become confident enough, please consider adopting a [https://moodle.org/plugins/browse.php?list=set&id=61 plugin seeking a new maintainer].
* As you become more involved in Moodle development, you might like to learn more about the [[Coding|coding conventions]] used and how changes to Moodle core code are [[Process|processed]]. Once you become confident enough, please consider adopting a [https://moodle.org/plugins/browse.php?list=set&id=61 plugin seeking a new maintainer].
Line 13: Line 13:


''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]].''
=== 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''': [http://moodle.org/user/view.php?id=21591&course=5 Dan Marsden]


=== Acceptance tests for the Moodle app ===
=== Acceptance tests for the Moodle app ===
Line 55: Line 40:
:'''Possible mentor''': [http://moodle.org/user/view.php?id=1601&course=5 David Mudrák]
:'''Possible mentor''': [http://moodle.org/user/view.php?id=1601&course=5 David Mudrák]


=== Add multi-class capabilities to Moodle's machine learning backends ===
=== Make badges criteria a subplugin ===


Moodle includes an analytics API that uses machine learning for binary classification. This is enough for classification problems like "student at risk" vs "student not at risk". We want to expand this API capabilities by supporting multi-class classification, so we could write models like "very low grade", "low grade", "pass", "best student ever".
Moodle is an acronym for "Modular Object-Oriented Dynamic Learning Environment" so it allows for extending and tailoring learning environments using community sourced plugins.


Tasks:
Moodle let users create badges, which are a validated indicator of accomplishment, skill, quality or interest that can be earned. However, for now, the criteria for earning them are a closed list (https://docs.moodle.org/en/Using_badges#Criteria).
* Modify the two machine learning backends included in Moodle core to support multi-class classification problems. This includes the PHP ML backend (based on php-ml library) and the Python ML backend (Tensorflow).


Requirement for prospective students:
* We require to prepare a mechanism to create custom create to Moodle as a third-party plugin. More information about that can be found here: https://tracker.moodle.org/browse/MDL-39864
* 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.


:'''Tracker issue:''' https://tracker.moodle.org/browse/MDL-58992
:'''Skills required''': PHP
:'''Skills required:''' PHP + Python + basic understanding of machine learning algorithms and TensorFlow
:'''Difficulty level''': Medium
:'''Difficulty level:''' Medium/High
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=119927&course=5 Sara Arjona]
:'''Possible mentor:''' [https://moodle.org/user/profile.php?id=122326 David Monllaó]
 
=== Add regressors to core machine learning backends ===
 
Moodle includes an analytics API that uses machine learning for binary classification. This is enough for classification problems like "student at risk" vs "student not at risk". We want to expand this API capabilities to support regression, so we can write models that estimate linear values instead of classes.
 
Tasks:
* Modify the two machine learning backends included in Moodle core to support regression. This includes the PHP ML backend (based on php-ml library) and the Python ML backend (Tensorflow).
 
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.
 
:'''Tracker issue:''' https://tracker.moodle.org/browse/MDL-60523
:'''Skills required:''' PHP + Python + basic understanding of machine learning algorithms and TensorFlow
:'''Difficulty level:''' Medium/High
:'''Possible mentor:''' [https://moodle.org/user/profile.php?id=122326 David Monllaó]


==See also==
==See also==

Revision as of 16:25, 12 March 2020


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 go through the Tutorial.
  • 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.
  • 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. Once you become confident enough, please consider adopting a plugin seeking a new maintainer.

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.

Acceptance tests for the Moodle app

Since Moodle 3.7 it will be possible to write and run acceptance tests for the Moodle app.

Tasks:

  • Write new acceptance tests for the Moodle app

Requirement for GSOC prospective students:

  • We require prospective students to set-up and run in a local environment the existing tests hosted here following this documentation: Acceptance testing for the mobile app. Students must record and submit a video of the tests running on a local machine as part of the GSOC application process.
  • We also require students to create an additional simple test based on the existing ones
Skills required: Behat (PHP)
Difficulty level: Medium
Possible mentor: Juan Leyva

Front-end editor for the plugin skeleton generator

This is a follow-up project for a successful GSOC 2016 project that resulted in a new tool allowing developers to quickly generate a skeleton (scaffolding, template) for a new Moodle plugin. The tool proved to be a helpful helper with significant impact on the quality of Moodle plugins code. This follow-up project aims at further improvements of the skeleton generator. The primary goal is to implement a developer-friendly user interface / front-end editor allowing to configure the plugin's properties (recipe file) easily. The UI should guide the developer through the process of designing and defining the plugin properties and facilitate the whole process.

  • 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 + JS
Difficulty level: Medium
Possible mentor: David Mudrák

Make badges criteria a subplugin

Moodle is an acronym for "Modular Object-Oriented Dynamic Learning Environment" so it allows for extending and tailoring learning environments using community sourced plugins.

Moodle let users create badges, which are a validated indicator of accomplishment, skill, quality or interest that can be earned. However, for now, the criteria for earning them are a closed list (https://docs.moodle.org/en/Using_badges#Criteria).

Skills required: PHP
Difficulty level: Medium
Possible mentor: Sara Arjona

See also