User:Chughakshay16/GSOCProposal(2012)

This proposal page contains the details of the extension that I would like to build as part of a GSOC-2012 project.

Identity

 * Name
 * Akshay Chugh


 * Email
 * chughakshay16@gmail.com


 * Project Title
 * ConventionExtension - an extension to convert a wiki into a conference management system

Contact/working info

 * Timezone
 * Bangalore - India(UTC/GMT +5:30 hours)


 * Typical Working hours
 * 0900 hrs to 2200 hrs


 * IRC or IM networks/handle(s)
 * chughakshay16 on freenode.net(X-Chat) and webchat.freenode.net

Project Summary
ConventionExtension would help convert a wiki(running on Mediawiki) into a conference like website such as Wikimania.It would provide a collection of admin UI interface which would help ease the process of setting up conference like features on a wiki. Most of the other common features such as submission, registration forms would be created automatically for the conference. Monitoring such a conference would be made really easy with the help of a Dashboard feature, from where an admin would be able to look for all the changes happening within a conference. These are the set of features that it would provide :- 1. one or more conferences can be organized 2. a dashboard to configure conference related settings 3. automatic creation of wiki pages for the conference 4. special badge feature for the attendees 5. export feature for extracting all the info pertaining to a conference<nr 6. event management feature 7. payment gateway would be present 8. some custom tags to design the conference wiki pages.

Most of the admin interfaces would be implemented using AJAX, and others using Special Pages. Since ,all most all of the conference UI pages would be normal wiki pages they could be modified just like any other wiki pages. New tables created for this conference would hold all the relevant information that admin of the conference might need in running such a conference. Custom tags provided along with this extension could help set up some important UI elements on pages, for example a custom tag could be used to display a schedule for the conference. More in depth details about the implementation of this extension can be found at this page. The link for the repository is here. Wikis(powered by Mediawiki) are already being used as Content Management Systems, with the help of this extension they could be made to work as Conference Management Systems.

Deliverables
Depending on the approach and the architecture I had decided for this extension I have prepared this list of deliverables.

Required Deliverables
1.Special Pages Create a collection of Special Pages for admin tasks And some special pages for registration, submission tasks. 2. API modules Development of API modules which would help delegate the Ajax calls 3. js and jQuery modules Development of js and jquery modules which would be integrated with Special Pages developed in step 1 to form the admin page 4. Custom tags Writing code for creating new custom tags which would be used to change the look of Conference wiki pages 5. Database Tables and DB classes Creation of new tables in a database, and some helper DB classes 6. Core classes 7. Payment Gateway Code handling the PayPal payment gateway 8. Documentation Besides the documentation provided for the code written .Some extensive demo pages would be created along with this extension.

If time permits
It would be a Special Page along with jquery, ajax to provide an easy interface for the admin to design wiki pages( much like drag& drop).
 * Page Designer

Pre-Coding Period

 * Read about details pertaining to PayPal payment gateway
 * Set up a Git repository ( already done)
 * Setup local testing environment(Selenium)
 * Learn about how to use Selenium
 * Learn more about the coding conventions used in Mediawiki codebase
 * Learn more about the API documentation

Official Schedule

 * 23rd May - 30th May : start writing code for admin interfaces(HTML+javascript+jQuery+some PHP Special Page classes)
 * 31st May : test the code to see if HTML elements are rendered as desired ( fix CSS &javascript bugs for different browsers)
 * 1st Junel : write documentation for the code finished and update my mentor with a mail
 * 2nd June - 8th June - would continue working on admin interfaces including the dashboard(HTML+javascript+jQuery+Special Page class for the Dashboard)
 * 9th June : would test for the CSS and javascript browser issues
 * 10th June : complete the documentation for the work done and send a mail to my mentor stating the tasks completed
 * 11th June - 18th June : would finish off with the admin interfaces ( ajax+ javascript)
 * 19th June - would test the admin interfaces (CSS+javascript issues)
 * 20th June - write the documentation for the finished admin interfaces and mail my mentor with the updates
 * 21st June - 28th June : start writing API modules(API classes extending ApiBase)
 * 29th June : write documentation for the completed API modules and mail my mentor with the updates
 * 30th June - 6th July :

About You
I am pursuing Masters of Science in Chemistry and Bachelor of Technology in Electronics and Instrumentation from Bits Pilani(India). Currently I am in 5th(final) year and working as an Intern for a software company in Bangalore. It wasn't very long ago(may be in my 2nd year) when I got into writing codes just to see something render on my browser. But later when these pretty things on my browser didnt excite me anymore, I got more interested in writing server side code. Most of what all I have written till date is in Java and Javascript/Actionscript(jQuery) except for the couple of patches and a mediawiki extension which I wrote in PHP. The idea of making things simple, even simpler than they already are has always caught my attention. Most of the people around us are not familiar with coding stuff that goes into making a software, all they are concerned with is the end result. So unless and until the user experience the software offers is easy enough for them to understand and use ,there is no point in developing such a software in the first place. This is the main reason I want to develop this extension so that people wanting to set up a conference should easily be able to do so with having a free open source option available within Mediawiki at their disposal. Even though other open source options available out there would do just the same, but having the potential of a traditional wiki with a conference management system feature would prove more fruitful.

Participation
I mostly prefer to write code during day time, unless there is something not letting me sleep at night. I would keep my mentor updated about the project details on a weekly basis, and due to the difference in timezone main mode of communication I would be using is emails. In order to seek help for my queries I would be posting my queries in email to my mentor if I dont happen to find him/her on IRC channels. I would be maintaining a page under mediawiki.org for posting all the project details ,and all the project code would be kept under the public repository at Git.I have already created a repository for the same, and this is the link.

Past Open Source Experience
Most of what I have developed till date has either been for a college project or for my personal interest. Well I am not new to the concept of open source, I have used many of the java open source libraries and tools in my projects. And having had used them helped me understand the value of open source code available out there for others to use. I would see this as an amazing opportunity for me to become a part of open source family where code developed by me could prove useful to others. And I have already taken steps in accomplishing this motive, I attended Pune Hackathon which was held in February,2012 To gain an understanding of Mediawiki I have gone through its code base, and submitted some patches for Mediawiki (patch 1 and patch 2), and have also submitted an extension EmbedMaps. And doing this has helped me understand the mediawiki coding conventions and made me more familiar with PHP language. I have also shared code of some other projects in Git.These are the links to those projects - TransactionAppWebService - java(J2EE,spring) MapsModule - javascript