As I'm building out the design and model of Scarlett (which seems dangerously likely to get renamed 'Notesmachine' at the rate I'm going), I've hit one of those architectural things that annoys me. Allow me to ruminate on the problem.

As mentioned in the previous post, the traditional organization of any notes system is that of the Forest; each Box contains notes, some of which are the roots of trees, and the rest of which are nodes of the tree leading to leaves, which are notes that have no descendant notes.

On the other hand, I have interests that are orthogonal to that design. Let's take them in order:

Tree arrangement

The biggest selling point of the tree arrangement is that it's possible to say that if I take a note and move it to another page, all of its children come with it. This works as long as the tree is maintained on the server; it's as simple as telling the note that it has a new "parent," and that parent could be on the same page if you were just re-arranging the page to suit your interests, or it could be a note on a different page.

This arrangement makes the basic Roam / Evernote / Ginko setup possible, even straightforward. But it's incompatible with another layout:

Spatial arrangement

In a spatial arrangement, all notes belong to the box, but the "box" is more like a board: each note is positioned in a three-dimensional space, the X and Y indicating where on the board it goes, and the Z indicating that if two cards intersect, which one should be "on top" of the other in presentation.

This sort of data structure would have to be maintained on the server; only the server could, long-term, maintain a coherent view of "This note belongs to this board

The spatial arrangement could be parallel to and independent of the tree arrangement, but that begs the question: what happens if you move a whole bunch of notes onto a different page? What happens to the spatial arrangement? How do you communicate the presence of these notes on the target page?

Notes in Multiple Places

The original design for Scarlett is that notes could be in more than one place; it wouldn't be necessary to manually copy notes from one page to another. You could just say, "Take this note and add a pointer to it to another page," and the note would magically appear on both pages. Even better, the notes could be annotated so that edits would (a) not be possible unless you were on the "parent" note, (b) be possible anywhere, or (c) become part of the note's history. That last one is beyond the current design, but it's possible. I'm not sure how this plays out in terms of the overall design, but it's still something I'm thinking about.

This will require some thought. But I think that, for all my brooding, this is the correct pair of relationships: notes as nested collections in a box, and notes as things pinned to a bulletin board.