Are you interested in a federated alternative to Goodreads that doesn't use Amazon?

because I'm making a federated alternative to Goodreads that doesn't use Amazon

extremely experimental and unstable demo available here:

bug reports welcomed on github

Show thread

I made a mailing list for anyone who wants periodic, infrequent updates on FediReads development progress

Show thread

@tripofmice Good start! I created an account, no problem. Found a book no problem. Can't mark them as "reading" or "read" yet, but still.
Keep everyone informed, it looks promising.

@gedvondur thanks! weird that marking books as read isn't working, I'll take a look

@tripofmice Just started working. Not sure what was going on there. Anyway, fantastic work.

@steko it's working for me, but glitch does spin down projects that haven't been used for a while which might explain it

@tripofmice oh no, i'm having some wider issue with loading anything from * including the main website. My ISP acting funny I guess?

@tripofmice I see that you are using Python... why not contribute to an exisiting Goodreads-like project and make it federated?

@askopenscience it may be harder than you think to completely avoid Amazon!

I was referring to the fact that Goodreads is owned by amazon and built on amazon data and my project is not.

@tripofmice True, but it's easy to get free TLS certificates from Let's Encrypt.

@askopenscience I don't run Glitch, you'd have to take it up with them. I certainly encourage everyone to use letsencrypt, and I imagine an actual deploy (as opposed to this which is just a demo) would use it

@tripofmice heya, your newsletter needs a captcha to subscribe to. I’m not even sure why robots would subscribe to get spam? Have you considered just a dedicated account on the fediverse we can follow for updates?

@tripofmice please please please save me and make this. I've gone through every possible alternative to Goodreads and it sucks. Please leverage the Library of Congress's amazing dataset too

@feld I'm trying! and right now I'm using the API for book data

@tripofmice « The most complex part of this is knowing what books are which and who authors are. Right now I'm only using as a single, canonical source of truth for books, works, and authors. But it may be that user should be able to import books that aren't in openlibrary, which, that's hard. So there's room to wonder if the openlibrary work key is indeed how a work should be identified. »

okay so like, bear with me here, but like,

have you heard of this thing called Linked Data

@kibimon if you have a suggestion on how to improve book coverage and canonicalization with linked data, feel free to make it in a github issue.

@tripofmice i'm just confused why you need centralization at all! why isnʼt the question of “what is a book” left up to the people reviewing them?

i donʼt know how to make a github issue for “indie authors who publish books on their websites, or fanfic authors who publish to AO3, should be reviewable” other than just, saying that, which isnʼt an actionable suggestion for improvement so much as a philosophical stance

(i think you might agree on that philosophical stance anyway, otherwise i wouldnʼt be talking to you. but this isnʼt a small, single­‑issue sort of problem.)

so like i could uh, maybe drop resources and things to think about in a meta­‑issue if you want, but i donʼt want to do that without first being familiar with your design principles, what assumptions you are making, and what you already know

and i donʼt have the time to try to decypher those things from reading through an unfinished demoʼs source code

a LITTLE more critical 

@tripofmice right now it sounds kinda like you are trying to create software which plays the role of a librarian (organizing and cataloguing information about books) without actually concerning yourself with… anything librarians do (notably, organizing and cataloguing information about books), which is… kinda exactly the same problem as goodreads depending on amazon, actually. this is your problem space, and you need to develop tools for dealing with it, and thatʼs not ONE github issue, but like, the entire project lol

no, you donʼt have to talk these things out with me. but i do hope youʼre considering them? (and seriously, just say “iʼm not interested in workshopping ideas with randos right now”, donʼt tell them to “make a GitHub issue”, lord)

a LITTLE more critical 

@kibimon I'm sorry for responding snappishly, I read your initial comment as pretty sarcastic/mocking and people making fun of me for not being smart enough github is like, pretty high on my list of bad feelings.

And I actually do think this would be useful to have in github because it's a valuable conversation and it would be easier to find and refer to there. But I'm happy to talk about them here too!

a LITTLE more critical 

@kibimon regarding your actual critique: I'm hoping to have this software NOT do the work of cataloguing and organizing information on books. What I'd like it to do is surface existing catalogs and allow people to share what they are reading with their friends.

as a service, goodreads honestly works very well for me, so I'm not taking a radically different approach at the moment, although I don't feel beholden to faithfully re-creating goodreads by any means

a LITTLE more critical 

@kibimon maybe that's confirming what you feel like is the core problem, though! I dunno.

@kibimon “indie authors who publish books on their websites, or fanfic authors who publish to AO3, should be reviewable” is a super good issue! and I agree that it should be doable. I just haven't figured out how to make it work yet.

