Development/Summer of Code/2024/BookBrainz: Difference between revisions
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. |
||
=== |
=== 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: |
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