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 interfaces which help ease the process of setting up conference like features on a wiki. Most of the other common features such as submission,voting and 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. user profile pages for the attendees 2. a dashboard to configure conference related settings 3. automatic creation of wiki pages(with default content) 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 - for managing the financial transactions occurring during the conference 8. some custom tags to design the conference wiki pages. 9. poll management - for setting up polls across the conference

All the admin pages including the Dashboard would be implemented with the help of Special pages and ajax(js) scripts.The other elements of this extension such as User profile pages, and submission, registration forms would also be set up through Special Pages. The regular conference pages(Welcome Page, Registration page..etc)would just be the normal wiki pages with the admin defined permissions(user rights). With the help of custom tags the look and design of conference pages can be changed. The best part of this extension is that most of the regular setup of this conference would be automated, which means that as soon as the admin set up the preferences and settings for the conference all the common features for a conference would be ready to be use. Currently wikis powered by mediawiki serve the purpose of a content management system, but with the help of this extension they would bring the already accepted and highly appreciated power of mediawiki combined with an efficient conference management system.

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. Voting panel Code for setting up a voting panel. 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 as 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(already done) 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 conference
 * 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 user-input forms(registration and submission forms)


 * 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(User profile 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 my 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 code just to see something render on browser. But later when those pretty things on my browser didn't excite me anymore, I got more interested in writing server side code for the web applications.Most of the the work that I have worked on till date has been mostly in Java, Javascript(jQuery) and ActionScript(Flex).During my internship I was asked to write PHP scripts for their server side component, so the familiarity with PHP language I gained during that period along with the bug patches I submitted for Mediawiki helped me become competent 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 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 such 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.

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 would be 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 of 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 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 where people would contribute with my work to make it better.In order to start contributing for Mediawiki I have been going through their code base for some time now, and have written some bug patches as well. The Pune Hackathon (India) which was held in February showed me how much fun it is to develop open source code for the community. Some of my work : Patches :
 * TransactionAppWebService - java(J2EE,spring)
 * MapsModule - javascript
 * https://bugzilla.wikimedia.org/show_bug.cgi?id=19935
 * https://bugzilla.wikimedia.org/show_bug.cgi?id=6908
 * https://bugzilla.wikimedia.org/show_bug.cgi?id=7184
 * https://bugzilla.wikimedia.org/show_bug.cgi?id=21119

Any other info

 * more details about this extension(architecture+UI mockups) - http://www.mediawiki.org/wiki/User:Chughakshay16/ConventionExtension
 * database details for this extension - http://www.mediawiki.org/wiki/User:Chughakshay16/databasedetails
 * Other open source conference management systems pentaburf,WisConDBand OpenConferenceWare