The reason to use a separate centralized source (openlibrary) is so that separate instances can unify reviews of the same book. And also, more importantly, so I can outsource the work of finding all the books in the world

@tripofmice re: the tone of my comment

i definitely wasn't trying to mock! if the tone came off as weird, it was because a lot of people can get pretty dismissive pretty fast once you bring up things like Linked Data, and so it can be a hard conversation topic to broach lol. more on this if we actually start talking details, but suffice to say it was not me making fun of you so much as me trying to bring up something which i am tired of having tech types dismiss out of hand, without first knowing where you stand on it. if your stance is “i have no stance in particular on it”, that's good, but if you were going to flame me about it, i wanted to get that out of the way right off the bat.

@kibimon I'm not against linked data at all, I don't know that much about it.

this is long (i apologize for that) so Iʼm CWing it 

@tripofmice regarding the problem (if there is one):

let's agree that having instance moderators do all the work of cataloguing books is Too Much lol. so the problem here is definitely “how do we outsource the work”

where i think we disagree is (in a slight change of the question) “WHO do we outsource the work to” (you think: some centarlized library; i think: users, perhaps with one or more centralized libraries as a fallback to make things easier)

and my primary concern here is with “minority works”, by which i mean works which are not formally published or catalogued in any major system, which includes works of minority languages and cultures, works published by hand or through unconventional means, as well as works of independent publishers *in general*.

i think the decision of what constitutes a reviewable work should lie in the hands of the people doing the reviewing, and not be centrally determined. that's one of the big strengths that federation offers you.

a secondary concern is that the question of “how do you determine whether two things are the same book” is not a question which can be universally solved. i might be reviewing a particular edition of the lord of the rings, or all editions. my review might discuss the cover and hardbound binding of a particular edition, or it might not care about those things at all.

because of these concerns, i think giving users the option to make their OWN cataloguing decisions, rather than relying on the cataloguing decisions of any central authority, is a plus, and, again, one of the big strengths of a federated model is it lets you do that. every instance can have its own card catalogue—and this can be determined by *users*, not just admins, so the workload can be decentralized further on that level.

there are two Big Questions which follow from that:

1. if (bearing with me) each instance has its own, decentralized card catalogue, how do we federate that information? this is where “linked data” comes in; itʼs the gold standard for libraries making their datasets available, used by the Library of Congress, the British National Bibliography, WorldCat, and (not as extensively afaict) OpenLibrary, and it's also the foundation for ActivityPub. (every mastodon post is essentially a card catalogue entry for itself.) so there are details to discuss here, but i think it's mostly a solved problem.

2. the bigger question, which you seem to be primarily concerned with, is how do you tell when two books are the same book, for the purposes of searching and unifing reviews. my stance (which is why i say this is not one github issue but several) is that there *is no way* to do this which handles all cases. what one user, with one set of assumptions, might consider to be “the same book”, another user might consider differently. are ebooks and print editions the same? what about audiobooks?

so instead of relying on a central authority for making those decisions unambiguously for everyone, i think it would be better to build in some ambiguity, and tools to let users manage that. some things are easier: if a record says it is the same as, then you can pretty easily unify that with all other works which also say they are the same as that thing. if a work gives an ISBN, you can say that it is probably pretty similar to other works with that same ISBN. other decisions will be harder. there probably isn't any one catch-all solution here.

alternatively, you can just say “i donʼt care about minority/independent/fannish works” or “if you want your book to be reviewable, register it with this third party first”, but that is the sort of easy solution which i am hoping you do NOT pick, lol. thatʼs where i think you are right now, hence the critique

this is long (i apologize for that) so Iʼm CWing it 

@kibimon Happily, I think we completely agree on the right solution here. My thinking at this moment (and I appreciate your input to get there) is that instances should default to pulling data canonically from openlibrary and have the option to decouple works locally if they want their copy to differ from the openlibrary version, and add minority works locally that are matched with a best-effort attempt across servers

re: this is long (i apologize for that) so Iʼm CWing it 

@tripofmice so (keeping in mind openlibrary as a backup default regardless) the reason why i bring up Linked Data is that it allows you to avoid having to lock people into any one library system; they can pick the one which works best for them. (as a very brief explainer, Linked Data just means that when you fetch the URL for a resource, you get its data [as an RDF graph]. this is why when you paste the URL of a mastodon post into the search box, it can fetch the contents of the post.)

so perhaps i as a user search for “Harry Potter & the Philosopher's Stone” and get the openlibrary data, and that works for me. that's fine. but suppose I really prefer the library of congress record. i can paste in and use that instead. or, suppose my local library has a record for a particular special edition. I can paste in the URL for that record, and have that data be fetched.

