Requests for comment/Book management

Request for comment (RFC)
Book management
Component General
Creation date (2013-06-17)
Author(s) was Molly White; needs new champion
Document status stalled

See also a draft RfC for a combined plan for the three Wikisource-related GSoC projects

Create an extension to help wikis (WMF-hosted and otherwise) that host book content, such as Wikisource or Wikibooks. There is currently no extension of the sort implemented on these projects, although Extension:BookManager was initially created for this same purpose. This is a part of a Google Summer of Code project. More detailed information on the project can be found at meta:Book management 2013.

Current system[edit]

This is somewhat different between Wikisource and Wikibooks because of the nature of their content, but I'll follow a typical Wikisource progression:

  1. Upload scans to Commons
  2. Create the "source" or "index" page for the work: a page that contains various metadata, as well as structures some of the page. (example, source) Although this does allow for a table of contents and sectionized page lists, like in the example, these must be formatted by hand.
  3. Create subpages for each section or chapter
  4. Include each page of the scan in the appropriate chapter using <pages index /> tags (example, source)
  5. Add a header template (the green box) to each page, manually filling out the previous, next, and other parameters. Wikisource has several of these templates; Wikibooks has even more.

On Wikibooks, content is added directly to the subpages, without uploading scans or including them in the subpages using the pages index tags. Effectively, steps 1, 2, and 4 are skipped.


The lack of support for book structures is relatively well-documented in Bugzilla.

  • bug 15071 – Wikibooks/Wikisource needs means to associate separate pages with books
    • bug 10092 – Separate reference page for glossaries, bibliographies, etc
    • bug 12908 – Option to protect all subpages and talk pages when protecting the page
    • bug 15072 – Protect, watchlist or delete a whole book at once
    • bug 15073 – Create a set of special pages for handling meta-organization of books
    • bug 15074 – List, count and search all books
    • bug 15075 – Per book, category and/or template CSS and JavaScript
    • bug 26448 – Make Collection extension to automatically create collections for existing books on Wikibooks/Wikisourcesa
      • bug 35925 – Wikisource related bugs and enhancements (tracking)
    • bug 31254 – Provide "Random page of this book" feature for use on Wikibooks projects

Proposed system[edit]

Mockup of the form
  1. Upload scans to Commons
  2. Fill out a form (see mockup) on the main book page containing metadata fields. Create sections using the buttons at the bottom; drag and rename as necessary. The sections can also be indented to create subsections. (Very basic demo just to show simple dragging)
  3. Enter page range into a field for each section, or choose to enter it manually (using the same <pages index /> tags)
  4. Select an option to automatically generate header templates and include them on each page. (Header/navigation bar mockup)

On Wikibooks, steps 1 and 3 are skipped.


Mockup of navigation bar

Technical details[edit]

This will be implemented by storing the structure and metadata information in a JSON block on the main book page (see the proposed JSON schema). This block will contain the information necessary to create the header templates. The block will not be edited by users, but rather accessed through the form. The draggable sections in the organizational form will make use of jQuery UI's "sortable" interaction, and are thus dependent on JavaScript. The header templates also depend on JavaScript for the drop-down metadata and chapter listings.


The following metadata will be included:

  • Author
  • Translator
  • Editor
  • Illustrator
  • Title
  • Alternate titles
  • Subtitle
  • Series title
  • Volume
  • Edition
  • Publisher
  • Printer
  • Publication date
  • Publication city
  • Language
  • Description
  • Source
  • Permission
  • Other versions
  • ISBN
  • LCCN
  • OCLC

Further improvements[edit]

I have a number of "if I have time" improvements planned after the main work of creating the extension is complete. These include:

  • Optionally auto-generate a table of contents
  • Allow an entire book to be exported/printed at once
  • One-click actions on the entire book
    • Watchlisting
    • Deleting
    • Moving
    • Protecting
    • View recent changes
  • Edit or view an entire book at once (on one page)