Helping Patrons Discover Books

A forward by Mek, Open Library’s program lead:
This year, the Open Library team and I were fortunate to collaborate with Chisom, as part of Google Summer of Code, to make millions of books more discoverable to readers. Chisom entered this year’s Google Summer of Code program a motivated and capable software developer and continued to impress us with her focus, proactivity, and problem solving. It was a joy working with Chisom and rewarding to witness her make consistent forward progress, rise to growth opportunities, and — as a result of hard work and initiative — achieve an excellent outcome that I believe will benefit millions of Open Library patrons. I encourage you explore how she strategically approached this challenge and created a general purpose tool and patterns that will allow others to continue her work into the future.

My name is Chisom Nnamani, and this summer I had the opportunity to join the Internet Archive’s Open Library team as a Google Summer of Code (GSoC) contributor. This was my first experience contributing to a large open-source project, and I could not have asked for a better place to start. As someone who cares deeply about making books accessible to everyone, I was drawn to Open Library’s mission of providing a free webpage where anyone, anywhere can discover and access published works. You can view my initial proposal here.

My GSoC project focused on a problem that sounds simple at first: helping readers find books by genre.

Millions of books available, the challenge is discovery

Over the years, Open Library has accumulated millions of free-form book labels that have never gone through a standardization process. As a result, a book about science fiction might be labeled “science fiction,” “science-fiction,” “sci-fi,” “scifi,” or dozens of other variations. Without a way to recognize and merge these synonyms, books become scattered across hundreds of different labels like a needle in a hundred haystacks.

Search termResults returnedBooks missed vs. best
“Science Fiction”17,900 hits— (baseline)
“science-fiction”16,497 hits~1,421 books
“sci-Fi”2,721 hits~15,179 books

The result shows how a reader can miss hundreds or even thousands of books simply by using a different term to describe the same genre. The books are there. The problem is that the catalogue does not always connect them.

Messy labeling means messy recommendations

The problem goes deeper than the search box. For years, Open Library has used a subjects field to describe what a book is about. These subjects are stored as plain text strings in a flat list, with no consistent rules about how they should be written or organized.

As a result, different kinds of information can end up sitting side by side. A book can have its genre, characters, places, themes, and other descriptions all represented as separate subject strings. There is no structure telling the catalogue how these descriptions relate to one another.

The screenshots below show what this looks like on real book pages. The Hobbit has “Fantasy,” “Fantasy fiction,” and “Juvenile fantasy fiction” as separate tags on the same page:

Figure 1: The Hobbit’s subjects include multiple variants of “fantasy” with no major classification.

The screenshot below shows another example: And Then Were None has over 30 subject tags with no structure distinguishing genre, subgenre, language, audience, character, and other types of information. You can also see multiple variations of “mystery,” including “Mystery fiction,” “Mystery & Detective,” and “Fiction, mystery & detective, general.”

Figure 2: And Then Were None — 30+ subjects with no type distinction between genre, subgenre, language, audience, character.

Together, these examples revealed the larger problem I wanted to address. Open Library had a huge amount of useful information about its books, but it lacked a consistent structure for connecting related genres and descriptions.

That became the starting point for my GSoC project: building a more structured way for Open Library to describe books by genre and subgenre, and eventually using that structure to make browsing and discovery better for readers.

The recipe for organizing 860K books

When I began GSoC, the Open Library team had already identified several high-impact label categories (tag types) that could benefit from this kind of cleanup, including genres and subgenres, audiences, content warnings, and formats. What we didn’t yet have were mappings from our existing messy labels to these new, cleaner categories, or a common software framework that contributors could use to define these mappings and perform the cleanup.

I began by working with genres and subgenres. The first step was to define the categories we wanted to recognize. We then needed to connect the many ways these concepts already appeared in Open Library’s catalogue to a consistent set of canonical labels – the standardized labels we want those variations to map to. For example, different subject descriptions might refer to the same genre using slightly different wording or formatting.

