Development/Summer of Code/2024/BookBrainz
BookBrainz is a database of book metadata. Try it out.
Getting Started
(see also: Getting started with GSoC)
The first thing to do to get started with BookBrainz is to get familiar with the website, and start editing. The help page and user guide are good starting points.
We also have a testing website at test.bookbrainz.org, with its own separate database. You can create an account there and use it to get familiar with the website and database.
The next step is to clone the bookbrainz-site GitHub repository, and follow our developer documentation to get the site up and running on your computer.
When you feel ready to try your hand on some bugs, we have “good first bug” category on our ticket tracker: https://tickets.metabrainz.org/issues/?filter=11910
Come and speak to us in the BookBrainz IRC (Libera.Chat/#bookbrainz) if you finish all of that, or get stuck!
Ideas
A list of suggestions to help students to develop proposals for Google's Summer of Code, for BookBrainz. You are not limited to these ideas - if you use BookBrainz and find an area that needs improvement, you can propose your own.
Use Solr search server
Proposed Mentors: monkey, lucifer
Languages/skills: Javascript (Typescript), SOLR
Estimated Project Length: 350 hours
Difficulty: hard
Expected outcomes: A functional multi-entity search server with the same features as the existing search functionality
Other MetaBrainz projects use Solr search server, while BookBrainz was created using ElasticSearch and has not evolved since.
This creates some extra overhead by running two separate search infrastructures and prevents us from optimizing resources.
For this project, you would entirely replace the search server infrastructure and adapt the existing search to work with Solr. This makes for a project relatively isolated from the rest of the website, the only surface of contact being this file handling most of the indexing and ElasticSearch-specific logic, and this file which adds the website routes that allows users and the website to interact with the search server.
One relevant point of detail is that we want to maintain multi-entity search (search for authors, works, edition, etc all in one go) compared to the MusicBrainz search for example which requires selecting an entity type before performing a search. This would need to be investigated.
New Calibre plugin
Proposed Mentors: monkey
Languages/skills: python
Estimated Project Length: 175/350 hours depending on proposed features
Difficulty: medium
Expected outcomes: An installable Calibre plugin with basic features, allowing searching for editions by name and author, and improving metadata of e-book files
Calibre is an established open source e-book library manager.
There was once a BookBrainz plugin for Calibre (CaliBBre) which has since been abandoned.
This project would see the revival of this plugin, rewritten from scratch considering the code is 8-9 years old.
See plugin development documentation here: https://manual.calibre-ebook.com/creating_plugins.html
Some experience using Calibre and e-books is required for this project.
Optional goals: sync collections between Calibre and BookBrainz
Set up BookBrainz for internationalization
Proposed Mentors: monkey
Languages/skills: Javascript/Typescript
Estimated Project Length: 175 hours
Difficulty: easy
Expected outcomes: Full translation project and workflow set up, with as much as possible of the website text captured for translation
BookBrainz is currently only in english language, which stops us from reaching a wider audience.
Thankfully, the MusicBrainz team has had a long experience with internationalization and recently moved to using Weblate.
You can see this translation server here: https://translations.metabrainz.org/ and more general documentation here: https://musicbrainz.org/doc/Internationalization
For this project, you would help set up a new translation project on the same Weblate server, and integrate Weblate into BookBrainz.
You will need to evaluate the best options for how to implement this in BookBrainz.
Promising frameworks with React support include (but not limited to) Fluent and i18next