User:Aayush251/gsoc
GSoC Project Idea: MediaWiki API Improvement
editPublic 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
edit- 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
editAn API (Application Program Interface) is a protocol that establishes a connection between software applications. MediaWiki API keeps growing with every new feature that's added. We need to plan for future growth and development when more features will be added to MediaWiki. Not having a proper plan will only result in trouble for programmers. In this project I will be working and modifying MediaWiki API to solve the following problems:
- Avoiding the client updating every time the API changes
- Developers will develop extensions from the single default API (recommended).
- Reduce the cost of making a change to MediaWiki.
- Organize feature changes - if the client asks for version X, the API guarantees the capabilities of X and results in format X.
- Avoid cluttering of parameters.
- All API capabilities should return only the data requested to minimize bandwidth and improve speed.
Deliverables
editRequired deliverables
editIntroducing an "aliasing" system that would easily allow us to change input parameter signatures.
Changing API output (structured errors, i18n, etc.) (i18n are means of adapting computer software to different languages, regional differences and technical requirements of a target market. Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes. Localization is the process of adapting internationalized software for a specific region or language by adding locale-specific components and translating text)
Introduce good unit tests. Testing process will be iterative.
If time permits
editWorking on Client Libraries
Timeline
editBefore May 27
editGet to know MediaWiki core and also try to solve some bugs to become familiarized with MediaWiki.
May 27 - June 17
editCommunity bonding period: I am already an active member at the Mediawiki IRC channel. But due to my final semester exams in this time period I will be working on getting to know the community before this time period ends.
June 17 - June 23
editStudying the existing MediaWiki code/API, reading documentations and creating a final plan on how to proceed with my mentor for rest of summer.
June 24 - July 14
editWill start implementing changes to MediaWiki APIs
- 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
editImplementing the changes one by one after proper unit tests. This process will be done in small changes, small patches.
Deliverables : Fixes.
Mid-term evaluation
editAugust 5 - August 30
editContinued Unit testing to fix bugs.
Deliverables : Fixes.
September 1 - September 10
editCleaning up the code. This step involves polishing the code and continued bug testing so that changes can be merged by September 10.
Deliverables : Final Code.
September 11 - September 15
editDocumentation Writing. Documentation will include a walk-through of what changes were made that will help other developers in future.
Deliverables : Documents.
September 16 - September 22
editPencils down. Taking a week to polish code, improve documentation, etc.
About me
editHi, 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 and Windows phone development in different colleges. I have been using Wikipedia for almost 7 years now. That is why I want to contribute to Wikimedia community which is by far the best open source community I have known.
I have a good understanding of C, Java, PHP, MySQL, HTML/CSS. Working on this project will help me know how an open source community works, 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
editI will prefer conversing on IRC since you get more people to give feedback and help you out. I will also be available on #mediawiki , #wikimedia-dev whenever I'm online. I will also use Wikitech-I and Wikidata-I mailing lists if I still need help. Source code will be under my Github account and blog too. I will try to solve questions/problems myself and will approach my mentor if I can't solve it or ask on IRC if he is not available.
Past open source experience
editCurrently working on an Upload Wizard bug
Health Analyzer app for Hospitals and clinics (platform : windows) https://github.com/aayush251/healthapp
References
edithttp://www.mediawiki.org/wiki/Requests_for_comment/API_roadmap