From there, I worked on expanding and refining the mappings so that more of the catalogue’s existing subject descriptions could be connected to the appropriate genres and subgenres.

But the goal was not to build something that only worked for genres. As the project evolved, we built a common core that could support different types of labels through the same process: define a vocabulary, create mappings, analyze existing data, and eventually migrate the cleaned information back into Open Library.

This separation between the tag type and the shared tooling became an important part of the project. Genres and subgenres were the first categories I worked on, but the same framework can be used for other categories as contributors begin cleaning and structuring them.

Here’s what that mapping looks like for a few genres:

Existing subject strings on Open LibraryCanonical genre
“Fantasy”, “fantasy fiction”, “Juvenile fantasy fiction”Fantasy
“Mystery fiction,” “Mystery & Detective,” “Fiction, mystery & detective, general”Mystery
“Science fiction,” “science-fiction,” “sci-fi,” “Science Fiction Literature”Science Fiction

Several different subject strings can now point to the same canonical genre.

Once these mappings were in place, the next step was to give each canonical label a structured representation in Open Library. In the Tags project, a Tag is an Open Library data object representing a defined label, such as a genre or subgenre. This gives the canonical concept its own consistent identity instead of treating every variation of a subject string as a separate concept.

I then created the canonical Tags for the genres and subgenres we had defined.

Fantasy, now represented as a genre Tag in Open Library, rather a plaintext subject string.

Steampunk, a subgenre represented as a Tag.

With the genre and subgenre labels defined and represented as Tags in Open Library, the next challenge was connecting them to the millions of existing works in the catalogue.

Open Library already had millions of works with years of existing metadata. I could not simply assign these new Tags manually to every work. The next challenge was figuring out how to connect the information that was already there to this new structure, and then safely apply those connections across the catalogue.

So I built migration tooling that could analyze existing subjects, identify matches using the genre and subgenre mappings, and connect those matches to the appropriate Tag keys on each work.

Before thinking about millions of records, I first needed to understand what the migration would actually find. I ran the matching process against Open Library’s April data dump, a monthly snapshot of the catalogue’s data, and found 869,461 works with genre matches and 51,526 works with subgenre matches.

Those numbers changed the way I thought about the project. This was no longer just about creating a better vocabulary. It was about applying that vocabulary across millions of works while making sure the information already there was not accidentally changed or lost.

I worked on the migration scripts, the shared utilities behind them, and the changes to Open Library’s work schema needed to store the new genre information. I also validated the migration on a smaller pilot before moving toward the production run.

Safely running a large-scale migration

One of my biggest lessons from this project was that writing the code is only part of the job. When you are changing a large, live system, you have to think about what happens when the code actually runs.

  • What happens if something fails halfway through?
  • How do you know the migration did what you expected?
  • How do you avoid changing records that should not be changed?
  • How do you test an operation that will eventually touch hundreds of thousands of works?

I used dry runs and small pilots before larger operations. I added ways to track progress and designed the migration so that it could be run in controlled batches. Along the way, I also encountered some of the less glamorous parts of working with production systems, from authentication and request limits to unexpected differences in the data itself.

One of my favourite lessons from the project is that production engineering requires trust.

Before you can make a change at scale, you have to earn the right to trust your own tools.

Translating better data into better discovery

In our GSoC project, fixing book labels was always a means to an end: improving how readers discover books. Many patrons come to the Open Library looking for a specific book. But not every reader arrives knowing exactly what they want to read next. With consistent genre data in place, we could begin to ask a different question:

What if readers could browse and discover books by genre instead of having to already have a book in mind?

Search and filtering can help when you already know what you are looking for. But discovery is different. Sometimes you just want to browse.

That question became the idea behind Genre Explorer.

Taking inspiration from Drini Cami’s Library Explorer – a system that uses Dewy Decimal classification numbers to digitally emulate the organized bookshelves of a physical library – we imagined a more visual way for readers to explore the Open Library’s book catalogue, using the same genre and subgenre structure I was building for the tagging project. Instead of presenting genres as another long list of links, we imagined something closer to the experience of walking into a bookstore.

Genres could act as bookcases.
Subgenres could become shelves.

A reader could choose a genre, step inside it, explore its subgenres, and discover books along the way. The idea was to make genre browsing feel less like searching through metadata and more like browsing a library. I developed the initial concept and built a clickable prototype to explore how this experience could work.

From there, Mek and I continued developing the idea together. We reviewed the experience, explored how it could fit with Open Library’s existing components, and refined the concept into an interactive version now available on the testing site.The interactive version follows the same idea: genres act as bookcases, and entering a genre reveals its subgenres as shelves.

What I find most exciting about Genre Explorer is that it grew out of the original tagging problem, but takes the idea one step further. The canonical Tags give Open Library a consistent way to describe books. That structure can support better search and filtering, while Genre Explorer explores what it could look like when the same information is used to help readers browse.

It was an unexpected direction for my GSoC project. I came in focused on the data and infrastructure behind genre information. Along the way, I started thinking beyond how books are described to how that work could become something a reader actually experiences.

Takeaways

When I started this project, I expected to learn more about software engineering. I did, but not always in the ways I expected.

One of my biggest lessons was learning to slow down and understand a system before trying to change it. I learned to look at messy data and find the patterns hidden inside it, to test my assumptions against real examples, and to treat small experiments as part of the engineering process rather than as steps before the “real” work begins.

I also learned to think beyond the implementation. Throughout the project, I kept coming back to a simple question: Does this actually make the experience better for the person using it? That question shaped how I thought about the tagging system, and eventually led to the idea of Genre Explorer. It reminded me that good engineering is not only about building something that works. It’s also about understanding if and why something should exist in the first place.

Working with Open Library also gave me my first real experience contributing to a large open-source project. I had to learn how to navigate an unfamiliar codebase, communicate ideas clearly, ask questions when I was unsure, respond to feedback, and make decisions when there was no obvious answer. I was not doing this work in isolation. My mentor, Mek, pushed me to think beyond the code and focus on the larger problem we were trying to solve. Open Library contributors and maintainers, including Jim, Drini, Liz, and Katrina helped me understand different parts of the systems I was working with. Every review, discussion, and debugging session became part of the learning process.

Looking back, I think that may be one of the most valuable things I am taking away from GSoC: learning how to become useful in a system that existed long before I arrived.

Next steps

By the end of GSoC, we were able to add genre tags to more than 50,000 works. We also built common infrastructure to standardize the tag migration process and enable others to contribute to the greater cleanup process.

The next stage is to extend this process to add subgenre tags to works and to index these genre and subgenre tags in Open Library’s search engine, so readers can find and explore books by genre.

Genres and subgenres are only the beginning. Open Library has other high-impact label categories that will benefit from the same approach, including audiences, moods, content warnings, and content formats. Because we built this project to have a shared core for defining vocabularies, creating mappings, analyzing existing data, and migrating cleaned information, future contributors can use the same tooling to work on these categories rather than building a new system from scratch.

This shared core is the legacy I hope will last beyond this GSoC project: not just cleaner genre and subgenre data, but a reusable foundation that makes it easier for Open Library and its contributors to continue turning messy catalogue labels into structured information that can improve how readers discover books.

Google Summer of Code Contributors Improve Open Library’s Patron Experience

This year, as part of Google Summer of Code (GSoC), the Internet Archive is collaborating with two outstanding contributors to make it easier for patrons to find relevant books on Open Library.

Tanishq Sangwan, a 19-year-old from Gurugram, India, and Chisom Nnamani of Lagos, Nigeria, are two of 1,141 software developers from around the world who have been selected through GSoC to hone their engineering capabilities with open-source organizations.

