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

 * Admin Pages - Create a collection of Special Pages for admin tasks(including the dashboard)
 * User Profile pages - Every user who has made an account for a conference would have a separate profile page.
 * User-Input forms - This will include all forms such as Submission form for a proposal, Registration form, Scholarship form
 * Custom tags and Magic Words - Defining new tags and magic words which would help display info on wiki pages
 * Payment Gateway - Code handling the PayPal payment gateway
 * Voting functionality - Code managing the voting feature across the conference
 * 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.

Project Schedule
I prefer to document and test the code side by side, so have prepared a schedule keeping that in mind.

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 - 1st June - test the code to see if HTML elements are rendered as desired ( fix CSS &javascript bugs for different browsers)+ documentation
 * Milestone 2 2nd June - 8th June
 * continue working on admin interfaces + User profile pages +dashboard(HTML+javascript+jQuery+Special Page class for the Dashboard)


 * 9th June - 10th June - would test for the CSS and javascript browser issues + documentation
 * Milestone 3 11th June - 18th June
 * start writing API modules(API classes extending ApiBase)


 * 19th June - 20th June - would test the modules with ajax calls (CSS+javascript issues) + documentation
 * Milestone 4 21st June - 28th June
 * finish writing API modules(API classes extending ApiBase which serve the response for Ajax calls)


 * 29th June - 30th June - testing of finished API modules + documentation
 * Milestone 5 1st July - 7th July
 * write code for database layer ( Database helper classes)


 * 8th July - 10th July- test for the consistency and integrity of data in tables(with the help of sample data) + documentation
 * Milestone 6 11th July - 18th July
 * write code for custom tags and magic words


 * 19th July - 20th July - test the functioning of custom tags and magic words + documentation
 * Milestone 7 21st July - 28th July
 * complete the code implementing Payment Gateway ,user-input forms(registration,submission forms) and voting setup.


 * 29th July - 30th July - testing of payment gateway and forms + documentation
 * Milestone 8 31st July - 15th August
 * merging with trunk, pre-deploy review, testing, bugfixing
 * do some refining tasks


 * 15th August - 20th August - Pencils down on official project and mail my mentor with all the updates

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. Some of my work that I have shared on Github - TransactionAppWebService - java(J2EE,spring),MapsModule - javascript

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 helps 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. Patches : bug 19935 , bug 6908 , bug 7184 , bug 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