Evaluating and Improving MediaWiki web API client libraries

This is Frances Hocutt's project proposal for |Evaluating MediaWiki Web API Client Libraries.

Evaluating MediaWiki web API client libraries

 * Public URL: https://www.mediawiki.org/wiki/Evaluating_MediaWiki_web_API_client_libraries
 * Bugzilla report: https://bugzilla.wikimedia.org/show_bug.cgi?id=1
 * Announcement: http://article.gmane.org/gmane.science.linguistics.wikipedia.technical/76046

Name and contact information

 * Name: Frances Hocutt
 * Email: franceshocutt@gmail.com
 * IRC or IM networks/handle(s): fhocutt
 * Web Page / Blog / Microblog / Portfolio: http://franceshocutt.com / http://twitter.com/franceshocutt
 * Resume (optional): http://franceshocutt.com/cv/
 * Location: Seattle, WA, USA
 * Typical working hours: between 1 pm and 2 am PDT (can move earlier if more convenient)

Synopsis
This project will select the best MediaWiki API client libraries in five languages. The existing actively maintained libraries will be evaluated on functionality, usability, presence/quality of documentation, level of abstraction, and any other relevant criteria. The best of these will be evaluated in more depth against a "gold standard" ideal, and will be provided with TODOs that will lay out the next steps to reach it along with testing files and documentation improvements. This project will then focus on substantially improving to one of these libraries through the submission of bug reports, bugfixes, and expanded documentation.

This project will improve API:Client_code and take the guesswork out of choosing a useful and appropriate library. It will provide a clear target standard for MediaWiki API client library developers to aim for, hopefully resulting in increased functionality and usability of available libraries. Additionally, the functionality and documentation of one MediaWiki API client library will be significantly improved.


 * Possible mentors: Sumana Harihareswara, Co-mentor Tollef Fog Heen, Technical Advisers Merlijn van Deen and Brad Jorsch.

Deliverables

 * Community Integration Period (8-10 working days):
 * Set up computer: install necessary languages and interpreters/compilers, install git, get everything working (3 days)
 * Search for the existing API client libraries, add these to API:Client_code
 * Communicate with mentors and MediaWiki community
 * Work on a mini-project to explore the MediaWiki API
 * Submit first pull request to a git repository


 * Week 1:
 * Select the best library/libraries in Python, Perl, JavaScript, Ruby, and Java. (required)
 * Research and decide on criteria to evaluate these libraries in more depth.


 * Week 2:
 * Finish writing up evaluation criteria/library "gold standard" (required)
 * Evaluate Python libraries (building on work from microtask

Continue evaluating best libraries of each language. To the library maintainers submit documentation of tests and results, praise for where they get things right, documentation written while evaluating (optional), and bug reports for areas that can use improvement.


 * Week 5:
 * Finish evaluating/writing TODOs for libraries in the third language. (required)


 * Week 8:
 * Finish evaluating/writing TODOs for libraries in all five languages. (required)
 * Choose a project to make in-depth contributions to. (required)


 * Week 9:
 * Begin contributing to chosen project; file bug reports. (required)
 * Determine goals for Weeks 10-12. They should include filing bug reports, submitting bugfixes, and improving the project's documentation. (required)


 * Weeks 10-12:
 * Carry out goals set in Week 9.

Participation
I plan to publish my weekly status updates on User:fhocutt, including links to any place outside of MediaWiki where I have contributed code or documentation (i.e. the repositories for the various client libraries). I will also stay in contact with my mentor through regular videochats and over IRC. I plan to publish my in-progress work on the project page (or sub-pages). I plan to ask for help on IRC, wikitech-l, or personal chat/email with my mentors.

About you

 * Education completed or in progress:


 * University of Washington, MS, Chemistry, 2012–June 2014 (planned graduation date).
 * University of Washington, MS, Materials Science and Engineering, 2010–2012.
 * Harvey Mudd College, BS with distinction, Chemistry, 2003–2007.


 * How did you hear about this program?

I first heard about the OPW through Twitter—@callbackwomen, @ashedryden, and @hypatiadotca all promoted it. Later, Sumana Harihareswara reached out to me with encouragement and a few project suggestions.


 * Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?

I will be attending OSBridge June 24–27 and volunteering there. I will definitely be traveling June 19–22; I may leave as early as June 15.


 * We advise all candidates eligible to Google Summer of Code and FOSS Outreach Program for Women to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?

I will not be enrolled during the Spring 2014 quarter, so I will not be eligible for Google Summer of Code.

I am passionate about tools and I define "tools" broadly. No matter what discipline, I usually find myself making tools, sharing them, making them better, and teaching other people how to use them.
 * Why I want to make this project happen:

As a chemist, I developed a new reaction—a new tool for forming chemical bonds—optimized the reaction conditions, and tested it with a range of chemical inputs to find what types of chemicals would lead to high yields of product and what types would lead to none. As a handspinner, I've started modeling the mechanical relationships that let my spinning wheel vary the twist and tension on the forming thread. As a hackerspace organizer, I notice where tools for communication and collaboration can fit into our workflow, and along with the other members I try to find what works best for us.

The MediaWiki platform is another tool. Wikis enable collaboration, easy sharing of information, and user-built databases that have the potential to continually improve through the small contributions of many. By improving the MediaWiki API client libraries, I would make it easier to users and maintainers to access these wikis and use the data in them for their own purposes. By evaluating the libraries and selecting the best, I would inform potential users which of these tools are the most effective and the easiest to use. As I completed my evaluation I would offer a clear roadmap for improvement. In the final portion of this project I would improve one of these libraries with bugfixes and more documentation. I would, finally, make one of these tools as easy and effective to use as I could.

Past experience

 * Please describe your experience with any other FOSS projects as a user and as a contributor:

I've been using free/open source software for nearly a decade now. All of my computers run Ubuntu, which makes it easy to install and use other open source programs. I use Audacity for audio processing, Inkscape for image creation and manipulation, VLC for media, Chromium as a web browser, and more. In my academic work, I used LaTeX and its open source editors for document management and creation, and I ported existing Matlab scripts to Python so that I could expand on them to model the dynamics of a system I was studying. Like many students, I used Wikipedia as a jumping-off point for further research, and eventually I started making my own contributions (mostly anonymously). I've used LiveJournal and Dreamwidth for online journaling platforms for years now. I've recently started contributing to Dreamwidth as a developer, and to do so I've been learning Perl, vi, and git.


 * Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them (include links):

I have recently started development work for the Dreamwidth journaling platform. I checked out my first bug recently, and will submit a patch soon. When I'm more familiar with the codebase I plan to contribute to Dreamwidth's ongoing and extensive project of converting sections of the codebase from a custom markup language to Template Toolkit.
 * Dreamwidth

Last May, a small group of us started the Seattle Attic, the first hacker/makerspace explicitly founded on feminist principles. This project is not explicitly F/OSS related (although it has already fostered in-person collaboration) but it is a space founded on open culture. I wrote our code of conduct, our bylaws, and our statement of values. All of these are essentially documentation for our in-person community. These involved persuasively describing expected behavior; taking what I needed from a variety of sources and creating a coherent and consistent whole; and incorporating community feedback to write a statement of values that we all agreed was accurate. I would draw on these skills when approaching standards, TODOs, and documentation.
 * Seattle Attic Community Workshop

I've described what I've done for my microtask at User:fhocutt. The results can be seen here: API:Client Code/Access Library Comparison.
 * MediaWiki


 * What project(s) are you interested in (these can be in the same or different organizations)?

I am most interested in the Evaluating MediaWiki web API client libraries project with the Wikimedia Foundation.