Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXS/ QHXS /QHXS/ Intellectual junkyards I was first inspired to create Forester after exploring the Stacks Project and realising that what I most wanted most dearly was the ability and digital space to create my own—and feeling the pain when I tried to install the essentially defunct Gerby software that runs it. Paolo Brasolin was kind enough to help me with this, by building Sheafy on top of Jekyll. I eventually reached the limits of that tool and created Forester on my own (first as a Hugo plugin, and finally as standalone OCaml software). Later I was joined by Kento Okura who has become a strong partner in designing and developing Forester. Whilst exploring the space of tools for thought, I became aware of a cluste…
Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXS/ QHXS /QHXS/ Intellectual junkyards I was first inspired to create Forester after exploring the Stacks Project and realising that what I most wanted most dearly was the ability and digital space to create my own—and feeling the pain when I tried to install the essentially defunct Gerby software that runs it. Paolo Brasolin was kind enough to help me with this, by building Sheafy on top of Jekyll. I eventually reached the limits of that tool and created Forester on my own (first as a Hugo plugin, and finally as standalone OCaml software). Later I was joined by Kento Okura who has become a strong partner in designing and developing Forester. Whilst exploring the space of tools for thought, I became aware of a cluster of related and deeply inspiring ideas—starting with Andy Matuschak’s evergreen notes which led me to Niklas Luhmann’s Zettelkasten and various kinds of digital gardening. Although all these trends are slightly different and shouldn’t be conflated, the common thread is to accumulate a bunch of small topical notes over many years in hypertext. (Luhmann’s Zettelkasten was of course a physical hypertext, where hyperlinks are hand-written and addressed to locations in his card box, whereas many Zettelkästen today are digital.) Matuschak’s “evergreen” concept refers to the practice of having notes evolve and remain up to date, as opposed to scratch notes that lose salience with time. I was interested enough in the idea that I spent some time thinking about how it might be adapted to the mathematical sciences, and I wrote a manifesto of sorts on the topic: Designing tools for scientific thought. This manifesto guided the design of Forester, whose name was itself inspired by Matuschak’s writings on evergreen notes. For some time now, however, I have been noticing a great deal of friction in my own use of evergreen notes as a tool for advancing science; for this reason, I have been using my own Forest in a different way for some time now. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXT/ QHXT /QHXT/ Life in the junkyard after a few years Let me describe how someone like me predictably starts building up their forest. Because I’m interested in category theory, I start by creating a tree entitled Category with taxon Definition. I start doing the same for other important notions, like functors, natral transformations, etc. Eventually I prove the Yoneda lemma! I spend about a year building up a glorious forest full of category theory. Only then do I realise that ordinary category theory, in which a category is defined to have a set (or a class) of objects, is a mess; I want to switch to univalent category theory which smooths over many of the rough edges. Unfortunately, univalent foundations is very different from set theoretic foundations in subtle ways. I have a plan to refactor my entire forest to account for this, but obviously I have to get my actual work done too. I’ll just hold off on that epic refactoring... I discover an interesting theorem or insight, and I want to write it down in my forest. But my motivation dies when I realise that it would mean adding to the old-and-busted notes, which would increase my future burden when I will definitely (not kidding) update my hundreds of notes. With my motivation killed, I forget about the insight and move on. By the way, not only do I want to switch to univalent categories, I also want to re-do everything in terms of displayed categories. Ouch. This happens enough times, and the forest dies and becomes a junkyard. The End. I suspect this is a somewhat common negative experience with Zettelkästen, but not many people talk about it. In one brave exception, Christian Tietze writes about a similar experience recently with his Zettelkasten, in which he has written a ton of now-outdated notes about subtleties of Apple’s SwiftUI and Observation frameworks. Keeping such things “evergreen” is almost impossible because Apple frameworks are a rapidly moving target. The point I want to make is that mathematics and the sciences are also rapidly moving targets, and if your outlook on them slows its roll long enough for it to become practical to keep a sizable forest evergreen, it may indicate intellectual stagnation more than intellectual wealth. I must also point out that keeping a forest evergreen in this sense does not only amount to updating various trees periodically. One’s mathematical development over time tends to involve not only evolving definitions and proofs, but also an evolution of the entire ontology—which means that the very decision of what to put in one tree and what to put in another tree is difficult to commit to in the long term. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXU/ QHXU /QHXU/ Tree-rings and the dialectics of knowledge production My own experience with the long-term maintenance of a forest or Zettelkasten is that the level of activity therein is uneven over time—there are periods of expansion followed by periods of quiet. In the former, trees tend to cluster around not only a group of related topics but also a particular approach to ontologising those topics. When you encounter one of those trees later on, you can kind of remember when it was written because of the way it was written and the particular relationships you chose to reify in hypertext. Seeing these distinct “rings of growth” emerging in my own forest brought me to the realisation that my viewpoint on evergreen notes might have been overly simplistic. The question seems to be: should we resist the distinctness of intellectual growth rings by hewing to a homogeneity of the present, or should we embrace time and change as fundamental aspects of knowledge production? Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXV/ QHXV /QHXV/ Resist ontology and embrace time Coming back to the difficulty of maintaining a forest in a state of intellectual evolution, I have found that a good approach is to organise my notes around “tracker” trees—which pertain to a particular topic or project but have little content of their own, serving mainly as backlink accumulators for notes written in my private journal, my weeknotes, and my blog. For example, one thing I am working on is Project Pterosaur—which will be a new proof assistant that combines dependent type theory with ideas from Isabelle/HOL. As you can see, there is very little content to the Project Pterosaur tree, but in the private version of my forest there are many backlinks coming from journal entries. I can reconstruct the entire project in my mind by reading through these entries via the backlinks panel, and that to me is far more useful than a (high-churn) “evergreen” note that explains my vision for the project and its status, etc. Obviously this is not a new idea—many people use tools like Obsidian, Logseq, Roam, etc. in the way I am describing. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXX/ QHXX /QHXX/ Blogging is the accretion of temporal insight A few months ago, I had a very enlightening conversation with my colleague Anil Madhavapeddy about blogging. Anil’s research group at Cambridge has a practice of internal blogging and weeknotes: pretty much everyone is writing about their work in blogs that are then syndicated into a Matrix channel. Then, discussion proceeds organically in the chat and in person. These blog posts are not the transient/fleeting notes discussed by Matuschak, because they are not scraps—they are evergreen in the “free” sense of being permanent discourses on a moment in time. For more than a year, I had already been maintaining a personal journal of daily notes in my private forest, but there was always some tension in my writing practices there because I was perfunctorily accumulating “records” of what I did rather than insight. What had not clicked for me at the time was that I really ought to have been blogging (for myself). Journalling in the most progressive sense is simply blogging with a restricted audience, facilitating the accretion of insight more than the mere memory of what happened when. Since my chat with Anil, I have shifted my practice to emphasise semi-public weeknotes whose goal is to provoke and continue discussions that are unfolding within the community that reads them (mainly my colleagues in the Computer Laboratory). Of course, this was only possible after I had added support for syndication to Forester! I still write private entries as well, of course, but not as many. Currently, Forester creates a lot of friction around access control and one of the goals in the coming year or two is to decrease this friction so that one does not have to think so carefully about where to put something that you want to write. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXW/ QHXW /QHXW/ Sprouting shoots, and the Hyperbook I have written above about a forestry practice that embeds time and the evolution of ideas at its core; this is achieved by resisting the packrat’s urge to ontologise every aspect of their intellectual life. This does not mean that static ontologisation has no place; for example, a textbook should not present an evolution of its own ideas (except insofar as it describes history), but should rather present a single unified viewpoint on a topic. Indeed, the original goal of Forester was to simplify the creation and deployment of resources like the Stacks Project and Kerodon, which I will hereafter refer to as hyperbooks. In the hyperbook, we can and must give full play to our instinct for ontologisation, and we are freed from the crushing obligation of permanence by treating a hyperbook in the same way that we treat a blog post: as a unified accretion of insight that pertains to a specific moment in time, making no pretensions as to the universality of the specific ontological approach. This should not surprise anyone who has written books or lecture notes before, but it does represent a retreat from what might now be viewed as an “extremist deviation” in the design of Forester. Prior to Forester 5.0, each person was expected to have just a single forest and all their writings (including lecture notes and hyperbooks!) were expected to be part of that forest. I found that this approach, however, intensifies all the kinds of metal stress that kills motivation and hastens descent into the intellectual junkyard. A better way forward is to liberally split off hyperbooks as independent forests—which can then be federated with your own forest (please note that this functionality is experimental and subject to change). The ability to federate forests is important, because otherwise one would have to choose between bidirectional linking and modularity; with federation, there is no need to make this choice. Splitting off forests in Forester 5.0 still involves some annoying points of friction; the biggest one is the need for global identity that spans all forests. A solution to this problem will not ship with 5.0, but I am preparing to work on it for a subsequent release. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXY/ QHXY /QHXY/ Renew life, have a forest fire! The goal of the Forester project has always been to reduce mental stress and release untapped stores of creativity in the struggle for outlook and insight. In some sense, every iteration of Forester has been an experiment from which we are taking both positive and negative lessons. Some users of Forester have adopted extreme ontological practices (abetted, perhaps regrettably, by our dangerously powerful Datalog query engine). It is not my place to prescribe how people should use Forester, but I do care for people’s well-being and I strongly believe that these kinds of practices can destroy the mind over time. If you are feeling the weight of ontology in a heavy-laden forest, there is nothing wrong with a little forest fire. When the smoke clears, start a blog. References Jacob Lurie 2023 https://www.forester-notes.org/kerodon/ kerodon /kerodon/ Kerodon Reference https://kerodon.net Kerodon is an online textbook on categorical homotopy theory and related mathematics. It currently consists of a handful of chapters, but should grow (slowly) over time. It is modeled on the Stacks project, and is maintained by Jacob Lurie. Its infrastructure uses Gerby, which is maintained by Pieter Belmans. The design was created by Opus Design. The Stacks Project Authors 2018 https://www.forester-notes.org/stacks-project/ stacks-project /stacks-project/ The Stacks project Reference https://stacks.math.columbia.edu The Stacks project is an ever growing open source textbook and reference work on algebraic stacks and the algebraic geometry needed to define them. Here are some quick facts: The Stacks project is not an introductory text. It is written for graduate students and researchers in algebraic geometry. The aim is to build algebraic geometry and use this in laying the foundations for algebraic stacks. The theory of commutative algebra, schemes, varieties, and algebraic spaces forms an integral part of the Stacks project. The Stacks project has a maintainer (currently Aise Johan de Jong) who accepts changes etc. proposed by contributors. Everyone is encouraged to participate. The Stacks project is meant to be read online. Consequently we do not worry about length of the chapters, etc. With hyperlinks and the search function it is possible to quickly browse through the chapters to find the lemmas, theorems, etc. that a given result depends on. We use tags to identify results, which are permanent identifiers for a result. You can read more about this on the tags explained page. For a longer discussion, please read the blog post What is the stacks project?. Pieter Belmans Raymond Cheng Aise Johan de Jong https://www.forester-notes.org/gerby/ gerby /gerby/ Gerby Reference https://gerby-project.github.io/ If you have a LaTeX document which is large (probably several hundreds of pages at least) is regularly updated needs to be externally referenced often you will run into the problem that large PDFs are not easily navigable PDFs of any size are not very searchable the internal numbering changes often, making external references outdated Gerby addresses these problems by providing an online tag-based view, instead of just having a big PDF. Gerby is tailored towards making large online textbooks and reference works more accessible. In case you were wondering, a gerbe is a kind of stack (in the mathematical sense), and the software was originally meant for the Stacks project. Context Jon Sterling 2024 10 23 https://www.forester-notes.org/30FM/ 30FM /30FM/ Forester Blog Jon Sterling 2025 6 15 https://www.forester-notes.org/VNQ9/ VNQ9 /VNQ9/ Rewriting is where the magic happens One question I repeatedly get about Forester is: How do I export a paper written in Forester to a format that I can submit to a journal? It is technically possible to convert Forester’s output XML to LaTeX, using XSLT. There is an outdated stylesheet for that purpose that could be brought up to date. I think this misses something important, though. First of all, what you’ve written in your forest is probably, in form and structure, not a good fit for a journal or conference publication. Second of all, typesetting a publication requires a lot of special-casing and even rewording to avoid things like bad line breaks, etc.; none of that is reflected in the naïve idea of just “exporting your forest to a journal”, but that stuff is very important. I recommend writing in your forest to develop the ideas and explore the space. Then when it is time to fork off a publication, write that story from scratch using a tool that is suited for old-fashioned publication typesetting, like LaTeX. Writing from scratch is not a waste of time; it is the most important part, because you now get to weave together all your insights into a coherent and self-contained narrative that speaks directly to the intended audience of the work in their language; in this process you may adopt notations that are good specifically for that publication, but which you would not wish to expose to (e.g.) a more technical audience, etc. The goals of publishing a traditional article are in total contrast to the goals of writing a forest, which is to leverage the accumulation of interconnected insight (in a necessarily non-self-contained way). There is nothing that I love more about my job as a researcher than taking something I’ve written extensive technical notes on, and then writing the story out linearly from scratch, choosing what to keep and what to omit, how to explain, in what order, and with what notations, for a specific audience. This is where the magic happens. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXS/ QHXS /QHXS/ Intellectual junkyards I was first inspired to create Forester after exploring the Stacks Project and realising that what I most wanted most dearly was the ability and digital space to create my own—and feeling the pain when I tried to install the essentially defunct Gerby software that runs it. Paolo Brasolin was kind enough to help me with this, by building Sheafy on top of Jekyll. I eventually reached the limits of that tool and created Forester on my own (first as a Hugo plugin, and finally as standalone OCaml software). Later I was joined by Kento Okura who has become a strong partner in designing and developing Forester. Whilst exploring the space of tools for thought, I became aware of a cluster of related and deeply inspiring ideas—starting with Andy Matuschak’s evergreen notes which led me to Niklas Luhmann’s Zettelkasten and various kinds of digital gardening. Although all these trends are slightly different and shouldn’t be conflated, the common thread is to accumulate a bunch of small topical notes over many years in hypertext. (Luhmann’s Zettelkasten was of course a physical hypertext, where hyperlinks are hand-written and addressed to locations in his card box, whereas many Zettelkästen today are digital.) Matuschak’s “evergreen” concept refers to the practice of having notes evolve and remain up to date, as opposed to scratch notes that lose salience with time. I was interested enough in the idea that I spent some time thinking about how it might be adapted to the mathematical sciences, and I wrote a manifesto of sorts on the topic: Designing tools for scientific thought. This manifesto guided the design of Forester, whose name was itself inspired by Matuschak’s writings on evergreen notes. For some time now, however, I have been noticing a great deal of friction in my own use of evergreen notes as a tool for advancing science; for this reason, I have been using my own Forest in a different way for some time now. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXT/ QHXT /QHXT/ Life in the junkyard after a few years Let me describe how someone like me predictably starts building up their forest. Because I’m interested in category theory, I start by creating a tree entitled Category with taxon Definition. I start doing the same for other important notions, like functors, natral transformations, etc. Eventually I prove the Yoneda lemma! I spend about a year building up a glorious forest full of category theory. Only then do I realise that ordinary category theory, in which a category is defined to have a set (or a class) of objects, is a mess; I want to switch to univalent category theory which smooths over many of the rough edges. Unfortunately, univalent foundations is very different from set theoretic foundations in subtle ways. I have a plan to refactor my entire forest to account for this, but obviously I have to get my actual work done too. I’ll just hold off on that epic refactoring... I discover an interesting theorem or insight, and I want to write it down in my forest. But my motivation dies when I realise that it would mean adding to the old-and-busted notes, which would increase my future burden when I will definitely (not kidding) update my hundreds of notes. With my motivation killed, I forget about the insight and move on. By the way, not only do I want to switch to univalent categories, I also want to re-do everything in terms of displayed categories. Ouch. This happens enough times, and the forest dies and becomes a junkyard. The End. I suspect this is a somewhat common negative experience with Zettelkästen, but not many people talk about it. In one brave exception, Christian Tietze writes about a similar experience recently with his Zettelkasten, in which he has written a ton of now-outdated notes about subtleties of Apple’s SwiftUI and Observation frameworks. Keeping such things “evergreen” is almost impossible because Apple frameworks are a rapidly moving target. The point I want to make is that mathematics and the sciences are also rapidly moving targets, and if your outlook on them slows its roll long enough for it to become practical to keep a sizable forest evergreen, it may indicate intellectual stagnation more than intellectual wealth. I must also point out that keeping a forest evergreen in this sense does not only amount to updating various trees periodically. One’s mathematical development over time tends to involve not only evolving definitions and proofs, but also an evolution of the entire ontology—which means that the very decision of what to put in one tree and what to put in another tree is difficult to commit to in the long term. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXU/ QHXU /QHXU/ Tree-rings and the dialectics of knowledge production My own experience with the long-term maintenance of a forest or Zettelkasten is that the level of activity therein is uneven over time—there are periods of expansion followed by periods of quiet. In the former, trees tend to cluster around not only a group of related topics but also a particular approach to ontologising those topics. When you encounter one of those trees later on, you can kind of remember when it was written because of the way it was written and the particular relationships you chose to reify in hypertext. Seeing these distinct “rings of growth” emerging in my own forest brought me to the realisation that my viewpoint on evergreen notes might have been overly simplistic. The question seems to be: should we resist the distinctness of intellectual growth rings by hewing to a homogeneity of the present, or should we embrace time and change as fundamental aspects of knowledge production? Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXV/ QHXV /QHXV/ Resist ontology and embrace time Coming back to the difficulty of maintaining a forest in a state of intellectual evolution, I have found that a good approach is to organise my notes around “tracker” trees—which pertain to a particular topic or project but have little content of their own, serving mainly as backlink accumulators for notes written in my private journal, my weeknotes, and my blog. For example, one thing I am working on is Project Pterosaur—which will be a new proof assistant that combines dependent type theory with ideas from Isabelle/HOL. As you can see, there is very little content to the Project Pterosaur tree, but in the private version of my forest there are many backlinks coming from journal entries. I can reconstruct the entire project in my mind by reading through these entries via the backlinks panel, and that to me is far more useful than a (high-churn) “evergreen” note that explains my vision for the project and its status, etc. Obviously this is not a new idea—many people use tools like Obsidian, Logseq, Roam, etc. in the way I am describing. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXX/ QHXX /QHXX/ Blogging is the accretion of temporal insight A few months ago, I had a very enlightening conversation with my colleague Anil Madhavapeddy about blogging. Anil’s research group at Cambridge has a practice of internal blogging and weeknotes: pretty much everyone is writing about their work in blogs that are then syndicated into a Matrix channel. Then, discussion proceeds organically in the chat and in person. These blog posts are not the transient/fleeting notes discussed by Matuschak, because they are not scraps—they are evergreen in the “free” sense of being permanent discourses on a moment in time. For more than a year, I had already been maintaining a personal journal of daily notes in my private forest, but there was always some tension in my writing practices there because I was perfunctorily accumulating “records” of what I did rather than insight. What had not clicked for me at the time was that I really ought to have been blogging (for myself). Journalling in the most progressive sense is simply blogging with a restricted audience, facilitating the accretion of insight more than the mere memory of what happened when. Since my chat with Anil, I have shifted my practice to emphasise semi-public weeknotes whose goal is to provoke and continue discussions that are unfolding within the community that reads them (mainly my colleagues in the Computer Laboratory). Of course, this was only possible after I had added support for syndication to Forester! I still write private entries as well, of course, but not as many. Currently, Forester creates a lot of friction around access control and one of the goals in the coming year or two is to decrease this friction so that one does not have to think so carefully about where to put something that you want to write. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXW/ QHXW /QHXW/ Sprouting shoots, and the Hyperbook I have written above about a forestry practice that embeds time and the evolution of ideas at its core; this is achieved by resisting the packrat’s urge to ontologise every aspect of their intellectual life. This does not mean that static ontologisation has no place; for example, a textbook should not present an evolution of its own ideas (except insofar as it describes history), but should rather present a single unified viewpoint on a topic. Indeed, the original goal of Forester was to simplify the creation and deployment of resources like the Stacks Project and Kerodon, which I will hereafter refer to as hyperbooks. In the hyperbook, we can and must give full play to our instinct for ontologisation, and we are freed from the crushing obligation of permanence by treating a hyperbook in the same way that we treat a blog post: as a unified accretion of insight that pertains to a specific moment in time, making no pretensions as to the universality of the specific ontological approach. This should not surprise anyone who has written books or lecture notes before, but it does represent a retreat from what might now be viewed as an “extremist deviation” in the design of Forester. Prior to Forester 5.0, each person was expected to have just a single forest and all their writings (including lecture notes and hyperbooks!) were expected to be part of that forest. I found that this approach, however, intensifies all the kinds of metal stress that kills motivation and hastens descent into the intellectual junkyard. A better way forward is to liberally split off hyperbooks as independent forests—which can then be federated with your own forest (please note that this functionality is experimental and subject to change). The ability to federate forests is important, because otherwise one would have to choose between bidirectional linking and modularity; with federation, there is no need to make this choice. Splitting off forests in Forester 5.0 still involves some annoying points of friction; the biggest one is the need for global identity that spans all forests. A solution to this problem will not ship with 5.0, but I am preparing to work on it for a subsequent release. Jon Sterling 2025 5 27 2025 5 30 https://www.forester-notes.org/QHXY/ QHXY /QHXY/ Renew life, have a forest fire! The goal of the Forester project has always been to reduce mental stress and release untapped stores of creativity in the struggle for outlook and insight. In some sense, every iteration of Forester has been an experiment from which we are taking both positive and negative lessons. Some users of Forester have adopted extreme ontological practices (abetted, perhaps regrettably, by our dangerously powerful Datalog query engine). It is not my place to prescribe how people should use Forester, but I do care for people’s well-being and I strongly believe that these kinds of practices can destroy the mind over time. If you are feeling the weight of ontology in a heavy-laden forest, there is nothing wrong with a little forest fire. When the smoke clears, start a blog. Jon Sterling 2025 3 25 https://www.forester-notes.org/JVIT/ JVIT /JVIT/ Towards Forester 5.0 II: a design for canonical URLs One of the goals of Forester 5.0 is lightweight federation—the ability to have two forests participate in the same graph and therefore provide backlinks, etc. In a previous post (Towards Forester 5.0: a design for global identity), I talked about some of the difficulties that arise when dealing with identities of people and references that have global scope but could nonetheless be described by trees in many forests. I proposed that such things should be addressed by canonical URIs (e.g. DIDs, DOIs, etc.) and that Forester should grow the ability to bind a canonical URI to multiple trees, which are then gathered into a disambiguation page. Today I want to broaden the discussion to cover the difficulties of addressing trees themselves (as opposed to the global entities they may describe). This is a proposal and I welcome feedback. Jon Sterling 2025 3 25 https://www.forester-notes.org/JVIU/ JVIU /JVIU/ Forester must become part of the Web I have been working on developing the prerequisites for Forester to emit RSS and Atom feeds for blogs, and I realised that the problem I was trying to solve earlier this month is a more multifaceted than I originally thought. It comes down to analysing what is needed for Forester to be a good citizen of the World Wide Web: in particular, if we emit an RSS feed that has hyperlinks to some trees in it, those links must refer to an actual page on the actual web rather than something specific to Forester’s ontology. This may seem downright obvious in hindsight, but you must understand that for the longest time I was not thinking of Forester as a tool for progressively enhancing the Web, but rather as a tool for building fully-local life-wikis or Zettelkästen; I no longer believe that my former viewpoint is reasonable, and I have concluded that we must integrate Forester into the Web or else we will be buried under friction. This post is the start of a design for how to do this. Forget what you know about how either Forester 5.0 or previous versions currently work; in order to solve these problems in a reasonable way, we cannot be bound by the past versions of an experimental tool. What we are bound by is the architecture of the World Wide Web, and that will be reflected in the design. Jon Sterling 2025 3 25 https://www.forester-notes.org/JVIV/ JVIV /JVIV/ What is the proposal? Here is the essence of the proposal: We get rid of the forest://host/addr scheme. Instead, trees are globally addressed by a canonical URL. The canonical URL of a tree can in principle be arbitrary, but in practice you will want it to be a place where that tree can be viewed — e.g. the place to which it will be uploaded and served via HTTP(S). Indeed, a default scheme will be provided so as to enable files to be rendered with names and relative locations consistent with the intended global addressing scheme; it is also possible to imagine customisation of this without disturbing the overall design. The canonical URLs are now the vertices of the graph. In Forester source code, a hyperlink like would be resolved right away to or something, using information supplied in the user’s forest; the same goes for transclusion. Links to trees in foreign forests must, for now, be totally explicit (but we can imagine relaxing this in the future). Importantly, this approach does not require knowing what is in the forest at evaluation-time. Jon Sterling 2025 3 25 https://www.forester-notes.org/JVIW/ JVIW /JVIW/ What about replication and mirroring? It may seem annoying to have canonical URLs. For example, a forest that contains vital information might need to be published in multiple places. That much is true, but the fact that the physical publication of a forest is replicated should not allowed to impact the graph or fill it with redundant vertices and edges (e.g. should two mirrors become federated). So the only problem with replication is that hyperlinks might take you to the original forest instead of keeping you in the mirror, but I think this should be resolved by some kind of middleware that rewrites links, just as the Wayback machine rewrites links in its snapshots. That can be handled outside of Forester. Jon Sterling 2025 3 25 https://www.forester-notes.org/JVIX/ JVIX /JVIX/ What about viewing my forest locally? Most of the time, an author is working with their forest on their own machine rather than on the web. It is important that links and transclusions point to the local content rather than whatever (if anything) is stored in the “global” canonical URL. I believe this is not actually a problem: although things like RSS feeds and perhaps even published websites would have all the hyperlinks point to the canonical URLs, there is no reason that this should be required for all renderers. It is easy to imagine making this a configurable flag for the default renderer, and for the upcoming “dynamic”/interactive HTML server we would emit links back to the local server rather than to the canonical URLs. Similarly, there may be projects where there is no intention at all of online publication. In such cases, the scheme for assigning canonical URLs can be arbitrary. Jon Sterling 2025 3 25 https://www.forester-notes.org/JVIY/ JVIY /JVIY/ What about access control? Forester does not currently support any kind of access control, but this is indeed an important area that we are considering carefully in order to enable institutional use of Forester, and ease the burden of collaboration in the usual case of a forest that contains a mixture of data with varying levels of confidentiality. I believe that the current design is compatible with essentially any approach to access control that we might adopt, but I am interested in feedback to the contrary. Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOJ/ OYOJ /OYOJ/ Towards Forester 5.0: a design for global identity As we move closer to Forester 5.0, which introduces rudimentary federation capabilities, we must address new problems that did not arise in the days when no two forests interacted or linked to each other. The most immediate issue is that trees describing entities with “global” identity (including actual people as well as bibliographic references) will naturally be duplicated across many forests. For example, this happens when one person authors trees in multiple forests, and it happens even more often with bibliographic entries (both for the entries themselves and their author attributions). It is very important to handle this problem properly now in a way that (1) minimises friction and (2) enables us to quietly evolve toward more Web-centric approaches to identity as they emerge. Below, I survey some existing approaches to identity that we would hope to be compatible with at some level. If you want to skip to my concrete proposal, see § . Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOL/ OYOL /OYOL/ Survey of global identification schemes There are several extant schemes for identifying individuals, organisations, and artefacts. Some are centralised, and others are decentralised. Centralisation of identity is not necessarily a bad thing, but it is most viable when nearly everyone agrees on the central authority; on the other hand, decentralisation can help in situations where a single central authority has not accumulated enough trust or prestige to be viable. Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOM/ OYOM /OYOM/ Centralised identification via DOIs and ORCIDs Nearly every scholarly paper and book published has a Digital Object Identifier (DOI) assigned to it, which are managed by a single authority (The DOI Foundation); this applies to both traditional publishers and eprint servers like the arXiv. Services like Zenodo allow individuals to mint their own DOIs and pin resources and artefacts to them. Due to their widespread adoption, DOIs are a completely viable way to identify published papers and books—and I would argue that any attempt to replace DOIs with a decentralised identifier is likely to be counterproductive as the goal should not not be decentralisation per se but rather to have a reliable, universal way to refer to scholarly content and artefacts. What DOIs do for artefacts, the Open Researcher and Contributor ID (ORCID) aims to do for people acting within the framework of open science. ORCIDs seem to do their job well, but not everyone has or should have an ORCID—nor would every person who does have one voluntarily choose to pin their entire identity to it. Therefore, although I happily use them, I think ORCIDs are likely to face more of an uphill battle than the DOI—which needed buy-in only from major publishers and eprint servers to reach hegemony. Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOK/ OYOK /OYOK/ Informal decentralised identification via web addresses A particularly simple way to identify a single person or organisation is by means of a web domain or an email address. Although not everyone has a domain name, many people have email addresses. On the other hand, people often have many domain names and their email address may change over time; and when people die, their presence on the web is often erased or lost. Therefore, although widespread, this approach may create difficulties with longevity and stability. Jon Sterling 2025 3 8 https://www.forester-notes.org/OYON/ OYON /OYON/ General-purpose decentralised identification via DIDs When reading about the paper of Klepmann et al. outlining Bluesky’s AT Protocol, I learned of Decentralised Identifiers (DIDs). In essence, DIDs are URIs of the form did:method:path where method identifies how the DID is intended to be resolved and path is a colon-separated path that should be resolved by means of that method. In either case, a DID is intended to be resolved to a JSON document that contains information about the resource or entity being described, as well as various methods (like public keys) for verifying the integrity of that information. The methods are somewhat open-ended, but two important methods have emerged. Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOO/ OYOO /OYOO/ W3C’s did:web method W3C have specified the did:web method, which in which the path is intended to be a web domain. Simplifying somewhat, a DID like did:web:jonmsterling.com would be substantiated by responding to the HTTPS request https://jonmsterling.com/.well-known/did.json with a document in the appropriate format. The upside is that the owner of a web domain is their own identity authority; in this sense did:web is a truly decentralised identification scheme. The downside is that you have to have a web domain, and you also can never change it ever—the same disadvantage of informal decentralised identification which we have discussed. Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOP/ OYOP /OYOP/ Bluesky’s did:plc method For a social network like Bluesky, it is critical that users be able to migrate their identity from one domain to another. Obviously users may change or lose their domain over time, but it is important to keep in mind that the vast majority of users will never have their own domain and so they will over the course of their lives jump from one subsidiary domain that they don’t control to the next—just as Mastodon users are constantly migrating from instance to instance, driven to wander endlessly by either the petty tyranny of instance maintainers who think they know best, or by the natural quiescence of instances caused by lack of funds or time, or (in many cases) a combination of the two. It seems that there is no way to address this problem without introducing some central authority—a directory of permanent identifiers that are then resolved to documents that establish cryptographically verified bidirectional links with more ephemeral and human-readable forms of identification (such as web domains). This is essentially the design of Bluesky’s did:plc method, as explained by Klepmann et al.: On your own domain, which serves as your (ephemeral) handle, you place a DNS TXT record or file that contains a DID like did:plc:asdlkfh9q8034baliufhbcailurb. Someone resolves this DID to a document by querying a central directory server (such as Bluesky’s own). This document contains a link back to the domain; signatures are used to ensure that every update to the document has been authorised by whoever signed it when it was first minted. Although some centralisation is required here, the use of cryptographic proof ensures that the central authority does not need to be trusted (to a certain extent). Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOQ/ OYOQ /OYOQ/ Analysis of global identity in Forester Although Forester aims to become a better citizen of the Web and integrate with emerging protocols, it is a non-negotiable design constraint that Forester still remain usable by people who don’t control a domain name, cannot run software on their web host, cannot set DNS records, and could not care less what a DID is. I also have a feeling that there will not be a single protocol that fits all use cases; what I am noticing, however, is that there are commonalities to all the protocols, and that we ought to be informed by these commonalities. For example, in every case an identity is resolved from a URI of some kind—for example, DIDs and DOIs and ORCIDs all have canonical URIs. Therefore, it strikes me that Forester’s approach to global identity must rest on the axiom that an identity is nothing more or less than a URI; we can place no constraints whatsoever on what form this URI takes, and we should also remain flexible as to compatibility with future replacements of URIs (whether in the form of IRIs, or the URL non-“standard”, etc.). If we start from that point of view, there some problems to address: Even if an identity is not canonically addressed by a tree in a forest, an identity still often needs to have a tree in the forest. One wants to store biographical and bibliographic information, and maybe even personal notes, etc., and at the very least it is very important to be able to browse backlinks on a biographical page even if the page itself has no content of its own. Not only must we be able to attach a tree to an identity: we must be able to attach many trees to an identity. This is a requirement of federation. Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOR/ OYOR /OYOR/ A plan for global identity in Forester Building on my analysis, I propose that Forester allow any tree to declare that it “describes” a given global identity in the form of a URI. At a first cut this can be done via datalog (but we would probably hide this behind something): Now it remains to explain how we shall surface the fact that a given entity is described by some tree. For any identity in this relation, we should automatically create a “disambiguation page” that transcludes all the attached trees. When a hyperlink points to a URI that lies in this relation, it should be directed to the disambiguation page. There are further implications for such a feature—for instance, in the future we might automatically populate bibliographic information, etc. (But we have to be careful due to the near-universal unusably low quality of bibliographic databases keyed by DOIs, etc.) We will need to provide guidance as to how identities should be assigned to (e.g.) people who don’t control an online identity, etc. The rule of thumb should be that we always defer to the preferences of the described person, and to the version of record in the case of an artefact. When there is no canonical choice, users of Forester should do what they like, but they should be willing to update their references in the future should a canonical global entity emerge. Jon Sterling 2025 3 8 https://www.forester-notes.org/OYOS/ OYOS /OYOS/ Request for comment I am hoping to hear other people’s thoughts on this proposal, including any constructive criticisms or suggestions for how we might go about implementing it. You can write to me or the mailing list with your feedback. Jon Sterling 2023 5 14 2024 4 25 2025 5 26 https://www.forester-notes.org/0052/ 0052 /0052/ Build your own Stacks Project in 10 minutes The Stacks project is the most successful scientific hypertext project in history. Its goal is to lay the foundations for the theory of algebraic stacks; to facilitate its scalable and sustainable development, several important innovations have been introduced, with the tags system being the most striking. Each tag refers to a unique item (section, lemma, theorem, etc.) in order for this project to be referenceable. These tags don’t change even if the item moves within the text. (Tags explained, The Stacks Project). Many working scientists, students, and hobbyists have wished to create their own tag-based hypertext knowledge base, but the combination of tools historically required to make this happen are extremely daunting. Both the Stacks project and Kerodon use a cluster of software called Gerby, but bitrot has set in and it is no longer possible to build its dependencies on a modern environment without significant difficulty, raising questions of longevity. Moreover, Gerby’s deployment involves running a database on a server (in spite of the fact that almost the entire functionality is static HTML), an architecture that is incompatible with the constraints of the everyday working scientist or student who knows at most how to upload static files to their university-provided public storage. The recent experience of the nLab’s pandemic-era hiatus and near death experience has demonstrated with some urgency the pracarity faced by any project relying heavily on volunteer system administrators. Jon Sterling 2023 5 14 https://www.forester-notes.org/0053/ 0053 /0053/ Introducing Forester: a tool for scientific thought After spending two years exploring the design of tools for scientific thought that meet the unique needs of real, scalable scientific writing in hypertext, I have created a tool called Forester which has the following benefits: Forester is tag-based like Gerby, and can therefore power large-scale generational projects like Stacks and Kerodon. Forester produces static content that can be uploaded to any web hosting service without needing to run or install any serverside software. Forester is easy to install on your own machine. To prevent bitrot, Forester is a single tool rather than a composition of several tools. Forester satisfies all the requirements of serious scientific writing, including sophisticated notational macros, typesetting of diagrams, etc. Forester combines associative and hierarchical networks of evergreen notes (called “trees”) into hypertext sites called “forests”. Jon Sterling 2023 3 4 https://www.forester-notes.org/tfmt-000R/ tfmt-000R /tfmt-000R/ Forests and trees of evergreen notes Definition A forest of evergreen notes (or a forest for short) is loosely defined to be a collection of evergreen notes in which multiple hierarchical structures are allowed to emerge and evolve over time. Concretely, one note may contextualize several other notes via transclusion within its textual structure; in the context of a forest, we refer to an individual note as a tree. Of course, a tree can be viewed as a forest that has a root node. Trees correspond roughly to what are referred to as “tags” in the Stacks Project. In this article, I will show you how to set up your own forest using the Forester software. These instructions pertain to the Forester 5.0 version. Jon Sterling 2023 8 13 https://www.forester-notes.org/006R/ 006R /006R/ Preparing to run the Forester software In this section, we will walk through the installation of the Forester software. Jon Sterling 2023 8 13 https://www.forester-notes.org/006S/ 006S /006S/ System requirements of Forester Jon Sterling 2023 8 13 https://www.forester-notes.org/006T/ 006T /006T/ A unix-based system Requirement Forester requires a unix-based system to run; it has been tested on both macOS and Linux. Windows support is desirable, but there are no concrete plans to implement it at this time. Jon Sterling 2023 8 13 https