API:Client code/Evaluations/MediaWiki-Gateway

MediaWiki::Gateway is a fairly direct API wrapper.

Particularly notable and useful features of MediaWiki::Gateway include:

= In-depth evaluation =

Easy to install
There are instructions telling which commands to use to compile and test MediaWiki::Gateway locally, but no simple installation instructions. I installed version 0.6.0 with.
 * Installation instructions are correct and easy to find


 * Library is packaged for installation through appropriate package library (PyPI, CPAN, npm, Maven, rubygems, etc.)


 * Platinum standard: library is packaged for and made available through Linux distributions

Easy to understand
The  method would make the API easily available if it was public. There are a range of helper methods that individually wrap convenient functions. These only cover a portion of the API. Does not make any Wikibase functions available, even at the level of wrapping custom API calls. The methods provided can be used on the Wikidata API endpoint, however.
 * Well designed--makes all intended API calls available with the intended level of abstraction with no redundancies
 * Platinum standard: makes the Wikidata API available
 * Well documented:
 * Code is commented and readable
 * RDoc comments are present and useful. However,  is very long and should either be refactored to combine common features of individual methods or split into separate files that contain related methods.


 * Documentation is comprehensive, accurate, and easy to find
 * The RubyDoc is clearly linked from README.


 * Deprecated functions are clearly marked as such
 * n/a


 * Platinum standard: Documentation is understandable by a novice programmer
 * A novice would have difficulty getting started with the RubyDoc.


 * Code uses idioms appropriate to the language the library is written in

Easy to use

 * Has functioning, simple, and well-written code samples for common tasks
 * Demonstrates queries


 * Demonstrates edits
 * There are code samples to demonstrate the use of,  ,  , and.


 * Handles API complications or idiosyncrasies so the user doesn't have to:
 * Login/logout


 * Cookies


 * Tokens


 * Query continuations


 * Requests via https, including certificate validation


 * Courteous API usage is promoted through code samples and smart defaults
 * gzip compression is used by default


 * Examples show how to create and use a meaningful and unique user-agent header (as in https://meta.wikimedia.org/wiki/User-agent_policy)


 * Platinum standard: generates a unique user-agent string given name/email address/repository location


 * Efficient usage of API calls
 * The overall structure of MediaWiki::Gateway is an API wrapper with individually wrapped helper methods for common API calls. There is no good way to combine multiple helper methods and no easy way to use the API generator module to conserve API calls.

Marked as Ruby 1.8-1.9 compatible; works under 2.1.2 as well.
 * Can be used with the most recent stable version of the language it is written in (e.g. Python 3 compatible)

Easy to debug

 * Contains unit tests for the longest and most frequently modified functions in the library


 * Platinum standard: Unit tests for many code paths exist and are maintained

n/a About half the MediaWiki::Gateway methods link to API subpages.
 * Terrible hacks/instances of extreme cleverness are clearly marked as such in comments
 * Documentation links to the relevant section/subpage of the API documentation

Easy to improve
MediaWiki::Gateway is still maintained but is not in active development, so new features are unlikely to be added on request. However, pull requests and bug reports are welcome.
 * Library maintainers are responsive and courteous, and foster a thoughtful and inclusive community of developers and users


 * Platinum standard: Project sets clear expectations for conduct for spaces where project-related interactions occur (mailing list, IRC, repository, issue tracker). It should:
 * State desired attitudes and behaviors
 * Provide examples of unwelcome and harassing behavior
 * Specify how these expectations will be enforced

Usually, within a few days. Usually, within a few days. The library is not under active development, so updates are sporadic. However, there is a quick response when pull requests are submitted to fix breaking changes: https://github.com/jpatokal/mediawiki-gateway/pull/58.
 * Pull requests are either accepted or rejected with reason within 3 weeks (Platinum standard: 3 business days)
 * Issues/bugs are responded to in some manner within 3 weeks (Platinum standard: 3 business days) (but not necessarily fixed)
 * The library is updated and a new version is released within 3 weeks (Platinum standard: 3 business days) when breaking changes are made to the API
 * Platinum standard: library maintainers contact MediaWiki API maintainers with feedback on the API's design and function

MIT license.
 * Library specifies the license it is released under

= Suggested TODOs =
 * Code-related


 * Process-related