The Special:ViewData page in Cargo extension has two purposes: 1) to display additional query results when a user clicks on “More results” from within the main set of query results; and (2) to provide a user interface — if a user goes directly there — to run any Cargo query. For this 2nd use, the interface could be improved quite a bit: right now the UI is just some text inputs, with no autocompletion, no validation, no additional, format-based inputs, and in general no help to the user. This project aims to provide a much more user-friendly interface, using autocompletion, dropdowns, and/or other form elements, so that users didn’t have to, for example, guess what tables and fields exist on the wiki. The ViewData page must also be renamed to CargoQuery.
Special:CargoQuery on discoursedb.org
Some of my major commits are (Not including error fixes and stuff):
- Wrote a new api cargoqueryautocomplete for retrieving tables and fields from database.
- Added tooltips for every field with appropriate usage examples. (Integrated balloon.css)
- Jquery UI Autocompletion implemented to let users know about existing tables and fields.
- CargoQuery page redesigned and made more user friendly.
- Added front end Validations.
(All of my commits can be seen here).
What I have learned
I have worked in PHP projects before using Codeigniter but never on a large scale open source project. This project taught me a lot about the front end and how UIs can be made better. I learnt how to write an API and make it work with autocompletion.
After GSoC, I would like to continue contributing to Mediawiki. I will be looking for more projects and bugs and see what I can contribute, and in turn learn from them.
I would like to thank my mentors: Yaron Koren, and Nikhil-nk (especially Yaron) for guiding me throughout the project. Without you, this would not be possible. Yaron had provided many helpful insights and supported me whenever I was stuck.
I would also like to thank Wikimedia Foundation and Google for providing me with this wonderful opportunity.