From MoodleDocs

GSoC > GSoC 2007

Thanks to Google for the opportunity to get these developed!

Developing new question types for the quiz

The quiz has a plug-in architecture for question types. We currently have implementations of most of the basic question types, it would be nice to have implementations of some more interesting types, perhaps using the YUI JavaScript library to do some interesting interactions (but with an accessible fall-back). Which question types could be left up to the student, but some suggestions are:

  • Drag and drop versions of ordering and matching question types.
  • Place a marker or draw a line on an image question types.
  • Drag the missing words into the sentence/onto an image question type.

Mentor: Tim Hunt

Student: Adriane Boyd

Full Specification: New question types


This successful project resulted in four interesting new question types being created. They can be found in CVS here:

  1. Order
  2. Image Target
  3. File Response
  4. Drag and Drop Match

Enterprise-level improvements

Adapt all the DB installation and upgrade scripts to run from the command line, so fully scripted installations are possible without using the web interface.

Mentor: Penny Leach

Student: Dilan Anuruddha Karanachcharighe

Full Specification: Enterprise-level improvements


This successful project resulted in a patch being created that implements command-line installation. Penny Leach will be merging it into Moodle 2.0 after 1.9 branches.

  1. This code has been merged into CVS and will be in Moodle 2.0
  2. Code in Penny's GIT repository

Chat revamp

mod/chat needs a bit of an overhaul. Possible interesting approaches:

  • Simplify chatd and rewrite as a proper forking daemon. Great process control and networking project, and properly a good case for a bit of AJAX.
  • Integrate Moodle with a Jabber backend, plus frontend glue.
    • On the backend, we need to consider authentication, chatroom creation, and logging.
    • On the frontend, ensuring that we can get Jabber clients started reliably on the end-user's machine, and integrate a preexisting web-based Jabber client for Jabber-impaired users.
    • Installation matter: a clear install HowTo for the Jabber + Moodle.

Mentor: Geoff Cant, Martin Langhoff

Student: Thotage Piyasena

Full Specification: Chat revamp


Unfortunately this project failed to deliver any code and was abandoned.

Messaging improvements

The Moodle messaging system in Moodle is a bit clunky and could use improvements to make it slicker and more efficient as a tool for messaging people within the Moodle environment.

Functionality improvements:

  • Add a messaging API class to the core of Moodle which all modules will start using for sending messages (currently they all format their own emails).
  • Add output plugins to messaging so that users can choose exactly how to route their messages, especially when they aren't online at the time. Initially the two plugins would be "browser" and "email", but later there could be a jabber plugin, an IRC plugin etc)

Gui improvements:

  • Improve the main message GUI using AJAX (Moodle includes the YUI library so you'd need to use that)
  • Improve the messaging window to allow chats among three or more other people at once.
  • GUI for the output plugins to allow users to set rules about each plugin independently, and also to select from incoming messages by type, by user or by moodle module.
  • Improve the methods to search messages and find discussions from the past.
  • Improve administrator auditing of message logs, including filtering etc.

Mentor: Martin Dougiamas

Student: Luis Filipe Romão Rodrigues

Full Specification: Messaging improvements


This successful project resulted in patches and new modules to implement a plugin-based messaging system based on events API, as well as a cool new AJAX interface for messaging. This code will be merged into Moodle 2.0.

Automated grading for Computer Programming Assignments

The project here is to develop two things

  1. A Moodle assignment plugin to handle the GUI and higher-level processes involved in submitting and grading a programming assignment
  2. An interface to an external 3rd party program (preferably an established, active open source project) to handle the actual analysis and grading of the source code. It should have plugins to handle arbitrary languages.

Mentor: User:Nicolas Connault

Student: Arkaitz Garro

Full Specification: Automated grading of programs

Code: Code at contrib module.


This successful project resulted in modifications to the current assignment module (in Moodle 1.9) and the implementation of new modules to accept and grade programming code (too big to be in core Moodle but will be a maintained separate module).

User Management Improvements

  • Improve the User features in moodle to allow bulk-operations.
    • Create an interface to do bulk operations on users (e.g. delete users, reset passwords etc) This could potentially use an AJAX implementation for multiple filtering/selection of required students for bulk operations.
    • Overhall the CSV upload features to allow more flexibility (more options, features to auto-generate more fields such as usernames)
  • Enrolment
  • Notes

Mentor: Yu Zhang

Student: Andrei Bautu

Full Specification: User Management Improvements


This successful project resulted in a number of new features being added to Moodle 1.9, such as Notes, bulk operations on users, the ability to reset enrolments, and better uploads.

Email interface to Moodle

The idea is to let people reply naturally to email they receive from Moodle to change settings or add further comments into forums etc. Moodle activities can then be accessed like a mailing list.

  • Add a setting so admins can specify if they want an email interface enabled. Without it, none of the following is active and Moodle functions just as it does today.
  • Improve the outgoing emails in Moodle to contain a unique and robust code in the headers and potentially also in the subject line (switchable by user setting) that encrypts information about the receiver, the activity instance and the specific data. For example, all the information to securely identify a forum post.
  • Write a PHP script designed to run from the commandline as part of an email filter, that accepts emails on standard input, parses them and then calls a function in the relevant module. For example forum_incoming_email() in mod/forum/lib.php.
  • Write function for forum module (at least) to parse the content of the email and add it as a post from the user. Other modules can be worked on if there's time ... resources could be sent back as attachments, quizzes could send questions and accept multiple choice answers, the course could send back a listing of activities with further codes for each one, etc.
  • Security is essential!

Mentor: Martin Langhoff

Student: Peter Boswood

Full Specification: Email interface


This project resulted in patches and new code to implement email processing (in and out). It's hoped this code can be merged into Moodle 2.0 but it may have to be changed somewhat to co-exist with the new messaging features.

  1. Email Interface patches

Social Networking features

Explore the possibilities of social networking features by expanding the user profile page:

  • add user tags that describe interests etc, as links to "interest pages" eg constructivism
  • interest pages that contain information about all the people who share that interest, as well as blog entries that use that tag, google searches, other info using standard Moodle blocks etc
  • allow users to add other users as "friends", which are displayed on their user profile pages
  • think about controls to prevent abuse of these features in a school environment.
  • allow users to specify an external RSS feed to their own external blog, parsing the feed insert entries (optionally selecting by tag) as internal blog entries for that user, adding new tags/permissions as specified, with links back to external entry etc.
  • if time, explore deeper integrations with Youtube, Flickr, MySpace, Facebook etc.

Mentor: Martin Dougiamas

Student: Luiz Eduardo Laydner Cruz

Full Specification: Social Networking features


This successful project resulted in a new implementation of tags which was added to Moodle 1.9. Tags pages have blocks for Flickr and Youtube. Blog tags were also converted to the new tags system for consistency.

Moodle Voice

  • Objective: Adapt Moodle interface to output the needed VoiceXML so you can navigate with your voice with a VoiceXML enabled browser, such as Opera.
  • Project Proposal

Mentor: David Horat

Student: Mayank Jain

Full Specification: Development:Voice


This project produced a successful proof of concept for enabling Moodle with Voice XML but did not result in any code useful enough to be merged into Moodle. The mentor, David Horat, is hoping to continue work on the code this year.

  1. Code in David's site