Development/Summer of Code/2021/BookBrainz
This page will discuss the current list of suggested ideas for students to develop proposals for Google's Summer of Code for BookBrainz. 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.
(see also: Getting started with GSoC)
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 on your computer.
Come and speak to us in the BookBrainz IRC (freenode/#bookbrainz) if you finish all of that, or get stuck at any point!
Design and implement a unified creation form
Proposed Mentors: Monkey
Languages/skills: User interfaces, User Experience, React, Node.js
This project requires a solid knowledge of the BookBrainz schema and edit pages.
As each entity has a separate creation page, users are faced with a complex workflow for simple use cases (such as 'adding a book I have') with lots of repeatition (for example the title of a work repeated for an edition and an edition group, in a simple use case of a book), increasing chances of making errors.
Such a basic workflow should be a lot more straightforward (especially for inexperienced users). The goal of this project is to design and implement a single form that will improve the editing experience.
Some form of separation (like tabs) will be necessary to separate the different entities forms as steps. For each step, entities can be either searched for and selected, or created. While it would be best to show only the strict necessary fields for each step at first to limit clutter, users should have the full range of options of the current forms accessible easily. The form will automatically create the relevant relationships and links between the entities.
Keep in mind that "adding a book" is a simple case, and that we should be able to optionally enter more complicated cases (for example an anthology of short stories will have multiple Works, and the title of the Edition may be different from any of the Works it contains). Or an anthology of various Authors might be attributed on the cover to a single Author.
The first phase should be to make a mockup with a prototyping/wireframing tool (for example: Sketch, Figma, Pencil Project). We will work together iteratively during both the UX and implementation sections of the project.
Here are three example scenarios of different level users. The unified form should allow for each of them and provide the best user experience possible.
Scenario 1 User is new to BookBrainz and adding their first book. They don’t know what the different entities are, or what relationships are. The book to enter is a physical book the user has, a novel. The author’s name and title fo the book are on the cover.
Scenario 2 User has entered some books already for an author, The book is a collection of 20 short stories from that same author, written under a pen name. The pen name is on the cover, and the title of the book is different from the title of any of the short stories. The user has an ebook version and a paperback from another publisher borrowed from the library. The book is a translation, and the translator is well known and their name appears on the first page.
Scenario 3 User has been using BookBrainz for a long time and understands how all entities relate User has a series of magazines (35 issues) they want to add. The magazine has multiple editors
Documentation and style guides
Proposed Mentors: Monkey
Languages/skills: Knowledge of BookBrainz/MusicBrainz editing, writing documentation
The BookBrainz user documentation is currently only a stub with very little content. This project aims to adapt the existing MusicBrainz documentations to BookBrainz.
You will also take the MusicBrainz style guides and adapt them to the world of BookBrainz. This includes descriptions of each field for each entity type, relationships between them, identifiers, and every part of the interface that requires an explanation.
Import the (now defunct) Bookogs database
Proposed Mentors: Monkey
Languages/skills: SQL, Node.js, knowledge of BookBrainz schema
The sites Bookogs and Comicogs, sister projects of Discogs, have been closed in 2020; some editors elected BookBrainz to continue contributing open data.
The Bookogs database dumps were made publicly available for download in json format right after the closing of the project. In order to prevent the loss of Bookogs contributions we want to import all the entries from the database dumps, as discussed in this thread.
This will require processing very large json files in a robust manner, creating "adapters" to transform entities from one database schema to the other, allowing for repeating the process without duplicating entries. You will put together a detailed plan fo action ahead of time