Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Meet MW API client code gold standard #13

Open
29 of 38 tasks
siddharthvp opened this issue Jul 14, 2020 · 0 comments
Open
29 of 38 tasks

Meet MW API client code gold standard #13

siddharthvp opened this issue Jul 14, 2020 · 0 comments

Comments

@siddharthvp
Copy link
Owner

siddharthvp commented Jul 14, 2020

Copying off from the list at https://www.mediawiki.org/wiki/API:Client_code/Gold_standard

Easy to install

  • 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

  • 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
  • Documentation is comprehensive, accurate, and easy to find
  • Deprecated functions are clearly marked as such
  • Platinum standard: Documentation is understandable by a novice programmer
  • 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

Handles API complications or idiosyncrasies so the user doesn't have to:

  • Login/logout
  • Cookies
  • Tokens
  • Query continuations using the new "continue" and not "query-continue"
  • (?) 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 user-agent header (as in 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
  • 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
  • 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

Many of these aren't really applicable -- I have marked such items as checked because there is nothing to be done about them

  • 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[1][2] 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
  • 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
  • Library specifies the license it is released under
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant