Image from a Pressbooks users group meeting at UW-Madison, October 27, 2017

Publishing Open Textbooks at UW-Madison

An update: what we’ve accomplished and what we’re working on in 2018

Some of the many faces involved in OER creation at UW-Madison [image taken at our October 2017 Pressbooks Users Group Meeting]

Over the last year, we’ve continued to work on developing tools and processes to help content experts in our community create and publish open textbooks and other learning material. Most of our work has focused on Pressbooks, an open-source book publishing tool I’ve written about previously, and has been inspired by the guiding principles described here.

Our work in 2017 has focused largely on three larger goals:

  1. Authoring with interaction and annotation: We want to make it easier for authors to make and include interactive learning activities into their texts, to allow readers to annotate the text, and combine interactivity with annotation (to let them put interactive elements in the annotation layer, for example). I’ve described some of our early efforts in doing this (with the open source tools H5P and Hypothesis) here.
  2. Connecting books to a LMS: We want to allow our authors to more easily incorporate their “book” projects into whatever learning management system they teach with. Our campus has recently been migrating from Desire2Learn/Moodle to Instructure’s Canvas LMS, but our goal has been to use interoperable standards wherever possible, so that the tool would work similarly no matter which LMS an instructor or institution uses. I’ve described some of our initial efforts to do this here.
  3. Collecting learning analytics (responsibly) & giving feedback on performance to both learners and instructors: We want to collect learning analytics about what learners are doing in and with our text projects and display information about what learners are doing to learners and their instructors. We’d also like to support LMS gradebook integration, where reasonable. The idea here is to cause Pressbooks to function more like a ‘platform’ — an open-source publishing tool that can be used to replace not only expensive proprietary textbooks, but also the growing number of expensive proprietary homework platforms and question banks. I haven’t written about this in much detail, but Hugh McGuire and I shared some of our early ideas on this front in our presentation at last year’s Open Education conference in Anaheim.

In this post I want to describe in a bit more detail what we’ve accomplished (what’s possible now) and what still remains to be done (what we hope to make possible later), focusing largely on the three goals articulated above.

What We’ve Accomplished

So here’s what’s possible now:

Authoring with interaction and annotation: We have, on our production instance of Pressbooks, a multi-book network in which we can have a theoretically infinite number of individual texts. Each text on the network can create any one of almost 40 different interactive H5P activity types and easily embed these wherever they like in the book. Authors can also activate the Hypothesis annotation tool, giving readers the ability to add public, private group, or personal annotations to any or all parts of the book (this can be controlled at a granular level down to the individual chapter). The Hypothesis annotation layer can include text, links, images, audio, embedded Youtube/Vimeo videos, and H5P activities, and each annotation can become part of a conversation (they can be replied to), and shared or linked to directly. As a result, we can publish interesting interactive activities (like this annotated reading activity of a Lorine Niedecker poem) to the public web:

Sample interactive activity built with Pressbooks/H5P/Hypothesis. Can be found on the public web at

Connecting books to a LMS: Instructors can select all or part of their book to be included in an export. With a single click, they can then produce a Thin Common Cartridge export file. This export file consists of LTI links for all of book sections included in the export and can be imported easily into an LMS, with chapters from the book coming in either as external LTI links or “assignments” (meaning that they have a corresponding gradebook value). Once imported into the LMS, these chapter links can be rearranged or deleted and other LMS activities inserted in between various chapters. Content from the books is linked, not directly copied/imported, which means that any changes made to the published book will always be live in any/all courses to which the book has been imported, with no need to ever edit or update content in the LMS. In other words, changes to the published textbook propagate instantly to all courses where the book has been imported via this Thin Common Cartridge/LTI link method. In the image below, you can see how the activity shown above on the public web looks when loaded by a student inside of Canvas as an “assignment”:

The same activity shown above, but loaded (via LTI) as a Canvas assignment.

Collecting learning analytics (responsibly) & giving feedback on performance to both learners and instructors: We are currently sending xAPI statements from all H5P activities in our books to an enterprise-hosted version of Learning Locker, an open source Learning Record Store built by HT2Labs. We are able to send simple grade reports for instructor-defined aggregated “activities” to our LMS gradebook and are currently building dashboards to visualize these statements in more detailed and useful for students and instructors. Instructors or activity creators have to initially define what the graded activity consists of, set a date range, and choose a grading scheme (options include ‘highest score,’ ‘first attempt,’ ‘last attempt,’ and ‘average score’), but once the settings are saved, we run an automatic scan for new attempts every 30 minutes (note: this number could be anything), automatically sending updated grade values from the Learning Record Store to the LMS gradebook.

