It's even worse than it appears.
Friday July 16, 2021; 9:26 AM EDT
  • I was talking with a developer yesterday and the question came up, what about huge outlines? How does OPML handle those? That gave me a chance to tell the story about how i'm archiving Scripting News, and how include nodes work. #
  • All systems have to evolve as projects get bigger -- you break it up into components and link them together in a single document. That makes the code more manageable, and makes it possible to reuse the pieces. Every serious system has to provide for breaking big things up into smaller, reusable bits. For example... #
    • Node.js has packages. You can include a package in an app, or in another package, with a require call, like this: const fs = require ("fs"); Then you can refer to exported bits from the "fs" package in your app as if they were part of it, because they are. #
    • The programming language C has the #include directive: #include "standard.h". The C preprocessor reads the file, and replaces the #include directive with the contents of the file. Includes can contain includes. #
    • Wikipedia has a survey page explaining how inclusion works in other languages, such as Fortran, Pascal, PHP. #
    • OPML has include nodes which have a type attribute whose value is include and a url attribute which is the address of an OPML file. When the user expands an include node, the outliner reads the contents of the OPML file and inserts it as subs of the include node. To the user, if the net is sufficiently fast, and the file is a manageable size, they wouldn't need to know that it was an include node. #
  • An example. I archive my blog, which is written in an outliner, and saved as OPML, at the beginning of every month. I save the previous month in a repository on GitHub, and empty out the outline I edit. The CMS that builds the HTML rendering and the RSS version of my blog is able to jump month boundaries. So I have a convenient-size outline for editing, and everything else just hums along. #
  • But what if I wanted an outline of all my blog posts going back to May 2017? I would do that with include nodes. And just for fun, I did exactly that. #
  • Here's an OPML file that contains includes for each of the months of 2018, 2019 and 2020. If you have an outliner that can expand includes, then you can view all the writing for those years in one outline#

copyright 1994-2021 Dave Winer.

Last update: Friday July 16, 2021; 3:26 PM EDT.

You know those obnoxious sites that pop up dialogs when they think you're about to leave, asking you to subscribe to their email newsletter? Well that won't do for Scripting News readers who are a discerning lot, very loyal, but that wouldn't last long if I did rude stuff like that. So here I am at the bottom of the page quietly encouraging you to sign up for the nightly email. It's got everything from the previous day on Scripting, plus the contents of the linkblog and who knows what else we'll get in there. People really love it. I wish I had done it sooner. And every email has an unsub link so if you want to get out, you can, easily -- no questions asked, and no follow-ups. Go ahead and do it, you won't be sorry! :-)