Development/Summer of Code/2017/BookBrainz
This page will discuss the current list of suggested ideas for students to develop proposals for for Google's Summer of Code. If you're a student, feel free to base your proposal on one of these ideas, or pick and entirely new idea that you think might be useful to us.
The first thing to do to get started with BookBrainz is to clone the bookbrainz-site GitHub repository, and follow the README.md file to get the site up and running. An internet connection will be required to get all features of the site working, since it communicates with the webservice at http://bookbrainz.mbsandbox.org/ws.
Once you've done this, and had a little look around the directory structure and explored some of the files, you can also set up a local copy of the BookBrainz webservice. You'll need to have PostgreSQL 9+ installed, and a recent version of Redis.
Clone the bookbrainz-schema GitHub repository and follow the instructions in README.rst to install the package and create a new BookBrainz database, with data from the dumps. Then, clone the bookbrainz-ws GitHub repository and follow the instructions in the README.md to get a running webservice.
Come and speak to us in the MetaBrainz IRC (freenode/#metabrainz) if you finish all of that, or get stuck at any point!
Proposed mentors: LordSputnik or Leftmost
Languages/skills: Browser JS, Node.js or Python, SQL/PostgreSQL
Forum for discussion
At last year's summit, the two BookBrainz lead developers, Leftmost and LordSputnik worked on a plan for importing third party data into BookBrainz. This plan has several stages. First, data sources need to be identified, including mass import sources with freely available data, such as libraries, and manual import sources, such as online book stores and other user-contributed databases. The next stage is to update the database to introduce an "Import" object, which can be used to distinguish mass imported data from (usually better quality) user contributions. Then, actual import bots for mass import and userscripts for manual import will need to be written. Finally, it would desirable (but not necessary if time is short) to introduce an interface to the BookBrainz site to allow users to review automatically imported data, and approve it.
Proposed Mentors: LordSputnik/Leftmost
Languages/skills: Node.js, ES6, Python, Redis, OAuth
Forum for discussion
We’re currently in the process of switching to using Node.js for all server side code. As part of this, our schema has been redesigned, and the current Python-based web API will no longer work.
We'd like a new and improved JSON web API to be designed and implemented. The design would clearly describe the result of each different query to the web API, and give examples of output. It would also describe the workings of any additional features to be implemented - for example, authentication, caching and rate limiting. Authentication in the web API is a particular challenge, since the current MB OAuth setup requires a GUI.
The web API should be written using the koa.js Node.js server framework, so that the resulting code is as clean and minimal as possible. Tests should be written in parallel with the implementation, adapting and expanding on the tests for the existing Python web API. The priority for this task is a solid plan and quality code, not a complete implementation (although that would be nice!)