openlibrary icon indicating copy to clipboard operation
openlibrary copied to clipboard

Book Battles

Open mekarpeles opened this issue 11 months ago • 9 comments

See: https://docs.google.com/document/d/1Ddeg-fWWZ0iCFzVtZR0yGY_vCPttIUrd4tCIWwvYj6g/edit#heading=h.hwsgbba3g9bn

Describe the problem that you'd like solved

OpenLibrary.org is a catalog of millions of books, which can make finding the best books challenging. A traditional approach is to give books star ratings or reviews, but (a) this creates floating point in space and (b) many books may have 5 star ratings so this gives readers a limited understanding of whether one book is better than another. Book Battles is a way for readers to collaboratively surface the best books by voting that one book may be better than another.

How does it work?

A reader adds books that they’ve read to the “Already Read” shelf of their Reading Log. The reader then selects two books from their Already Read shelf and creates a Book Battle. The reader chooses one of these two books to be the winner and optionally enters a short review explaining why.

Proposal & Constraints

Additional context

Stakeholders

mekarpeles avatar Mar 05 '24 22:03 mekarpeles

Hey @mekarpeles! I am very interested to work on this project and would definitely love to give it a try. How should I continue and go about it :)

QuantuM410 avatar Mar 06 '24 01:03 QuantuM410

This looks a great idea!! It is basically like product comparing feature of amazon image

Something similar to above right? I would be happy to contribute such a nice feature, I can help up with the logical design part, @mekarpeles amazing idea!!

noobCoderVP avatar Mar 06 '24 05:03 noobCoderVP

I think the first step is for folks to propose ideas / designs / implementations.

A drawing might be useful about:

  1. what such a feature might look like on Open Library and
  2. what does the flow look like for using this feature? (e.g. figma, screenshots, or pencil/paper)

Open Questions:

  • Do readers submit requests for certain battles? Where / how?
  • Where do readers see which battles they can participate in? Their "Already Read" Reading Log? Their My Books dashboard? Is there a Books Battle tab on their My Books menu w/ a number of open battles?
  • How does a reader discover they are eligible to participate in a book battle?
  • Where does a reader go to see active or pending book battles?

The idea is to make this feature as simple as possible to still be useful. So it would be useful to separate out what is essential versus what would be fun into 2 different buckets!

mekarpeles avatar Mar 06 '24 16:03 mekarpeles

Oh my bad, it is not like compare feature. I read your docs carefully now. We would need to create different clusters of book and battles between two books of the same cluster will only be allowed, if we already have the classification of books by their genre then we can use it. giving readers suggestions of filling battle based on the books they have read is also a requirement, we can show them as the pending battles but there can be a problem once the user has read more than a limit amount of books, after that user will have too many battles to fill in but I have an alternative idea where we can do it more efficiently

Instead of having one to one battle let us give user the opportunity to rank the book he has just read w.r.t other books of the same genre he read in past, let me explain with a diagram

image

suppose user have already read orange, banana and apple books, now he reads a book called mango and ranks it 3 rd, now using the rank what we can do is

  1. add a battle orange vs mango, make mango loose in the battle
  2. add two battles mango vs banana and mango vs apple, make mango win in the battle.

Using this strategy, we will have a better UI, UX experience for the readers and save their time. What do you think about this @mekarpeles?

noobCoderVP avatar Mar 06 '24 18:03 noobCoderVP

Hey @mekarpeles, so which implementation do you think will work the best?

noobCoderVP avatar Mar 08 '24 15:03 noobCoderVP

I would like to work on this issue under GSOC 2024

noobCoderVP avatar May 11 '24 04:05 noobCoderVP

Hi @mekarpeles

I hope you're well. I'm Prasad Bhujbal, and I'm excited about the "Book Battles" project on OpenLibrary.org. I believe this can significantly improve book discovery by allowing users to compare books directly.

I have experience in full stack web development, Application development, UI/UX design and would love to contribute. Specifically, I can help with:

  • Designing user interfaces for submitting book battles and viewing leaderboards.
  • Implementing discovery features for eligible book battles.
  • Enhancing the backend for managing submissions and voting.

Looking forward to contributing!

Best,
Prasad Bhujbal https://github.com/prasad14070

prasad14070 avatar Jun 02 '24 13:06 prasad14070

Hi @prasad14070 feel free to join one of our upcoming community calls on Tuesday @ 9am PT https://zoom.us/j/369477551 if you'd like to learn more or discuss the feature. @noobCoderVP is currently leading development on this project and I'm sure there are opportunities for us to leverage your contributions. Thank you :)

mekarpeles avatar Jun 10 '24 18:06 mekarpeles

Possible schema:

superlatives
------------
superlative_id (Primary Key)
topic_id (Foreign Key to Topics)
submitter_id (Foreign Key to Patrons)
created_at
updated_at

superlative_criteria
--------------------
superlative_criteria_id (Primary Key)
superlative_id (Foreign Key to Superlatives)
criteria_id (Foreign Key to Criteria)

nominations
-----------
nomination_id (Primary Key)
superlative_id (Foreign Key to Superlatives)
submitter_id (Foreign Key)
winner_book_id
text_review
contestant_id (Nullable Foreign Key to Nominations, default NULL)
created_at
updated_at

This would allow us to factor out all our criteria for best book or a battle into a single data structure called superlatives. It would also allow us to treat bestbook and battles as the same because a nomination either has a contestant or it doesn't... If it doesn't then it's a best book. This also solves the problem that nominations always involve one book, but a patron can submit multiple nominations for a book so long as its (nomination_id, superlative_id, submitter_id, winner, contestant_id) is unique.

mekarpeles avatar Jun 18 '24 14:06 mekarpeles