User:Akshay.agarwal

Hi, I am Akshay Agarwal, a B.Tech student & a freelance web developer. I will update my page soon.

Google Summer of Code 2011 proposal: Account Creation, Login Screens, and Ajax-ification of everything

Probable 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 be consumers of the Login/Account Creation Class.

We will track the "Source Avenue" for user account creation 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". The particular "Exit Activity" chosen by the user will also be tracked which will allow 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. I have been working as a freelance technology consultant for 3 years. I have designed many websites & developed several innovative applications for ERP, CRM & portal development. 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. At the same time, it offers me a great learning experience & a platform for utilising my skills, for open source development.

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 points' - Investigate the current login API & its interaction with Special:UserLogin - Analyse the database structure & decide on a schema for storing the user chosen exit points
 * 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 API - 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 points' - Writing the documentation
 * July 12 - July 31

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

Participation
My work style is to take one task at a time & stop not till it gets completed. I will daily communicate my progress 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,on IRC at #mediawiki, #wikimedia-dev & the mailing lists.

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


 * 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
 * Facebook Connect (Login with facebook functionality) for OsCommerce & phpBB sites
 * Apache mod_rewrites
 * Custom developed Content Management Systems
 * Custom Joomla websites
 * 'OpenIMS', an Open Source Institute Management System
 * Open Source Record Management System for Mobile Shops selling SIM cards
 * Open Source Hotel Management System (under development)