GSoC > GSoC 2007
Thanks to Google for the opportunity to get these developed!
- 1 Developing new question types for the quiz
- 2 Enterprise-level improvements
- 3 Chat revamp
- 4 Messaging improvements
- 5 Automated grading for Computer Programming Assignments
- 6 User Management Improvements
- 7 Email interface to Moodle
- 8 Social Networking features
- 9 Moodle Voice
Developing new question types for the quiz
- 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:
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.
- This code has been merged into CVS and will be in Moodle 2.0
- Code in Penny's GIT repository
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.
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.
- 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)
- 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
- A Moodle assignment plugin to handle the GUI and higher-level processes involved in submitting and grading a programming assignment
- 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)
- Specify time of manual enrollments ([http://tracker.moodle.org/browse/MDL-8877 MDL-8877])
- Allow teachers to put notes for each student in every course, much requested feature ([http://tracker.moodle.org/browse/MDL-7077 MDL-7077])
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.
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.
- 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.