“The Internet Archive’s focus for 2026 is: tools for participation. Participation must be earned by building an experience patrons want to return to.” said Mek, program lead for Open Library. “The work that both Chisom and Tanishq are doing is central to creating a more reliable Open Library experience, where readers can repeatedly discover, access, and enjoy books.”

Sangwan, who just completed his second year of college studying artificial intelligence, is focusing on the journey of patrons who join Open Library and use it once, but do not return. His objective is to understand where patrons encounter barriers and identify opportunities to create a more useful, lasting experience.

Sangwan, who just completed his second year of college studying artificial intelligence, is focusing on the journey of patrons who join Open Library and use it once, but do not return. His objective is to understand where patrons encounter barriers and identify opportunities to create a more useful, lasting experience.

Sangwan comes into the project with two years of experience from ZNotes, an educational organization that provides free notes and videos from students around the world.

“I built this passion and got this amazing feeling when my work was making an impact on people and they were receiving some value,” he said. “Now, Google Summer of Code is a wonderful opportunity to connect with open-source organizations and Open Library where its work directly impacts people’s lives.”

“This year’s collaboration is important because lots of patrons discover Open Library, but too often don’t always find the books they want,” Mek said.

The work begins when a patron lands on a book that is unavailable for reading. Soon, instead of reaching a dead end, patrons will be presented with nearby books on the same shelf that are available now.

When patrons find a relevant, available book, a simpler registration process will help them get started with fewer steps and return to the book they found. Furthermore, Sangwan is helping patrons connect with new book recommendations on an ongoing basis by introducing an activity feed to the account page.

“I like to hear about the patron psychology, how they’re interacting with the platform, and what’s going in their mind from the first moment to the very last,” he said. “We’ll be researching and conducting interviews with lost patrons so we can connect this bridge between patrons and the millions of books in our catalog.”

Chisom Nnamani
Chisom Nnamani

Nnamani, who already has certifications in Data Analytics and Data Engineering, just completed her sophomore year pursuing a second degree in Computer Science. At Open Library, Nnamani is leading a major cleanup effort to add structured tag data to books so they can be searched by genre and subgenre. Her work is paving the way for the addition of a wide variety of new searchable tags, including: moods, fiction and non-fiction, content warnings, and literary formats, such as memoirs, biographies, and more. By cleaning up messy data and enabling better genre and subject browsing, Chisom is helping remove barriers preventing patrons from discovering books they love.

“Today, many of our subject pages feel computer generated and can’t compare to the beautiful, curated experiences you find at small book stores,” says Mek. “The work Chisom is leading to map the messy subject tags we have to clear genres and subgenres will help us offer patrons a more useful and satisfying browsing experience.”

“I really care about books being accessible to people,” Nnamani said. “In Nigeria, we have limited access to physical libraries, so Open Library is something that matters. It gives everyone the opportunity to come and read any kind of book and gain insights.”

“This project is inspiring to me,” Nnamani said. “I like to work on projects where I can connect the data and infrastructure in ways that contribute to the organization’s goals. I enjoy helping to solve complex problems at the intersection of systems and data.” 

Open Library Fellows work remotely, but meet regularly online with Internet Archive staff and mentors. At the end of the summer, each contributor will publish a blog post explaining their technical journey and experience gained.

Since 2005, Google’s Summer of Code has supported more than 23,000 students from 123 countries with stipends to receive mentorship and contribute 48 million lines of code to over 1,000 open source organizations worldwide.

Security Incident Disclosure

Early, around 7:30am Pacific, on Tuesday, April 28th, high database load was detected on OpenLibrary.org. Investigation revealed a set of at least 38,703 residential IP addresses performing a coordinated sqlinjection attack on a vulnerable openlibrary.org endpoint, resulting in exfiltration of emails and encrypted passwords of 175,080 legacy accounts, registered before March, 2011. This table has not been used for authentication since 2016, however we advise affected accounts to change their passwords on any relevant platforms.

