User:Aayush251/gsoc

GSoC Project Idea: MediaWiki API 2.0
Public URL: https://www.mediawiki.org/w/index.php?title=User:Aayush251/gsoc

Bugzilla report: https://bugzilla.wikimedia.org/show_bug.cgi?id=39592

Announcement: http://lists.wikimedia.org/pipermail/wikitech-l/2013-April/068926.html

Name and contact information

 * Name: Aayush Sharma
 * Email: aayushsharma251@gmail.com
 * IRC or IM networks/handle(s): aayush251 (Common)
 * Location: New Delhi, India (GMT+5:30)
 * Typical working hours: 10 AM - 6 PM (Flexible)

Synopsis
An API (Application Program Interface) is a protocol that establishes a connection between the software applications. MediaWiki API keeps growing with every new feature being added. We need to plan for future growth and development when more features will be added to MediaWiki. Not having proper plan will only cause trouble for programmers and clients. In this project, I will be working and modifying MediaWiki API to solve the following problems:
 * Avoiding client to update every time API changes
 * Developers will develop extensions from the single default API (recommended).
 * Reduce the cost of making a change in MediaWiki.
 * Organize feature changes - if the client asks for ver X, API guarantees the capabilities of X and result in format X.
 * Avoid cluttering of parameters.
 * All API capabilities should return only the data requested to minimize bandwidth and improve speed.

Required deliverables
Introducing an "aliasing" system that would easily allow us to change input parameter signatures.

Changing API output (structured errors, i18n, etc.

Introduce good unit tests.

If time permits
Working on Client Libraries

Before May 27
Get to know MediaWiki core and also try to solve some Bugs to get familiarized with MediaWiki.

May 27 - June 17
Community bonding period: I am already active member at Mediawiki IRC channel. And due to my final semester exams in this time period I will be working on getting to know community before this time period.

June 17 - June 23
Studying the existing MediaWiki code/API, reading documentations Creating final plan on how to proceed with my mentor for rest of summer.

June 24 - July 14
Will start implementing changes to MediaWiki API's
 * Checking of Client to avoid suboptimal usage.
 * Gets the result in required format.
 * A system to check for available version of API
 * API will return required result
 * Extension API can be updated independent of core and more.

Deliverables : Fixes.

July 15 - August 4
Unit Testing

Deliverables : Fixes.

August 5 - August 30
Continued Unit testing to fix bugs.

Deliverables : Fixes.

September 1 - September 10
Cleaning up the code. This step involves polishing the code, continued bug testing. So that changes can be merged by September 10.

Deliverables : Final Code.

September 11 - September 15
Documentation Writing.

Deliverables : Documents.

September 16 - September 22
Pencils down. Taking a week to polish code, improve documentation, etc.

About me
Hi, I am Aayush Sharma, Undergraduate student at Maharshi Dayanand University, Rohtak, India. I am a reviewer and content writer at www.jags.in, Microsoft Student Partner for session 2013-14. I've taken seminars on HTML 5, Windows phone development in different colleges. I've been using Wikipedia for almost 7 years now that is why I want to contribute to Wikimedia community which is by far best open source community I've known where everyone can share everything they know.

I have good understanding of C, Java, PHP, MySQL,HTML/CSS. Working on this project will help me know how an open source community work, learn new things and have a productive summer. I plan to be part of MediaWiki even after GSoC is over. In my free time I love to code and update my website (aayush.wyvernia.net). Let’s create and innovate together.

Participation
I'll prefer conversing on IRC since you get more people to give feedback and help you out. I'll be available on #mediawiki, #wikimedia-dev whenever I'm online. I will also use Wikitech-I and Wikidata-I mailing list if I still need help .Source code will be under my Github account and blog too. I'll try to solve questions/problems myself and would approach my mentor if I can't solve it or ask on IRC if he's not available.

Past open source experience
Currently working on an Upload Wizard bug