Development/Summer of Code/2024/BookBrainz: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
mNo edit summary
(Update ideas page)
Line 17: Line 17:
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.
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.


=== [Name] ===
=== Use SOLR search server===
Proposed Mentors:
Proposed Mentors: monkey, lucifer


Languages/skills:
Languages/skills: Javascript (Typescript), SOLR


Estimated Project Length:
Estimated Project Length: 350 hours


Difficulty: [easy/medium]hard
Difficulty: hard


Expected outcomes:


Expected outcomes: A functional multi-entity search server with the same features as the existing search functionality
[description]


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 [https://github.com/metabrainz/bookbrainz-site/blob/master/src/common/helpers/search.js this file] handling most of the indexing and ElasticSearch-specific logic, and [https://github.com/metabrainz/bookbrainz-site/blob/master/src/server/routes/search.js 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


[https://calibre-ebook.com/about Calibre] is an established open source e-book library manager.

There was once a BookBrainz plugin for Calibre ([https://github.com/bookbrainz/CaliBBre 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

Revision as of 15:04, 5 February 2024

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