The attack was identified and mitigated within a four hour window. Impact was limited due to the obscurity of the attack which could only process a single account query per malicious request. This is an old, no-longer-in-use table that was formerly used for Open Library sign-in prior to switching to use Archive.org login credentials in 2016.

Details

Prior to 2016, Open Library maintained its own login system distinct from Archive.org, which used a legacy account database table. In 2016, both for improved security and patron convenience, the Open Library website switched to a unified model where authentication is performed using archive.org credentials and not legacy Open Library credentials. Since this date no new Open Library patron account passwords have been stored within Open Library’s legacy account database.

Today’s incident only affects a subset of legacy accounts whose credentials are no longer in active use. Furthermore, no plaintext passwords were compromised – all passwords in this table were both salted and encrypted.

Remediation & Impact

Upon discovery, the identified exploited path was blocked at the nginx level and a security fix was then patch deployed to our servers. All accounts in the no-longer-in-use legacy `account` table have had their encrypted password fields cleared. We are releasing a tool to check whether your email was affected by the breach.

Check If Your Account is Affected

If your email is on this list, out of an abundance of concern, we recommend changing your password for any service that matches the password used when registering your OpenLibrary account.

Open Library’s Security Policy

The Open Library team routinely monitors security alerts, performs sqlinjection audits, and responds seriously to security reports we receive. We believe strongly in a full transparency policy when incidents occur, both so our patrons have the best information to make decisions, are able to understand our responses, and so our developer community can help report and address issues.

Followup

Followup details and actions will be updated via our post-mortem. Please feel warmly invited to direct questions and concerns to [email protected] and report security vulnerabilities to [email protected] and [email protected].

Apologies & Gratitude

Thank you for your patience and understanding and our sincere apologies for the poor behavior of these malicious actors and the impact this has on our community. As AI tooling makes it easier for malicious actors to attack websites like ours, our team will continue to proactively take steps to put our patrons’ privacy and security first.

The Open Library Team

Mek, Drini, Jim, Lisa

Improving Search by 10%

Today’s challenge is to find “The Secret of Secrets“, by Dan Brown using Open Library search. It’s not impossible, but it is not easy… And it’s not just because the Я is backwards on the cover.

If you search for “the secret of secrets“, you won’t find the right match on the first two pages of results.

If you search for “the secret of secrets dan brown“, the result is still 7th in the list.

In this example, our current search algorithm is biasing too heavily on returning book results that have lots of editions to vouch for them, as well as other boosting factors (like star ratings) that don’t always produce desired result.

What search algorithm would perform better? And how do know whether one approach is better than the other?

These are key questions Drini Cami — core maintainer of Open Library search — has been investigating this month.

Is Search Improving?

In order to know whether we’re making changes that improve the quality of our search results, we can’t just change the algorithm, type in a search, and see if the result is better in that one case. We need to apply some consistent framework across a collection of challenging queries and measure how the system — on a whole — performed before versus after.

In Open Library’s case, Drini maintains a Search Evaluation Spreadsheet that measures 100 common searches—everything from “Harry Potter” and “Little Prince” to “The Secret Garden” and “Narnia”. These searches come from our server logs (i.e. popular searches from patrons). It also contains challenging cases that we’ve seen underperform in the past.

For each search query we’ve collected, we define what we expect the “correct” search result to be and then check how often the correct result appears in the top 3 search results (across the search algorithms we’re considering).

Multiplicative Instead of Additive

