You are on page 1of 9

Event Subscription Plug-in

GSoC 2014 Project

ABSTRACT:
The objective of this project is to create a Moodle plug-in that will support the users to subscribe to various events in Moodle. The communication between modules is fundamental to Moodle and this has been possible with the events system. The plug-in will provide an interface to the users to manage the subscriptions to various events. Any activity in Moodle will be notified to the users who are subscribed to it.

PERSONAL DETAILS
Name: Email Id: Alternate Email Id: IRC: Github: Contact: Time zone: Shubhangee Verma shubhv@iitk.ac.in shubhv92@gmail.com shubhangee shubhv +91 99 36 375550 GMT + 5:30

PROJECT PROPOSAL
WHAT I PLAN TO DO The event subscription plugin project will provide an interface to the users which will let them subscribe to the events in Moodle. The events system will allow us to use the logged information to send notifications to the users subscribed to various events. The user interface will have the following features:

Generic Events: The users will be provided with an option of subscribing to some generic events categorized in two, namely, Based on Object and Based on Action. A. Based on Object: Example of events that can be subscribed are as follows, All Courses All Groups All Cohorts, etc.

The all <object> will include all objects according to the userid and not on a universal basis. B. Based on Action: Example of events that can be subscribed are as follows, All Events All Create Events All Viewed Events All Update Events All Delete Events

Again, the all <action> will include actions on objects according to the user id. There will be nesting in these categories as well. The subcategory will be different for diferent action/object and will be according to what all activities are possible.

For Example: In All Groups category, the subcategories can be as follows: User added to the group User removed from the group Group updated Grouping created Grouping updated Grouping deleted

Since there are a large number of options available, the page will be compressed and there will be a Show All.

Specific Events: The users will also be provided with an option to subscribe to very specific events. I wish to fetch the data dynamically from the database for each user and display the information according to the user. All the courses, groups, discussion, etc. will be displayed. Again, since we want it to look pleasant to the user, we will display the options in compressed fashion which can be expanded by the See more button or the expander drop down button. For example: Course101 Course102 Course103 Group01 Group02 Discussion1 Discussion2

The filter for the specific events will also have a nested structure. For any selected item, there will be subcategories according to the object selected. For example, For a Course module All Events (Default) All create events All viewed events All update events All delete events

Thus this will provide the users to manage their subscriptions from very general events to very specific events. Notification Preferences: Now the next step to this is how the user can manage the subscribed events notification preferences. He can choose the following options: Notify me right away Send a daily report Send a weekly report Don't Notify

The default will be different for different events accordingly to its utility. The notification will be sent via mail or via Moodle messages to the user.

SCHEDULE OF DELIVERABLES
I have broken down my project into various stages as follows: Firstly, understanding the Events Framework more deeply so as to plan out the implementation. Understanding the Logging Framework to know about the information that is being recorded for each event. Analyzing the Database Schema of the Moodle Database. Preparing a developer documentation including all the features of the plugin required. Then ask for suggestions from the Moodle Community. Design the user interface for the subscription plugin Handle the database and logs for the required implementation. Testing Fixing bugs and code optimization Checking the performance Integration of the project with Moodle

Timeline | Roadmap
22nd April 18th May : Community Bonding Period Discuss the ideas further with the mentor. Include or exclude things to formalize what is to be finally implemented under the project. Study the documentations of Moodle thoroughly. Study the Database Schema of the Moodle database. Understand the plug-in development in Moodle. Study in depth the events framework of Moodle. Also study the logging framework. Draft a developers documentation and show it to the mentor for feedback. 19th May 15th June : Interim Period Coding period begins. Design the user interface of the plug-in. Create a Moodle plug-in that will extend the functionality of the Events API and Logging API to let the users manage its subscriptions. Introduce the filters that will allow the user to have a multi-faceted subscription, i.e., allowing users to explore a collection of information by applying multiple filters rather than in a single, taxonomic order. 15th June 26th June : Interim Period Retrieve the data from the log storage implement some method to query and extract logs from the database. Collect the information for the event create notification messages to be sent to the users. Implement the notification preferences section to manage when to send the notifications. Implement the feature of notifying it right away, or on a daily basis, or on a weekly basis, or not notifying it at all. Also set the default values according to the events. Document the work. 27th June : Mid-Term Evaluation Submit code along with documentation for evaluation.

