Authoring Books directly on GitHub using only Javascript ================= Connexions ------------ Connexions publishes remixable, openly licensed textbooks in EPUB, PDF, and in print using a single source format. The format is currently XML but we are converting to a semantic HMTL5 format specialized for textbooks. GitHub Book Editor -------------------- GitHub provides technical solutions to many authoring needs like revision control, rollback, issue tracking, and submitting edits but in a programmer-centric way. I have taken the authoring tools we are creating and made an EPUB3 editor that only relies on GitHub's API; no special webserver is necessary. Using this JavaScript-based editor, an unzipped EPUB can be committed into a GitHub repository and modified using GitHub's API. Regenerating the EPUB is trivial (GitHub offers a “Download as Zip” button) and generating a PDF is simple (using “commit hooks”). By creating an author-friendly (as opposed to programmer-friendly) User Interface to GitHub we can leverage existing, popular tools and change how people author and remix textbooks. Some of the challenges we faced in creating the editor may be of interest to other participants in the workshop. As an open-source programmer I'm also interested in finding ways to share and reuse common tools that benefit all of us. Simulating CSS3 extensions for Paged Media and Generated Content -------------------------------------------------------------------- When writing remixable textbooks, it is crucial to have semantically related content near each other in the HTML even if it is presented elsewhere in a book. Some examples include collating references at the end of a chapter, solutions at the end of a book, and having hyperlinks change their display text when the title of the target changes. We have been using XSLT to perform these transformations of HTML but these XSLT files are difficult to maintain because of the expertise needed and all the possible permutations for different books. Fortunately, there are w3c drafts that specify how these could be done using CSS but browsers have little incentive to implement these. To bridge this gap I have written emulators for some of the advanced CSS operations our books use but are not yet implemented in browsers. I would also be happy to discuss how I "emulate" some of the optional CSS3 modules like: - http://www.w3.org/TR/css3-content/#moving - http://www.w3.org/TR/css3-gcpm/#the-target-text-value Having tools that support these extensions might be useful to many participants and combining our efforts could help all of our projects. Accessible Math ------------------ For textbooks, we frequently need to render accessible mathematics in different formats and contexts (print, mobile, online). So that textbooks remain accessible to learners with varying abilities, the math must be delivered in ways that work for visually impaired learners. MathJax provides powerful building blocks for rendering math. ChromeVox recently released support for voicing math. Both currently work as client-side javascript libraries, but that doesn't provide a solution for EPUB, so I am also working with others on generating accessible Math by using server-side MathJax and ChromeVox. - Philip Schatz