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
(This page will not be migrated to new devdocs)
 
(87 intermediate revisions by 16 users not shown)
Line 1: Line 1:
<!--
{{Template:WillNotMigrate}}
[[File:GSoC2012 logo.png|right]]
 
<p class="note">'''Latest news:''' ''Moodle will be taking part in the [http://socghop.appspot.com/ Google Summer of Code] for our sixth year in 2012!''</p>
 
If you're thinking of applying to work with Moodle for GSOC 2012, please check the information on [[Applying to work with Moodle for GSOC]] and join our gsoc2012@conference.moodle.org jabber chat!
-->


{{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 to 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]].''


=== Plagiarism plugin (Moorsp) ===
=== Acceptance tests for the Moodle app ===


There are various commercial plugins available that use the Plagiarism API in Moodle, but because these plagiarism systems can require paid subscriptions, testing them can be difficult. I'd like to see a basic plugin developed (called Moorsp) that could be used for testing the Plagiarism API and provides a structure that can be built on in future to add further functionality.
Since Moodle 3.7 it will be possible to write and run acceptance tests for the Moodle app.


The initial aim of this project is not to develop a new Plagiarism checking tool but to develop a tool that provides complete Behat and unit tests for the Moodle Plagiarism API.
Tasks:
* Write new acceptance tests for the Moodle app


All files uploaded to Moodle are stored on disk using the contenthash of the file as the filename - this means that if a user uploads the exact file multiple times in different locations only one file is stored on disk. The plugin should implement a check to see if the exact file has been submitted to any other courses/activities and display related information if another match has been found.
Requirement for GSOC prospective students:


Existing Plagiarism plugins (turnitin, urkund, compilatio etc) make use of the legacy log feature of the events api - the new plugin should use the new api and not rely on legacy logs.
* 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.
* We also require students to create an additional simple test based [https://github.com/moodlehq/moodle-local_moodlemobileapp on the existing ones]


Deliverables:
:'''Skills required:''' Behat (PHP)
* All Plagiarism API functions should be implemented.
:'''Difficulty level:''' Medium
* Support for Assign, forum and Workshop modules should be implemented.
:'''Possible mentor:''' [https://moodle.org/user/profile.php?id=49568 Juan Leyva]
* Full Unit test coverage of all plugin functions.
* Full Behat tests for Assign, forum and workshop modules should be implemented to ensure that all Plagiarism API functions are working as expected.
* The code should pass 100% of the Moodle codechecking tools to ensure the code meets with Moodle Guidelines.
* The code should be perform well with appropriate use of the Moodle caching tools.
 
Future Improvements (outside scope of initial project)
* Add Plagiarism API to the Moodle Glossary plugin.
* Implement functions that allow the plugin to post content to an external source - a future open source moorsp server that will receive content and generate a similarity report - we may be able to re-purpose some of the code from the old plagiarism_crot plugin to do this.
:'''Skills required''': PHP
:'''Difficulty level''': Medium
:'''Possible mentor''': [http://moodle.org/user/view.php?id=21591&course=5 Dan Marsden]
:'''Discussion''': [http://dev.moodle.org/mod/forum/discuss.php?d=1822]
:'''Initial code structure''': [https://github.com/danmarsden/moodle-plagiarism_moorsp]


=== Javascript basic SCORM 1.2 player for the Mobile app ===
=== Front-end editor for the plugin skeleton generator ===


Currently there are several Javascript SCORM players with basic support for SCORM 1.2:
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.


* http://www.scormpool.com/
* 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.
* https://github.com/skfriese/simple-scorm-api
* https://bitbucket.org/jugger0/tsp


The aim of this project is to fix and package inside an Angular module one of those players to be included in the official Moodle Mobile app.
:'''Skills required''': PHP + JS
:'''Difficulty level''': Medium
:'''Possible mentor''': [http://moodle.org/user/view.php?id=1601&course=5 David Mudrák]


This will allow the app to play SCORM files in online and offline mode.
=== Make badges criteria a subplugin ===


The player should be able to:
Moodle is an acronym for "Modular Object-Oriented Dynamic Learning Environment" so it allows for extending and tailoring learning environments using community sourced plugins.
* Parse the imsmanifest.xml file in order to display the available Organizations and structures inside the package.
* Display a basic SCORM player with a basic menu tree.
* Implement a basic runtime support in order to be able to retrieve the SCOs tracking from the Moodle site.
* Store in the app local storage the user interactions (API runtime) to be synchronized when the user is online again.


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


=== Javascript basic IMS CP player for the Mobile app ===
* 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


This is a minor project related to the previous one, it can be described as an initial step for implementing the SCORM player.
:'''Skills required''': PHP
 
:'''Skills required''': HTML5, Javascript, AngularJS
:'''Difficulty level''': Low
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=49568 Juan Leyva]
 
=== Improved enrol_meta plugin ===
 
Current enrol_meta plugin provides functionality to automatically synchronise enrolments between two courses. See [https://docs.moodle.org/en/Course_meta_link Course meta link]. Teacher creates an instance of enroment method in the meta course and links it to one child course. Later cron job ensures that any enrolment change in the child course is pushed to the parent.
 
Unfortunately user interface is very inconvenient. The main problem is inability to bulk select courses and/or order courses on the Enrolment methods page. Plus it lacks important functionality to synchronise suspended/expired enrolments. See the number of highly voted issues MDL-27628, MDL-17929, MDL-32161, MDL-31451
 
The proposal is to re-write this enrolment plugin completely. One instance of the plugin should allow to link multiple child courses and additionally synchronise each of them with a group in the meta course.  Ideally it should also allow to synchronise all courses in the category.
 
This project requires development of both user interface (JS) and backend (PHP).
 
:'''Skills required''': PHP, Javascript (YUI)
:'''Difficulty level''': Medium
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=1334243 Marina Glancy]
 
=== Allow to crop/resize/rotate images when inserting them ===
 
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.
 
:'''Skills required''': Javascript (YUI), PHP
:'''Difficulty level''': Medium
:'''Difficulty level''': Medium
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=1334243 Marina Glancy]
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=119927&course=5 Sara Arjona]


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


* [[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
* [http://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=type+in+%28%22New+Feature%22%2C+Improvement%29+AND+resolution+%3D+unresolved+ORDER+BY+votes+DESC&runQuery=true&clear=true Popular new feature and improvement requests in Tracker]
* [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
 
[[Category:GSOC]]

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