28th June 10th August : Interim Period Implement the functionality of the notifications being sent to the users via email or Moodle messages. Write the official documentation of the plug-in. Discuss with the mentors to ensure that everything is covered in the documentation. Running test cases. Checking the performance. Submit the code to Moodle. 11th August : Suggested Pencils down Fix any issues found while testing or those reported by the community. Improving the documentation after feedback from the mentor and community. 18th August : Firm Pencils down Final Release

The proposed timeline is realistic because GSoC will be my only involvement during the summers. My summer vacations will start from the last week of April and will extend up till the end of July. Even after the academic session will start, I wont have quizzes/mid-term exams till the mid of September. So, I can be completely devoted to the project. During the summer vacations, I can give upto 7-8 hrs per day which makes it around 50-60 hrs on a weekly basis. Since I always follow a strict schedule, thus it wont be a problem to devote this much of time. I will maintain constant contact with my mentor, will give weekly reports on the progress of the project, and ask for suggestions. I will also keep looking at the other ongoing projects in Moodle and help if could so as to help the community in all possible ways.

OPEN SOURCE DEVELOPMENT EXPERIENCE


I chose this project since its rooted from FOSS and highlights the GNUosphere concept, brings power of web-development to non- technical users. This will be my first substantial contribution to an Open Source Project. The implementation will enable advanced features in Moodle. It will give the users an event subscription facility. The users will be able to subscribe to the activities in Moodle and will be notified for the same. I have tried to fix bugs to get a basic understanding of the Events system and its functions and classes. I have tried to fix the following bug: MDL-44369 Review calendar code and add events where required. I had also reported a minor issue, but it was not a bug rather a deliberate and conscious action as there was not much option available: MDL-44558 False insecure dataroot warning.

BACKGROUND STUDY
Ive studied the Moodle code and got acquainted with the architecture of the functions, events system, APIs that will be used for the implementation of the project. I have gone through the components of Moodle and got myself familiarized to it. I have listed them down here: Logging system: I have studied the Moodle Logging System to understand the database handling in Moodle. It is important for the project as it involves fetching data from the databases. Events API: I have also got familiarized with the events system and its architecture, the triggering and handling of events. This forms the backbone of the project, and its understanding is very important. Events 2: I have also understood the new events system. The deprecation of add_to_log() function and and the new system of observers instead of handlers.

WORK/INTERNSHIP EXPERIENCE
I have experience of a multitude of things. I have worked on very different projects I have done a summer project during my first year on Gesture Recognition using Webcam in a team of 4. The software is capable of recognizing the different hand gestures and performs the assigned function. I have used OpenCV library for the implementation. The project received a lot of appreciation. Heres a link to my project video: http://www.youtube.com/watch?v=q-55tBvrD2g

I have implemented Hilberts Transform on an FPGA and presented it in my college Technical Festival, Techkriti14. It won 2nd Prize and a lot of appreciation as the percentage of error was of the order of 10-4. I have participated in various Hackathons organized in my institute. I have developed various applications on windows platform. In my first year, I in a team of four girls of first year, developed a windows quizzing application which got selected in top 7 teams out of 43 teams participating. It was the first time that we had developed an app. I have also collaborated in developing a website for the Students Placement Cell of my Institute. The link to the site is: Link to the website

ACADEMIC EXPERIENCE
I am sophomore student of Computer Science and Engineering in Indian Institute of Technology, Kanpur, U.P., India. I am a very keen student and love to work on new and challenging projects. I have a very fast learning ability and can understand things well. I have done Data Structures and Algorithms, Computer Organization, Logic in Computer Science, Discrete Mathematics and Computing Laboratory. The Computing Laboratory course was a very challenging course as there was completely new language to deal with every week and then solve an assignment related to that. In that course, I learnt git, BASH, MySQL, Perl, PHP, XML, Octave, Javascript, LATEX, and Beamer. I have a good hold on C/C++ and HTML. I am also involved in Competitive Programming. I have participated in the ACM-ICPC in a team of three.

WHY MOODLE ?
I have used Moodle in my institute. The faculty of Computer Science department and other departments use Moodle extensively. It has made the work of both the students and professors very easy. It is a really easy to use, friendly platform. It would be a great opportunity for me as a developer to contribute to this project. I love writing code and in web development I can even immediately view the effects. I would appreciate if I am able to leverage my skills to tackle problems on the fly. After being associated with the community for some time now, trying to understand its architecture, I feel that its a very dynamic project and there is a lot to learn by contributing to this project.

You might also like