the important bonus: suppose i want to use the decoupled version of a work present on another instance! i can paste in the URL of that instance's record, and bam! my action on my instance is linked to the record present on a different one. (this linking of data by URL across instances is how reblogs and replies work on mastodon.)

now, there is a lot which can be discussed here in terms of what that data contains. for example, the Library of Congress uses skos:exactMatch to say “this record (in our library) is the same as this other record (in a different library; for example, Wikidata)”, and skos:closeMatch to say “this is almost the same record, but there might be some cataloguing differences”. that can be used to help signify fuzzy and strong matches for instances to consider. SKOS here is the Simple Knowledge Organization System, which is a vocabulary used by libraries and the like which is essentially designed for categorizing and sorting works into genres—which is another thing we haven't even talked about yet!! how do you handle genres in a federated manner without mandating a fixed (western) set!!

these are all *INCREDIBLY* Library Sciences sorts of questions, which is why i said your problem space is kind of that of a library, whether you want it to be or not :P.

re: this is long (i apologize for that) so Iʼm CWing it 

@tripofmice (and what this gives us for minority works: anybody can publish their own records! (provided they have the ability to publish online at all). so authors can associate canonical metadata with their works without relying on any central authority, and you can pull in that metadata simply by fetching the URL of the work.)

re: this is long (i apologize for that) so Iʼm CWing it 

@kibimon I really appreciate the time and effort you're putting in to clarifying this, it sounds like a good suggestion on how to implement data source agnostic book lookup (and how to expose book data). I'm going to make a note about investigating how to use library linked data on the relevant github issue. I don't have the capacity to continue this conversation thread, but that I appreciate your viewpoint!

re: this is long (i apologize for that) so Iʼm CWing it 

@tripofmice feel free to @ me later if you ever want to talk about it more—i reached out because this is a design space which i am currently spending a lot of time in, so itʼs good to talk over with folks

i just don't have a ton of energy for GitHub lol, but i'm marrus-sh there and if you mention me on specific issues i may respond… at some point :P

(if you mention me here i will respond much faster)

sorry for the rocky start; too much time working in federated social media on my part lol

re: this is long (i apologize for that) so Iʼm CWing it 

@kibimon @tripofmice Lady KIBI, I enjoyed this thread and I'm glad you're raising these issues early. Are you a librarian?

re: this is long (i apologize for that) so Iʼm CWing it 

@ifixcoinops @tripofmice not technically! :P

but i have spent a lot of time researching and working with these issues from a technology standpoint

(i'm now really wishing i had gone into library sciences when i was in school, but i've mostly learned what i've learned from researching these technologies online. i once designed the core of a federation protocol to bring something like FictionPress or Archive of Our Own onto the fediverse, but it remains vaporware at this point.)

this is long (i apologize for that) so Iʼm CWing it 

@kibimon @tripofmice
There's a quick-and-dirty UI fix that solves like 75% of this problem -- which is that you keep your own DB, seed it (with periodic updates) from a resource like OpenLibrary, and let people add entries but do a search and prompt people about possible matches before they can add. (And maybe each node has their own DB of this type, based on 'books seen' from federated peers, with merging/aliasing when all content is the same)

@tripofmice Yes!!! I'm so interested! Goodreads isn't even well designed, and separating book editions is broken. I will use this!

@tripofmice this is an awesome concept. i look forward to seeing it grow

@tripofmice This is SO COOL. Precisely the type of thing I've been dreaming of.

Also hi! It's Madison, previously from IA. Wasn't expecting to see the streams cross on this account. Small...fediverse, I guess! Hope things are well.

@tripofmice this is excellent! I can't help thinking about ways it could interact with @inventaire especially wrt identifiers. Not my expertise area really, but I thought this may make for a useful suggestion?

@tripofmice I like this section of the doc

"Explain 'review'
There's no actual reason to be beholden to simple 5 star reviews with a text body. Are there other ways of thinking about a review that could be represented in a database?" this might not be an outside-the-box enough idea but this made me think of the Fate RPG "ladder", wherein you can forgo the entire idea of stars and numbers and store the short-version review as an enum of actual adjectives

...which gave me an even better idea. What if one did away with the idea of a rating ladder AND a text review entirely and replaced it with tags?

@InspectorCaracal @hope that's a cool idea! Would you mind making a github issue for it? I'm trying to have a more discoverable record of ideas and a place to think them through

Sign in to participate in the conversation
Friend Camp

Hometown is adapted from Mastodon, a decentralized social network with no ads, no corporate surveillance, and ethical design.