User:Chughakshay16/ConventionExtension

This page contains the details of an extension which I would like to develop as part of a GSOC-2012 project, which would help convert any wiki into a conference like website such as Wikimania. Currently Wikimania is hand-tailored to meet its needs(features it currently supports). With the help of this extension wiki admin can set up a conference with features like proposal submission, voting and registration. This extension would be built on the MVC(along with Observer classes) design pattern, which would help create an intuitive workflow for the admin(preferences) menu as well as for the users visiting the Conference wiki. Thread link which i have started at wikitech-l.

Features

 * one or more conferences can be organized --->Admin can setup one or more conferences(a default set of pages would be created for each of those conferences and stored in a Mediawiki database just like any other wiki pages). Content and structure of those pages could be changed later by the admin ( or by someone who has been assigned special permissions by the admin).
 * conference can be easily configured with the help of preferences provided on the admin --->Various attributes pertaining to a conference like event can be set up by the admin once he creates a new Conference. Features such as the information on speakers, rooms used during the conference,assignment of teams of people for delegating the work at a conference can be configured too.
 * creates a set of UI pages for your conference ( like Welcome page, Registration page,Proposal Submission page and some more depending upon the preferences set)
 * assignment of people can be done for specific events --->An admin can assign people different roles such as a developer, a committee member,reviewer etc.
 * also creates some Special Pages from where admin can very easily monitor the Conference related features
 * special badges for the attendees of the conference could also be created
 * all the details pertaining to the event ( or conference) can be downloaded in CSV( or XLS) format much like an Export feature we have in a wiki.
 * an email notification system would also be available
 * like/unlike buttons can also be integrated into the pages
 * event management features
 * site user can import conference schedule into their preferred calendar application
 * latest event feeds can also be included on the page like its done on this page
 * updates from other social media networks (like Facebook, Twitter) can also be integrated in the wiki pages
 * feeds from another wiki sites can also be included on the page such as this

Setup
Administrative tasks 1. List of Special Pages for admin purposes a) Start a Conference page 	It will just display a big button saying " Start a new conference "	It will also display a big button saying "Start a voting panel"	This page will only be visible to the with either bureaucrat and sysop rights	And it will already display the conferences already running on this wiki and would also contain edit and monitor links to those conferences.	b) Conference Settings (part one) The list of settings that would appear on this page 1. Title of the conference 2. Start Date 3. End Date 4. Description 5. Venue 6. Capacity Once these settings are set the user would move on the next part in conference settings

c) Conference Settings (part two - User rights) 	Here an admin would have to assign rights to different users. Here this might lead me to create new user groups for this wiki. I havent decided on that yet.	Different permissions that i could think of :-	1. People who could modify this wiki 	2. People who could monitor this wiki 	So here admin would have to enter the usernames of people he/she would want for the permissions mentioned above	By default the person who created this conference will be given both the permissions.	After completing this process user would be prompted to move on to the next set of settings

d) Conference Settings( part three - Events ) 	Here admin would provide information about all the events that are going to take place during that conference.

e) Conference Settings (part four - Pages) 	This page would contain list of pages that would be created by the software for this conference and links to those pages will be given and on each of these respective pages settings button would appear	on the page for admin to make the necessary changes. A delete link would appear next to all those links. And also a help icon would appear next to the links just to give a brief description of purpose the	page is for. It would also contain a button to create new pages for this conference ,and an admin could choose the namespace and the title for the same. And admin could even change the namespace and 	title for the pages already created by the software.

e) Conference Settings (part five - Help ) 	This page would suggest an admin a bunch of features that he/she could use for the conference such as 		1. Custom tags available to modify the look of pages 		2. Magic Words 		3. Parser tags 		and some more....

f) Dashboard for the conference (even thought its a special page but its look would be different from the rest of the special pages) 	From here admin could monitor the conference . It would contain a list of options ;- 		1. Pages 		Its a place where an admin gets to see all the active pages in a conference. An admin could even modify the title/namespace for a page or even delete them if he/she wants to. 		2. Activity 		This is a place where we would see the activity on all the pages. This wouldnt be difficult, as we would just need to pull information from the database, such as from how many views a page has had 		3. Settings 		Here other configurational settings can be set and also the ones which were set before in the setup process 		4. Submissions 		This page will just display a list of all submissions made so far 		5. Attendees 		6. Organizers 		All the organizer information and their rights are displayed here and all this information can be fetched from the database tables 7. Speakers The same way its done for organizers 8. Updates All the recent changes with respect to the conference( almost all of the information will be pulled from the database) 9. Voting stats Havent thought about this feature completely yet. Need to look into some examples. 10. Schedule It would just pull of all the info from the Conference_Events table These are all the options that I could think of as of now. Once the preferences are set by the admin via the admin pages, a collection of UI pages would be created by this extension which would contain the default set of features that a conference website must have( like welcome, registration and submission pages).

Appearance
Besides modifying the UI pages(created by the extension)by hand, one can use a new set of custom tags,parser functions and magic words that would be present with this extension to change the appearance of these pages in whichever way they want. As of now i could think of some custom tags such as, ,. Wikimania uses a lot of templates to decorate its pages.More information on such templates can be found here.Wikimania Templates. But in my case instead of having the user to create templates they could use custom tags such as mentioned above to accomplish the same task.
 * - which would help display an event schedule
 * - for displaying sponsor banners
 * - for integrating an interface showing all the latest updates from Twitter, Facebook regarding this event.

Monitoring
Admin or a set of users permitted by admin can monitor the changes occurring on the wiki like keeping a check on vandalism, number of attendees registered for the event.This feature would be accomplished by a couple (or more) Special pages specially dedicated for monitoring purposes.So by extending a SpecialPage class, these pages would also be included under the Special Pages option present in every wiki. And all of these monitoring special pages would be accessible from the Dashboard.

Architecture
UI pages and Special pages(for monitoring and preferences) will form the views part of the MVC pattern, whereas additional controller(,helper and observer)and model classes would constitute the rest of MVC. Special pages written for this extension would carry the task of providing an admin an easy to configure interface where he/she would be able to manage and configure a particular event(or conference), whereas the other collection of pages per conference would provide an entry point for the visitors interested in the conference(more specifically the people who are interested in registering for that conference).

UI pages
The extension by default creates a category under the name of the conference and stores the UI pages in the very same category.These pages would be stored just like any other wiki page in the database.So as we could see the title and the namespace of these pages would also be set by the extension itself(unless explicitly modified in the admin menu). I still haven't decided on the approach i would be taking to create the UI pages. (API or the mediawiki codebase)

Useful Resources
To completely understand the functioning of a conference management system, i went through the code base of a couple of open source ones available out there. Crawling through their code base helped me set my approach for developing this extension. wisconDB openconferenceware

About Me
Name : Akshay Chugh email-id : chughakshay16@gmail.com IRC nickname : chughakshay16