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

From MoodleDocs
Revision as of 23:54, 23 March 2014 by Dan Poltawski (talk | contribs) (Reverted edits by Bhavna266 (talk) to last revision by Dan Marsden)


Getting started

Moodle uses PHP, JavaScript 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 to 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.

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.

SCORM

There are various SCORM related projects I'd be interested in mentoring for GSOC in 2014.

  • Fix/Improve built in SCORM navigation (MDL-25642 MDL-29193 MDL-39551)
  • Improve SCORM performance, PHPDocs, compliance with coding guidelines. - There are a number of known areas of SCORM code that need a clean-up/re-structure - It would be good to audit all the scorm code and make it comply with Moodle's coding guidelines and improve the performance of the code - it would be good to implement MUC in areas that can make use of it - Ideally we would also rewrite the datamodels/scorm_*_.js.php files to separate the php from the js and make the JavaScript cache-able - (work started on this in MDL-35870) Other related bugs: MDL-41216 MDL-41665 MDL-42314 MDL-44586
  • SCORM reports - there are currently 3 SCORM reports - ideas on new report plugins would be considered as possible projects.

If you want to apply to work on a SCORM related project I have posted a list of bugs that you could look at as part of your GSOC application here: http://dev.moodle.org/mod/forum/discuss.php?d=2011

Skills required: PHP, JavaScript
Difficulty level: Medium -> Hard
Possible mentor: Dan Marsden

HTML maths editor

Traditional written mathematical notation takes advantage of a rich set of special symbols, together with their relative size and position on a two dimensional page. Underlying mathematical expressions is a well-defined semantic tree structure. When typing a mathematical expression into a computer keyboard the ability to take advantage of the features of traditional mathematical notation is severely limited. Essentially one has only a one-dimensional string of symbols taken from the limited alphabet found on computer keyboards and a strict syntax. Syntax is often problematic for users. For example, they differ between applications and they do not correspond to traditional notation.

DragMath (http://www.dragmath.bham.ac.uk) is a nice "drag and drop" equation editor that has been integrated with the Moodle editor for some time. However, it is implemented in Java, and that is becoming increasingly problematic, with increasing security warnings on the desktop, and limited support on mobile devices. We would like a new editor, keeping all the good parts of DragMath, but written in JavaScript. This could then be integrated with Moodle and other web applications.

Goal: to create a useful and usable "mathematics entry system" for Moodle, using a combination of JavaScript and HTML5.

This should

  • parse typed expressions into an internal tree representation
  • provide useful feedback to users, e.g. "missing bracket", on ill-formed expressions.
  • have flexible options for providing a "context" to mediate between the requirements of a strict syntax, and users' expectations based on traditional written mathematics. E.g. is "x(t+1)" a multiplication of x and (t+1) or application of the function "x" to the argument "(t+1)"?
  • have "drag and drop" components (in HTML5)
  • have a modular and flexible output mechanism, this includes
    • on-screen display "as you type/edit"
    • output in a variety of formats, LaTeX, Maxima syntax, MathML etc. which can be embedded into web applications, specifically Moodle. It is not a goal to provide multiple outputs, but it is a goal to develop a framework in which other users can contribute such formats.
    • show users the internal tree representation on request
  • potentially enable manipulation (computer algebra) of internal expressions by pre-defined rules.
  • have a well documented and simple API.

Much of the basic design has been done in for example

We will draw from this previous design experience to guide the development.

See this forum thread: https://moodle.org/mod/forum/discuss.php?d=251627 for more.

Skills required: JavaScript, HTML 5
Difficulty level: Hard
Possible mentors: Chris Sangwin

New question types

This is not really a specific project idea, but I would like to point one an important general area:

With HTML5 the range of what can be done in a web browser keeps expanding. Can we use these possibilities to make new, much more interactive, question types for Moodle?

There are some ideas in this forum thread: https://moodle.org/mod/forum/discuss.php?d=222439

  • a question type where students have to join things up correctly by adding lines to a diagram (for example to complete an electric circuit).
  • a question type where students can change the colour of certain parts of a diagram, and they have to get it correct.
  • ... I am sure there are more possible ideas. Use your imagination!

There are also some ideas which don't require complex HTML5 things:

  • A 'Give 3 examples of ...' Question type. For example "Give three ways to speed up a chemical reaction:". Answer 'heat', 'increase concentration', 'catalyst' (in any order). However, 'warm it' might be an acceptable alternative, but 'heat', 'catalyst', 'warm it' should only score 2/3.
  • An ordering question type. Probably based on the OU's qtype_ddwtos. The think that cannot do is give good credit for partially correct answer. For example 'F', 'A', 'B', 'C', 'D', 'E' might be considered close to the right order, but if you do that with ddwtos it will score 0.
  • A question type where students must highlight certain words in some text. E.g. "Find all the verbs in this paragraph."

There is also scope to make significant enhancements to existing question types. For example

  • in Drag and drop markers allow teachers to define the drop zones by dragging with the mouse, rather than typing co-ordinates.
  • in the pattern-match question type a tool like STACK question tests to help teachers verify that their answer matching works correctly (upload example responses, indicate what grade they should receive, show what grade they actually receive, and highlight the differences.

Before proposing anything, please make sure you are familiar with the standard question types already available in Moodle, and the contributed question types that other people have already created.

Skills required: PHP & JavaScript
Difficulty level: Medium - Hard
Possible mentors: Tim Hunt

Plagiarism plugin

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 that could be used for testing the Plagiarism API, providing simple useful functionality. All Plagiarism API functions for all Modules that support the API should be implemented and used. It could check the file contenthash against all other files uploaded in the Moodle files table and if a matching record is found it should display information about the duplicate submission including if the same student has submitted the file in a different course/activity or if a different user has uploaded the file with the same contenthash.

The first stage of this project is to implement very simple high performing code that allows easy testing of the Plagiarism API and provide some very basic functionality by checking the contenthash This code should implement unit tests and behat tests so that we can verify that the Moodle Plagiarism API is functioning correctly.

The long term plan (possibly after GSOC) would be to get this plugin to post content to an external source which could implement a more complete plagiarism check running on a separate server so it doesn't affect performance of the Moodle site. The Plagiarism plugin "Crot" may have some code that could be repurposed to use for this.

Skills required: PHP
Difficulty level: Medium
Possible mentor: Dan Marsden
Discussion: [1]

Event subscription plugin

This project includes the following:-

  • creating a Moodle plugin that provides users with an interface to subscribe to various events in Moodle.
  • Users should be able to subscribe to generic events (ex:- all delete events) or extremelly specfic events (ex:- users added to a specific group)
  • Performance is an important aspect, any solution designed should not be too harsh on performance.
  • This project requires deep understanding of Moodle events framework - Event Specs
Skills required: PHP and Javascript
Difficulty level: Medium
Possible mentor: Ankit Agarwal

Pronunciation evaluation question type

This project would expand on some work done as part of the CMUSphinx project funded by GSoC 2012. The project developed an algorithm/library that was could take some recorded audio of someone saying a particular phrase, and determine whether it was pronounced well or badly.

The goal of this project would be to take that system, and package it up as a Moodle question type, so that teachers can create a Moodle quiz that determines how good their students' pronunciation is. (Think foreign-language teaching.) Here is the documentation about creating question types.

Skills required: PHP & JavaScript
Difficulty level: Medium - Hard
Possible mentors: James Salsman & Tim Hunt

See also