Required elements:

In order to make all of this happen we needed several things in place. From a macro view, those pieces are:

  1. An authoring/publishing tool. In our set-up, we’re making exclusive use of open-source tools (Pressbooks and a handful of additional plugins, most notably, H5P and Hypothesis), but this doesn’t need to be the case. We began self-hosting Pressbooks, but have recently contracted (through Unizin) to have our production instance hosted via one of the PressbooksEDU plans.
  2. A learning management system. In our case, we’re using Instructure’s Canvas, but because we’re working with IMS Global standards (like LTI) whenever possible, the methods we’re using should work with any LMS that supports the standards being used.
  3. A learning record store. In our case, we’ve chose to use HT2Labs’ Learning Locker (an open-source product). In our exploration stages, we were self-hosting, but we’ve recently begun paying for enterprise SaaS hosting from HT2Labs.

I’ll describe the setup in minute particulars in another post, but the big picture view of this set up looks something like this:

How the system connects: 1. An activity is made and published using Pressbooks/H5P/Hypothesis [our open source ‘platform’]; 2. Content is published within a Learning Management System using Thin Common Cartridge exports and an LTI integration; 3. When learners interact with H5P activities in the book, xAPI statements are sent to Learning Locker [a learning record store]; 4. Every 30 minutes, we scan the Learning Record Store for new statements and send back updated grade values to the LMS gradebook via LTI.

How the system connects:

  1. An author or team of authors makes a learning activity (like the Niedecker reading activity) using Pressbooks/H5P/Hypothesis (our open-source authoring ‘platform’) [depicted in the red rectangle in the top left of the image above];
  2. We publish that learning activity within a Learning Management System — in our case, Canvas [ the grey box in the top right of the image above] — using Thin Common Cartridge exports and an LTI integration;
  3. When learners interact with H5P activities in the book, xAPI statements are automatically sent to Learning Locker (a learning record store) [the black box at the bottom center of the image above]. Note: When activities were launched via LTI link from within the LMS, information about the user’s identity is transmitted via LTI to the learning record store; if the book is launched from the open web, no identifiable information about the learner is requested or saved;
  4. Every 30 minutes, we scan the Learning Record Store for new statements and send updated grade values back to the LMS gradebook via LTI. [the grey arrows in the image above]

What We Hope To Do Next

Authoring with interaction and annotation: Without going too deeply into technical details, our major goals are to work with Pressbooks and Hypothesis to make it easier to natively include interactive content in the development and publishing process. Pressbooks has already stated their commitment to work on this in a general fashion (described on their 2018 “Year of the Author” roadmap and this GitHub ticket), but how quickly they implement desired improvements will depend on large part on tangible development support from interested parties like us. I’ve also described some core enhancements we’d like to see for Hypothesis (see here) and H5P (see here, here, and here), many of which are currently awaiting further action or sponsorship to advance the needed development work.

Connecting books to a LMS: We’re happy about how this part is working for the most part. We haven’t tested broadly across many LMSes, but Lumen Learning has been doing so with their original solutions to this problem (which I borrowed very heavily from), and signs from them seem to be good. I’ll describe the technical pieces to this solution in more detail in a future post and some of what I think the weak spots are, but we don’t have a lot of immediate work planned for this goal.

Collecting learning analytics (responsibly) & giving feedback on performance to both learners and instructors: This is where I see the most potential for improvement (and where the most work remains to be done). Our major goals for the next few months are to build useful dashboards based on the xAPI statements we’re currently collecting to display to learners to give them feedback on their performance and highlight some general areas of concern or success and to instructors to give them a sense for individual and class performance and to help them improve their learning material for future iterations. We’d ideally like for these dashboards to be made visible in the LMS through an LTI connection, which is not something I’ve done before. In the slightly longer term, I’m very interested in moving from recording xAPI statements to generating and recording Caliper Analytics 1.1 statements (now that the new specification is officially released) — and to generating statements not just from our embedded H5P activities, but throughout the Pressbooks, encompassing reading, annotating, and media engagement behaviors as well as their interaction with the H5P elements in our activities.