Recently the company formerly known as RStudio (now Posit) introduced Quarto, which converts Jupyter notebooks and several other file types into webpages and a range of other formats. It runs on pandoc, so I’m guessing the output formats are many.
Another software library called nbdev, uses Quarto and collections of Jupyter files, including software libraries, to automatically publish webpages. Code, formatted comments, and graphical outputs are included such that every Jupyter program can be the tutorial about itself.
It’s sort of the converse of pollen’s motto (“the book is a program”) where in this case the program is a book. With CSS styling, Quarto books could have considerable typographic range, though they won’t match the flexibility of pollen as the formatted text is written in markdown, with its associated limitations.
The main output of Quarto is a passive website, but it’s linked to functional notebooks or a software library. Quarto is doing something quite different from pollen but I’m having trouble articulating the major differences.
One question is: What are the defining differences between a program being a book and a book being a program?
I had drafted my stab at a definition of each approach, but it was kind of falling apart.
I would use metaphors back to much older but by now very well-understood aspects of physical books:
The traditional format of a bound book (pages joined on one edges, flip one at a time serially, text flows across spread then to next spread) feels akin to a protocol or file format: like HTML, or PDF, or ePub. These are not programs themselves but are standardized enough that software can be developed to read/search/archive/organize them, like library shelves and cataloging systems for physical books.
Program as book feels to me more akin to unique artists books, or nontraditional books. Unbound leaflets, oversize editions, pop-up books, my personal favorite edition of The Mappist, etc. Books which defy standard formats, and which tend not to fit well into tools, software, and systems made for traditional books. It’s tough to scan a pop-up book, hard to shelve loose leaves, and difficult to classify new types of metafiction.
That’s an interesting perspective, the idea that the type of product defines PIAB versus BIAP. I would agree with that, but I’m not sure that’s the defining difference.
It may be that PIAB is primarily about the code, with prose annotations that can expand to a whole book. While BIAP starts with typesetting text, with programmatic markups that extend into Racket code that lend the book app-like functionality.
The two approaches can end up producing similar end products, but get there from different perspectives and with different tools.
For me “the book is a program” is just meant to encapsulate the idea of writing inside a programming environment, with all the possibilities thereof, instead of a word processor or other tool that puts a ceiling on what can be expressed. I haven’t used Pandoc but roughly I understand it to be a document-conversion tool. That is, IIUC it offers transformations from one output format to another, not transformations from a source format to an output format (= the Pollen model)