Moodle/MediaWiki-Moodle extension

MediaWiki-Moodle extension
Mentor: Jan Luca Co-Mentor: Brian Wolff

Name and contact information
Name: Rohan Verma Email: rohan.j.verma@gmail.com IRC or IM networks/handle(s): clancer Location: ACT, Australia TimeZone: GMT +10:00 Typical working hours: 3pm-1am

Synopsis
For source code: My project will allow users of MediaWiki to display information about Moodle courses. This will benefit MediaWiki by extending the WikiText parser to handle a new type of tag for Moodle integration. This project will also benefit users that have a Wikimedia instance and also use a Moodle instance. For example: educational institutions will be able to display updated course information easily in their wiki. This project also aims to allow Wikimedia to display information from multiple moodle instances in one wiki. An example might be an australian educational wiki might display course information from the moodle instances of several universities.

Deliverables
Required
 * Extension adds tag to wikitext
 * This tag gathers information about a moodle course
 * Gathers information using moodle webservices
 * Displays information in a well formatted node

Optional
 * Extension can gather other information from moodle
 * tag takes different parameters


 * Extension allows user to specify which moodle instance to gather information from
 * prefix system for identifing moodle instances
 * moodle instance url stored in mediawiki database

Schedule
Investation - April 30
 * Continue reading through MW source code and extension sourcecode
 * Continue contact with mentor and other interested person about the design of the extension
 * Explore capabilities of gathering information from moodle through a MW extension
 * Finish Investigation deadline - May 27

Community Bonding - May 28
 * Keep in contact
 * Use/Lurk IRC all day every day
 * Use/Read mailing list to help with design
 * Fix bugs and contribute to MediaWiki community


 * Try to find out more about culture
 * Review other successful people in mediawiki
 * Try to get advice from past GSoC participants
 * Have fun

Milestone 1 Design finished - June 16
 * Design will include a high level diagram of extension
 * Design will specify functionality of the extension
 * What the parameters of the tag will be
 * What information will be gathered from the webservices


 * Design will include a class diagram of implementation

'''Coding start! - June 17'''
 * 2 Week - Implement moodle tag with parameters
 * Write unit tests for each function


 * 3 Weeks - Gather information from moodle webservices
 * Write unit tests for each call to webservices


 * 1 Weeks - Displays information correctly

Milestone 2 Coding deadline and passes unit tests - August 11
 * Tests will include:
 * Calls to moodle webserives
 * Parameters passed to tag
 * Functions defined in each class

Finish Code Review deadline - August 25
 * Some (hopefully all) files reviewed by mentor/community
 * Conduct own code review according to MW standards
 * better not to bother others will small things

Cleaning up, Reworking, Other awesome stuff - August 26
 * Testing everything
 * Integration Testing
 * System Testing


 * Applying feedback from code reviews
 * Documentation
 * Finish basic documentation of extension
 * Description of extension
 * Current state of extension
 * User manual
 * Continue documentation of changes
 * Inline comments and file headers for future development

Milestone 3 Ready for deployment, testing and documentation finished - September 8
 * Yay!!
 * Start Deployment
 * Will be deploying in a Wiki Labs setup by Jan Luca

Finish Deploying deadline - September 16
 * Merged with trunk
 * Left one week to quick fix anything that goes wrong

Milestone 4 Glory - Eternal
 * Will include cake

About you
I want to accomplish something. I love coding, I have focused on java, javascript and php. When given the opportunity to do some work for MediaWiki on a project of my own nothing could be better. Except that it involves Moodle something I previously worked on. I want to do something I am good at. I have been lazy and I want to do something that matters to others and is of the highest quality I can achieve. This friendly open community and wanting to be a part of something as big as MediaWiki is what drives me to make this happen. (Also Jan Luca is awesome and the best kind of mentor I could of asked for just to get me to finish my proposal and have a try for GSoC)

Participation
My work style is not very healthy. I greatly prefer to work for long periods of time rather than sit down and setup to work a little everyday. I feel I can make this style fit the google summer of code as I will need a lot of communication with the community and my mentor. I will easily be able to meet 40 hours a week in my own time but to know what to do with this 40 hours I will need to get a clear idea about what I am making. I intend to spend 1-2 days talking on IRC, mailing list to people about my progress and what to do next. I will as participate in other MediaWiki discussion that might contribute to the community or be useful later. In a period following these two days I will work hard to produce something that works, or passes a test... or looks pretty in code review and repeat!


 * While I am working I will be putting my source code on GIT
 * I plan to setup a roadmap for the extension once it has a page of its own to communicate clear progress publicly.

Past open source experience
Thoughout last year I worked with a small team from my university to develop a set of plugins for Moodle. Learning Outcome Wizard This project allows Education Developers share ways to design courses in moodle more effectively. It did this by allowing them to create flowcharts in a tree structure containing a series of questions. A user who used this model would go through the series of questions and at the end be linked to a moodle activity such as a forum that would be appropriate for their course.

Any other info
I couldn't think of anything else to put here. But I really wish my university have a wiki to go along with their moodle instance and this could be a step towards that.