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 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. Some special pages are created for Registration, Submission and Scholarship forms which would be already configured and integrated for use in 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. 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 as well.

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 business logic 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

 * I would like to create more custom tags that an admin could use to design the conference pages, the sole purpose of this extension is to set up a good conference website with minimal amount of effort.

Pre-Coding Period

 * Read about details pertaining to PayPal payment gateway
 * Set up a Git repository and gain some more familiarity(more than what I already have) with it.
 * Setup local testing environment(Selenium)
 * Learn about how to use Selenium
 * Learn about how different types of caching is implemented in Mediawiki
 * And finally learn some more about the API functionality in Mediawiki

Official Schedule

 * Milestone 1  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 June - write documentation for the code finished and update my mentor with a mail
 * Milestone 2 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
 * Milestone 3 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
 * Milestone 4 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
 * Milestone 5 30th June - 6th July
 * finish writing API modules(API classes extending ApiBase which serve the response for Ajax calls)


 * 1st July - 2nd July- test to see if ajax calls are properly handled by API modules
 * 3rd July - write documentation for the completed API modules and mail my mentor with the updates
 * Milestone 6 4th July - 7th July
 * write code for database layer ( Database helper classes)


 * 8th July - 9th July - test for the consistency and integrity of data in tables created for this conferece
 * 10th July - write documentation for the Database helper classes and mail my mentor with the updates
 * Milestone 7 11th July -18th July
 * as of this point extension is ready enough to be tested(fix issues if found). All the features except the Registration and the Payment Gateway can be tested. And mail my mentor with the updates


 * Milestone 8 19th July - 26th July
 * complete the code for custom tags


 * 27th July - 28th July - test the functioning of these custom tags and mail my mentor with the updates
 * Milestone 9 29th July - 4th August
 * complete the code implementing the Payment Gateway and Registration Form


 * 5th August - write the documentation for the payment gateway and mail the updates to my mentor
 * 6th August - 8th August - write code for some of the remaining Special Pages which would be used as Submission and Scholarship form. And mail my mentor with the details.
 * Milestone 10 9th August - 15th August
 * complete testing of the extension


 * 15th August - 20th August - finish uncompleted documentation, and some other refining tasks. Pencils down on official project.Post a final update to my mentor.

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 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(jQuery)+Actionscript except for the couple of patches and a mediawiki extension which I wrote in PHP. Very few ideas drive me crazy to a point where I would sit 10 hours a day and code it out. 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 the 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 a software in the first place. I am talking about simplicity in terms of how the user interacts with the software and how quickly user gets familiar with it.And I think for the same reason(and obviously for the fact that its a free source of accumulated human knowledge) Wikipedia and its related projects are so popular, because end users can modify the content without having any knowledge of HTML or CSS .Just the same way I want my extension to be a simple ,yet powerful tool to provide means for setting up a conference on a wiki site.An admin with just a preliminary knowledge of PHP should be able to configure the Conference according to his/her needs. And now some other less relevant details about me - I also happen to be a very good tennis player ( represented my college team last year )and have interest in reading biographies.

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 it (patch 1 ,patch 2, patch 3,patch 4), and have also created an extension EmbedMaps. And doing all this helped me understand the mediawiki coding conventions. I have also shared code of some other projects in Git.These are the links to those projects - TransactionAppWebService - java(J2EE,spring) MapsModule - javascript

Any other info
1. The in-depth details of this extension can also be found on this page 2. The Database layout and its schema details can be found at this page Other open source conference management that I looked into before coming up with this proposal are:-
 * pentaburf
 * WisConDB
 * OpenConferenceWare