For the technical crowd, this change (PR #12357) adjusts Work Search’s Solr eDisMax tuning to use multiplicative boosting (via boost) instead of additive boosting (via bf) to reduce over-weighting of popularity signals relative to textual relevance:

  • Replaces bf-based additive boosts with an eDismax boost function expression.
  • Expands/adjusts qf and phrase-boost parameters (pfpf2) to change match weighting and proximity scoring.

Overall, the change has improved the relevance of our test results by roughly 10%:

Early Anecdotes:

In our testing playground

  • “The secret of secrets” now appears as the 3rd result.
  • “My Life”, by Bill Clinton went from 101th to 19th
  • “laws field guide” went from 14th to 1st

Expect these improvements to be live on the main site early next week. Happy reading!

Future Opportunities: Exact Match versus Browser

Since releasing this blog post, we received a great question internally by Sawood Alam, from the Wayback Machine team who asks:

Have you measured how would this change affects the discovery use-case where a patron is not after one specific document in mind, but wants to find out what options are out there (as opposed to the lookup use-case where they already know what they are looking for)?

And this is indeed something the Open Library team has been considering. Sawood is pointing out that there are [at least] two modes of searching:

  1. by Exact match
  2. Browsing

One may browse in a variety of different ways, but for simplicity I’d like to refer to this as “searching by proxy”. That is to say, instead of searching for an exact book by title, a patron may endeavor to discover a suitable book by any number or combination of proximal qualities like author, topic, format, genre. An example is a search for nonfiction books about UFOs that are advertised as textbooks and published before 1950.

For browsing queries of this flavor, it’s difficult to know (in advance) what book(s) should appear in the top-three position in search results as the answer will often be subjective to the searcher.

As a result, an additional approach will need to be instrumented and added to our existing process that (a) accurately identifies when a search term is for a proximal quality rather than an exact (e.g. title) match and, (b) introduces secondary evaluation metric, such as:

  • Success Rate: How often any result is clicked — perhaps called Query Success Rate (QSR)
  • Relevance: When a result is clicked… how often is this click for a record in a top 3 position — something like Mean Reciprocal Rank (MRR)

Further research is required to understand how these metrics may be combined in a recipe that results in the best experience for patrons. For instance, [when] is it more important to improve relevance versus the general distribution of clicks? Maybe “better” means increasing the ratio of searches-to-clicks by 20% rather than increasing the number of clicks in the top-3 position by 25% (if search-to-clicks were to drop by 5%).

Suffice to say, as policy changes make it more challenging for some readers to find the exact book(s) they are looking for, it becomes increasingly meaningful to be able to suggest suitable alternatives — and be able to measure how effective we are at making relevant recommendations. Measuring browse cases is something we expect to work towards in the coming months.

Canada Reads Awards: My Journey Championing Canadian Content on Open Library 

By Catherine Gosztonyi

Hi! I’m Catherine, a curious and avid librarygoer, currently pursuing a career transition into the Library and Information Sciences field.

I joined the Open Library Librarian’s Team as a Librarian-In-Training during the summer of 2025 to learn about the world of online libraries, contribute to an open source project, and be part of a library community. My initial objective was to learn how to work with book metadata in MARC format but what I ended up learning, and what I’m still learning, has far surpassed my expectations. Before I took on this role, I didn’t know how to code in HTML or Markup (or any code, really). I had never contributed to an open-source project or submitted a GitHub ticket – and now I’ve done all three! I’ve also created a curated collection, tagged books by subject to further categorize them within the Open Library catalog, and learned how to create book carousels using the subject tags to visually display a collection of books on a page.

As I write about and reflect on my Open Library journey, I’m so proud of what I’ve learned and accomplished, and of the wonderful time I’m having engaging with the Open Library community.

Getting Started & Deciding How to Contribute

I discovered Open Library through the Internet Archive while researching volunteer opportunities within libraries. Open Library‘s mission resonated with me, and I felt called to join the community to help make knowledge free and accessible. I submitted my application and not long after, I was invited to the community Slack.

When I joined the Open Library Slack channel as a Librarian-In-Training, I was ready and excited to get started but realized I had no idea where or how to begin. I gained my bearings by reading through the instructional documentation and the Librarians In Training (LIT) Guide, letting the information guide me as I explored and familiarized myself with the website’s layout, behaviours, content, and pages. My interest piqued when I read the How to Create Curated Collections guide and saw how well the Star Wars and Star Trek collections had been curated. Inspired, I decided to contribute a curated collection of my own, though I was unsure what my collection would showcase. It was while going through the list of all the curated collections that I noticed a distinct lack of Canadian literary awards representation. As a Canadian, this was something I needed to remedy! I decided to highlight Canadian content on Open Library by creating a collection for the CBC’s Canada Reads Awards. This is a literary award I am very familiar with, having read many of the championed books, and one that I continuously use to inspire my own reading list.

About the CBC’s Canada Reads Awards

Canada Reads is a radio program broadcast yearly on CBC Radio One in which five celebrity judges champion and debate a book in the hope of it winning and being crowned as Canadian’s must-read book of the year. The radio show takes place over five days in five hour-long segments with one book voted off each day. Canada Reads was launched in 2002 and is still going strong. It also has a French equivalent on Radio Canada called Le combat national des livres.

My familiarity with the books and subject matter helped me understand the scope of the project and visualize the ways in which I wanted to present the collection. My vision for this curated collection was to have displayed, on one page and by each award year, the book winners and contenders along with the people who championed them. It was quite a learning process to set up this collection, and I’m so happy with the way it turned out.

Establishing the Collection

Before I even created a curated collection page for the awards, I compiled a list of all the Canada Reads books in my notes, separated by year from 2002 – 2025, noting the winners and contenders and who championed the books. Thankfully, this was an easy step as all the books are very well documented on the CBC’s website. I brought this information into Open Library by creating personal lists in my Open Library account for each award year and manually searching for and adding the books to their respective lists. With over 100 books to add, this was a tedious, time-consuming, and unsustainable process. I knew there had to be a more efficient way to complete this task, but I didn’t know how. I chipped away at it for a while and learned as I went, also taking the time to update the book metadata to ensure the accuracy of records, editions and general book information. However, I was getting overwhelmed by the process, my questions were adding up, and I couldn’t seem to find the answers I was looking for in the documentation. It was time to turn to the community for help. I was so relieved to discover the weekly Open Library Community Zoom calls on Tuesdays, where I would get to ask my questions to actual human beings – and have conversations! 

Open Library Community Calls

Joining that first community call was instrumental in my Librarian-In-Training journey and for the development of my Canada Reads curated collection. I was immediately welcomed, supported, and made to feel like a part of the community. I had the opportunity to present my collection for the first time, share my vision, and explain my pain points. I was met with enthusiasm and incredible insights that eased my overwhelm and helped me move forward. I hadn’t realized how, in vocalizing my project to the community, it would help me feel so connected, supported, and invested in seeing my project through. 

Every community call I have attended has provided me with the tidbits of information needed to help me develop the skills required to execute my vision. These community calls have been an invaluable resource and remain a delightful part of my week.

Among the pieces of information I received during these calls was news of the bulk editing tool, which enabled me to automatically add, from a typed list, all the Canada Reads books by year to my personal lists, saving me a lot of time and manual labour. I also learned the intricacies of editing book metadata according to industry standards. And I learned how to set up a curated collection page along with the coding required to create book carousels, which visually enhance the look of my collection pages. Each step has helped me establish my collection and display the information the way I envisioned. I now have a good understanding of the technical knowledge required to set up a collection page, and though there is still plenty to learn, I feel a lot more confident in my technical skills than I did when I started.

Leveling Up the Collection with Subject Tags

Having gained these new skills and technical knowledge, I was encouraged during a community call to take my Canada Reads collection to the next level by adding unique subject tags to each book championed during Canada Reads. This not only categorized the books into a Canada Reads subject page and increased their searchability across the Open Library catalog, it also served as the basis for the coding required to create book carousels.

Subject tags are part of a book’s metadata and are added according to the subjects found in the book as well as any subject the book might be associated with. For Canada Reads, I used three unique subject tags to categorize each championed book into a specific Canada Reads subject, as described in the table below: 

Canada Reads Subject Tags
Subject TagDescription
Collection:Canada ReadsGeneral subject tag added to all the books championed during Canada Reads over the years
Collection:Canada Reads WinnerSpecific subject tag added only to the Canada Reads book winners 
Collection:Canada Reads YearCollection:Canada Reads 2025Specific subject tag added to all the Canada Reads books according to the year in which they were championed

For each subject that is tagged, Open Library automatically creates a subject page that groups all the tagged books and displays them on the page. The subject page displays a book carousel of all the tagged books. In the section below the carousel, the metadata of those books is displayed by category, showcasing the publishing history, related subjects, places, people, and times. It is a great place to see the book metadata in one place and the variety of topics within a collection. With the right librarian privileges, these subject pages can be edited and spruced up.

I was granted editing permission to maintain the Collection:Canada Reads subject page and decided to set it up in the same way as I had done for my curated collection. I did so for visual consistency as well as ease of editing. By using the same format on both pages, I can copy any updates I make on one page and paste them onto the other. There are technical differences between the Collection:Canada Reads subject page and the Canada Reads Awards curated collection page, but the only visual difference is the logo, which I specifically changed to help me distinguish between the two pages when I’m working on them.

I wanted to include book carousels on my pages because they add a dynamic and interactive element that, to me, feels like a more realistic library experience than scrolling through a wall of text on a webpage. Although the coding for the book carousels confused me at first, I was guided through my confusion during a community call. In these calls, others walked me through the coding process and explained the technical setup of the subject tags. I was able to understand how the unique Collection:Canada Reads subject tags I had been adding would form the basis of the code required to create the book carousels. I used the code below, only changing the ‘collection:‘ and ‘title=’ elements to match the collection I wanted to have displayed on the page.

{{QueryCarousel(‘subject:(“collection:Canada Reads 2025″)’, search=False, has_fulltext_only=False, title=”Canada Reads 2025”, limit=20)}}
Screenshot of part of Canada Reads 2025 collection on Open Library

Celebrating My Canada Reads Collection 

From August 2025 to November 2025, I was focused on building my Canada Reads collection pages, attending the Community calls on a weekly basis, and learning everything I could to make them come to life. I took on this project knowing it would be an excellent challenge, and one I am continuing to meet with openness and curiosity. 

This collection has taken on a life of its own. Although I never expected to share it with anyone, I am tremendously glad I joined that first community call to share it with the Open Library team. Since then, I have established two Canada Reads collection pages, updated the metadata on many books, written this blog post, and even got the opportunity to present my collection at the 2025 Open Library Community Celebration in November 2025!

I couldn’t have predicted what I’ve accomplished with this collection, nor the recognition I’ve received. I’m incredibly proud of the work I’ve done and so, so grateful for the Open Library team’s support, without which I wouldn’t have gotten this far. 

Next Steps for the Collection

This collection is a work in progress and as of this blog’s publication date, I have completed the award years from 2016 – 2025. Over the coming months, my goal is to add the remaining books from 2002 – 2015 as well as clean up the metadata for each book. I will also add the 2026 books once Canada Reads has concluded in April 2026.

This is a manual process that can be fairly time consuming as editing book metadata varies greatly depending on the popularity of the book and the number of editions it has. Although I would love for my collection to be complete, I am making sure not to rush the process and to take the necessary time to correctly input the information and create a collection that is accurate – and one that I am proud of.

My hope for this collection is for people to enjoy it and hopefully, be inspired to read some Canadian content. 

If you would like to contribute to Open Library as a librarian, you can fill out this form and join the Slack channel and the weekly community call. Other contributors will provide mentorship and help you get started.