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
(→‎Advanced Grading in Forums: add task to update code.)
(32 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{{GSOC}}
{{GSOC}}
==Getting started==
==Getting started==


Line 21: Line 20:
''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 ===
=== 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.
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 (JQuery, AMD), PHP
 
:'''Skills required''': Javascript (YUI), PHP
:'''Difficulty level''': Medium
:'''Difficulty level''': Medium
:'''Possible mentor''':
:'''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:
=== Improve SCORM plugin ===
* Behat tests for all existing SCORM QA tests (where possible)
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.
* 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:
These are just some examples, take a look at the open SCORM issues in the Moodle tracker for a list of other issues.
* Moodle requires all GSOC applicants 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.
* Improve Grading (MDL-51086, MDL-52871, MDL-55004, MDL-37421)
* Add Support for Safe Exam Browser (MDL-41054)
* Add new option to force new attempts (MDL-32585)
* Improve validation of SCORM packages (MDL-38060, MDL-24057)
* Migrate scorm_cron into new tasks API (MDL-53343)
* Convert YUI Treeview to use Jquery (Moodle is moving away from YUI and the existing Treeview has a few issues)


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
:'''Skills required''': PHP
:'''Difficulty level''': Medium
:'''Difficulty level''': Medium
Line 48: Line 47:


Deliverables:
Deliverables:
* Update existing patch to work on latest master branch (existing patch based on an early release of 2.9)
* Modify the forum grading so that it pushes 2 grade areas (or 3 including ratings) into the gradebook instead of a single grade.
* 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.
* Improve interface that allows overall forum participation grading.
Line 54: Line 54:


Extra requirement for prospective students:
Extra requirement for prospective students:
* Moodle requires all GSOC applicants 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.
* 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
:'''Skills required''': PHP
Line 60: Line 60:
:'''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]


=== Add support to end-to-end testing in the Mobile app ===
=== Improve end-to-end testing in the Mobile app ===


[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.
[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 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.
There are almost 40 e2e tests in the Mobile app, right now tests only works in old versions of Node and Protractor.
 
The aim of this project is to upgrade the Node, Protractor, Selenium and the rest of dependencies to be able to run tests in both a browser and in real devices via external systems like Saucelabs.  


:'''Skills required: Javascript (AngularJS)
Tasks:
:'''Difficulty level: Medium
* Upgrade the Node, Protractor and dependencies versions to be able to run tests in modern environments.
:'''Possible mentor: [https://moodle.org/user/profile.php?id=49568 Juan Leyva]
* Configure the app to be able to be launched in Saucelabs via Travis (if possible).
* Fix existing tests that are failing
* Update Moodle Mobile documentation with new instructions for setting up both environments.


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


[http://electron.atom.io/ Electron] is a tool for creating cross platform desktop applications using web technologies.
=== Migrate Moodle Mobile publishing scripts to Gulp tasks ===


[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 this tool.
Right now the Mobile app uses several scripts ([see here https://github.com/moodlehq/moodlemobile-scripts]) for common tasks related to publishing.


In this project you will implement some of the Cordova APIs to use the Node.js API provided by electron:
Those scripts should be migrated to Gulp tasks so they are available among the other tasks already implemented.
* 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.
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


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


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

Revision as of 20:16, 21 March 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

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.

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

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:

  • Update existing patch to work on latest master branch (existing patch based on an early release of 2.9)
  • 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

Improve 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.

There are almost 40 e2e tests in the Mobile app, right now tests only works in old versions of Node and Protractor.

The aim of this project is to upgrade the Node, Protractor, Selenium and the rest of dependencies to be able to run tests in both a browser and in real devices via external systems like Saucelabs.

Tasks:

  • Upgrade the Node, Protractor and dependencies versions to be able to run tests in modern environments.
  • Configure the app to be able to be launched in Saucelabs via Travis (if possible).
  • Fix existing tests that are failing
  • Update Moodle Mobile documentation with new instructions for setting up both environments.
Skills required: Javascript (AngularJS)
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
Skills required: Javascript
Difficulty level: Medium
Possible mentor: Juan Leyva

See also