User:Akshay.agarwal

Project Status
Project Successfully Completed, working on core integration now Google Summer of Code 2011 proposal: Account Creation, Login Screens, and Ajax-ification of everything

Mentor: Brandon Harris

Identity
Name:Akshay Agarwal Email: akshay.leadindia@gmail.com Project title:Account Creation, Login Screens, and Ajax-ification of everything

Contact/working info
Timezone:UTC +5:30 hours Typical working hours:Morning 10 am - Midnight 02 am IRC:akshayagarwal on Freenode Gtalk:akshay.leadindia Skype:akshay.leadindia

Project summary
My project is centered around the Changes in Account Creation module. Currently, the UI & backend logic are quite mixed up in LoginForm. I propose to take out the entire logic for Login/Account Creation from Special:User Login & put it inside its own class. So now, Special:UserLogin will become a consumer of this Login/Account Creation class & will contain only the presentation logic by implementing the HTMLForm Class. Also, APILogin.php & APILogout.php will become consumers of the Login/Account Creation Class.

The "Source Avenue" for user account creation will be tracked which will help in determining how, when, and why people create accounts. This "source avenue" will be informed to the Login/Account Creation API which will suggest the suitable "Exit Acitivities" for the user. The particular "Exit Activity" chosen by the user will be recorded helping us to see which exit activities are better at encouraging conversion.

The usability of the forms will be enhanced using AJAX by implementing in-situ javascript dialogs, client-side form field validations & tweaking the interaction design.

The main purpose of this project is to ensure that the process of account creation (or login) does not wildly interrupt the user's task flow. This will help Wikipedia (& other Wikis) in offering a better user experience & thus increase the number of 'converted' users.

About Me
I am a Third Year Computer Science & Engineering student at SGGSIE&T, Nanded. I have been working as a freelance technology consultant for 3 years & have served more than 100 clients. I have been developing several innovative business solutions for small & large scale companies. I strive to make the best possible use of open source technologies in all my projects as it provides a reliable & robust framework to build upon without any licensing hassles. I have developed most of my skills with my love for self learning.

I am highly excited about my GSoC project as it will add a new dimension to MediaWiki & help me in contributing to an exemplary open source initiative.It also offers me a coveted opportunity to learn from highly experienced mentors and the community at large.

Required deliverables

 * Excising Account Creation and Login Code from Special:UserLogin and putting it into its own class, making sure that Special:UserLogin still works so as not to break anything
 * Converting Special:UserLogin to use HTMLForm for it's layout and display
 * Adding "source" tracking and "configurable exit" functionality to the Creation/Login API
 * Adding in the usability enhancements to the forms (into HTMLForm, where everyone can use them)
 * Developing an AJAX library for Creation/Login
 * Security Audit for the above
 * Documentation for the above

If time permits

 * Modifying extensions to supply "exit activities"

Community Bonding Period
- Familiarize myself with the community - Learn about the API mechanism in MW
 * April 25 - May 2

- Learn about the ways of tracking 'source avenues' & suggesting 'exit activities' - Investigate the current login API & its interaction with Special:UserLogin - Analyse the database structure & decide on a schema for storing the user chosen exit activities
 * May 3 - May 10

- Analyse the existing AJAX library of MW - Learn the potential security risks for all the features in my project - Learn the best practices for MW coding
 * May 11 - May 22

Official Coding Period
- Develop the Account Creation/Login Class - Convert Special:UserLogin to use HTMLForm for it's layout and display - Add 'source' tracking and 'configurable exit' functionality to the Creation/Login API - Add the usability enhancements to the forms
 * May 23 - June 8
 * June 9 - June 25

- Develop an AJAX library for Creation/Login - Security Audit - Midterm Submission
 * June 26 - July 11

- Thorough testing of code - Modifying extensions for supplying 'exit activities' - Finalizing the documentation
 * July 12 - July 31

- Buffer period for any unlikely delays
 * August 1 - August 15

Participation
My work philosophy is to take one task at a time & stop not till it gets completed. I will communicate my progress on a daily basis with my mentor & the community over IRC & mailing lists. I will publish the source codes on a svn repository. I will also maintain a blog for the updates since it will help in getting a lot of feedback on my work. For any help, I will search for it on MW, standard help sites, IRC at #mediawiki, #wikimedia-dev & the mailing lists.

Past open source experience
I have worked extensively with open source web technologies & have an intermediate level expertise with PHP. A partial list of my development projects includes :-

Please use the following login credentials whenever needed:- Username: bestwebc_demo Password: demo

Tip: Try entering 'akshay' as username, enter different passwords in password & re-type passwords field, wrong email id's or submitting the form without entering anything. Tip: This is the CMS for WellnessCare Systems Pvt. Ltd. In demo mode, you will be able to "view" the CMS components but not edit it
 * AJAX form validation for MediaWiki account creation screen
 * 'Bulk-SMS', a wordpress plugin for sending SMS using SMS gateways
 * 'EnSong' (at MIT Media Labs Workshop), an application which plays songs as per the level of motion in the room, hosted at Google Code
 * 'OpenIMS', an Open Source Institute Management System
 * Custom developed Content Management Systems
 * Custom Developed Joomla Websites

This particular example is implemented for a shop selling cellphones & SIM cards. It comprises a custom CMS for their website, a record management system for SIM card sales & a system for tracking cellphone repair orders. This plugin enables users to login on their with their Facebook accounts. You can also see an example of Apache mod_rewrites using which all the dynamic links in the website are converted to static links for SEO.
 * Open Source Shop Management System
 * Facebook Connect Plugin for OsCommerce & phpBB sites
 * Open Source Hotel Management System

Any other info
I have built a working prototype of my proposal in a test wiki here. The following series of screenshots illustrate it

1) Form submitted without entering the required fields



2) Entering wrong credentials



3) Entering the right credentials & submitting the form





4) After completion, the proposed signup form will look like this: