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
(removing reference to GSoC as we have not yet applied or been accepted as a mentoring organisation)
(This page will not be migrated to new devdocs)
 
(65 intermediate revisions by 13 users not shown)
Line 1: Line 1:
{{Template:WillNotMigrate}}
{{GSOC}}
{{GSOC}}
==Getting started==
==Getting started==


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 complete the [http://dev.moodle.org/course/view.php?id=2 Introduction to Moodle Programming] course on [http://dev.moodle.org/ 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 [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 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].
* 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].
 
''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].
 
''Please consider adopting a [https://moodle.org/plugins/browse.php?list=set&id=61 plugin seeking a new maintainer]''. See the [https://moodle.org/mod/forum/discuss.php?d=260354 Plugins adoption programme].
 
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]].


==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]].''


=== Allow to crop/resize/rotate images when inserting them ===
=== Acceptance tests for the Moodle app ===


This project is inspired by MDL-32183. There are two options on how to implement this functionality - as a repository plugin or as an atto plugin.  
Since Moodle 3.7 it will be possible to write and run acceptance tests for the Moodle app.


:'''Skills required''': Javascript (YUI), PHP
Tasks:
:'''Difficulty level''': Medium
* Write new acceptance tests for the Moodle app
:'''Possible mentor''':


=== Improve Behat tests in SCORM plugin ===
Requirement for GSOC prospective students:
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:
* We require prospective students to set-up and run in a local environment the existing tests hosted [https://github.com/moodlehq/moodle-local_moodlemobileapp 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.
* Behat tests for all existing SCORM QA tests (where possible)
* We also require students to create an additional simple test based [https://github.com/moodlehq/moodle-local_moodlemobileapp on the existing ones]
* 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:
:'''Skills required:''' Behat (PHP)
* 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. If you do not have time to do this before the submission deadline your application will not be considered.
:'''Difficulty level:''' Medium
 
:'''Possible mentor:''' [https://moodle.org/user/profile.php?id=49568 Juan Leyva]
:'''Skills required''': PHP
:'''Difficulty level''': Medium
:'''Possible mentor''': [http://moodle.org/user/view.php?id=21591&course=5 Dan Marsden]


=== Advanced Grading in Forums ===
=== Front-end editor for the plugin skeleton generator ===
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:
This is a follow-up project for a [[GSOC/2016#Plugin skeleton generator|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.
* 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. 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 - 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. If you do not have time to do this before the submission deadline your application will not be considered.


:'''Skills required''': PHP
:'''Skills required''': PHP + JS
:'''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=1601&course=5 David Mudrák]


=== Add support to end-to-end testing in the Mobile app ===
=== Make badges criteria a subplugin ===


[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.
Moodle is an acronym for "Modular Object-Oriented Dynamic Learning Environment" so it allows for extending and tailoring learning environments using community sourced plugins.


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.
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: Javascript (AngularJS)
* 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
:'''Difficulty level: Medium
:'''Possible mentor: [https://moodle.org/user/profile.php?id=49568 Juan Leyva]


=== Create a desktop version of Moodle Mobile using Electron ===
:'''Skills required''': PHP
 
[http://electron.atom.io/ Electron] is a tool for creating cross platform desktop applications using web technologies.
 
[https://github.com/moodlehq/moodlemobile/ Moodle Mobile 1] (the previous version of Moodle Mobile) had an experimental desktop application using a similar tool ([http://nwjs.io/ Node-Webkit, now NW.js]), for Moodle Mobile 2 we’d like to see the application packaged for desktop using Electron.
 
In this project you will implement some of the Cordova APIs to use the Node.js API provided by electron:
* FileSystem API - For browsing the local file system
* FileTransfer API - For downloads and uploads
* Camera and capture API - For taking photos, videos and audios using the webcam
 
Notice that these APIs are already implemented in the previous version of Moodle Mobile 1, this project is about migrating this old APIs from Node-Webkit to the new version of the application using Electron.
 
:'''Skills required: Javascript (Node.js)
:'''Difficulty level: Medium
:'''Possible mentor: [https://moodle.org/user/profile.php?id=49568 Juan Leyva]
 
=== Generator of Moodle plugins scaffold code ===
 
There are many [[Plugin types|plugin types]] in Moodle. There are [[Plugin files|files]] and code patterns that all plugins have in common. Also there are specific interfaces that individual plugin types are expected to implement. When developing a new plugin, Moodle contributors use some available templates for various plugin types as well as existing plugins as a reference.
 
The goal of this project is to develop a tool that helps Moodle contributors to generate a scaffold code for a new Moodle plugin. Given parameters such as plugin type, plugin name, list of enabled/disabled features and other meta-data (such as author name etc), the tool should generate a scaffold code for that plugin that the developer can build on.
 
Deliverables:
* Research and analysis of existing tools and approaches used in other software projects.
* Specification of the format/syntax of templates that will be used to generate the plugin code (consider Mustache as it is templating language that Moodle developers are most familiar with).
* Templates for all Moodle plugin types and specification of their storage, organisation and maintenance (so that it is possible to keep them up to date in further Moodle versions).
* Software tool that makes use of these templates and actually generates the plugin scaffold code.
 
Requirements:
* The generated code should pass 100% of the Moodle codechecking tools to ensure it meets with Moodle Guidelines.
* The generator itself should be written in either PHP or JavaScript (Node.js) and provide both CLI and GUI.
 
:'''Skills required:''' PHP / Node.js, experience with Moodle plugins development is a big plus.
:'''Difficulty level''': Medium
:'''Difficulty level''': Medium
:'''Possible mentor''': [http://moodle.org/user/view.php?id=1601&course=5 David Mudrák]
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=119927&course=5 Sara Arjona]


==See also==
==See also==
Line 111: Line 58:
* [[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.

Latest revision as of 14:09, 20 May 2022


Warning: This page is no longer in use. The information contained on the page should NOT be seen as relevant or reliable.



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