No activity today, make something!
eekim Tank Granular Addressability

20140330164156 eekim  

Why doesn't Tank have finer-grained addressability (than Tiddlers)?

Chris's Explanation

On G+ @eekim asks "Curious: Why no granular addressability?" I responded there with the short answer: "Because it is a complicated rabbit hole."

I'll try to write a bit more detail here:

Some of the various conflicting factors, conflicting in various ways are:

  • It's never been particular clear that people who don't already want granularity ever will. As such it is a hard UI/UX nut to crack.

  • There are multiple competing ways to implement, none of which have proven to be absolutely superior:

    • The PurpleWiki way of putting markup for nids in the origin text. The current editor is expected to leave these alone while editing if they are already there and expects to have them added if they are not already on blocks. Some people find this perfectly natural, other people don't care and still others hate it.

    • Adding to the rendered text, client side, using hashing of the text of the blocks. This is how I've done it on my space on TiddlySpace and is resilient in the face of blocks moving in the same document but is not in the face of edits nor in the face of content moving between documents. (Note, this method was somewhat inspired by Kragen's notion of queer numbers.)

    • Smark, block-based, editors which presents a single document but processes nodes. I've not seen this implemented in a truly granular way but there have been various efforts.

    • Some sort of out of band metadata which "knows" how to granularize an associated document.

  • There is debate over whether ids should persist across (minor) changes in nodes. That is, does the id belong to the node in the document (at HEAD) or should it be associated with the node at a revision. My feeling is that the latter breaks the synthetic power of the granularity, but there are people who very much disagree.

  • There has been some discussion that breaking a tiddler, which is already supposed to be "microcontent", into smaller pieces works against the tiddler concept (which is supposed to encourage composition from parts and decomposition into parts).

  • When you have granularity, what do you store? Document? Singular nodes? Graph of nodes? Back in the Purplewiki days I tried much of this without a solid outcome.

  • All the usual UI questions.

At the moment my take is that in the absence any clear path to a purple style of granularity the right thing to do is enhance the transclusion and extraclusion features to make it easier to create granularity, and then determine best ways to expose it.

As things stand the Markdown render is set up to put anchors on any header element. The markup for transcluded content could be adjusted to provide the same. Then the UI could make those anchors visible for linking.

This misses out many of the reader-side benefits of content agnostic granularity but still provides some.

Screw Persistence!

Chris's explanation assumes some level of persistent identifiers and all of the complexity that stems from that (including handling versioning).

I agree on some level with this reasoning. It's 2014. If you can't integrate persistent identifiers (even the simple, PurpleWiki kind) into the editing experience, it's probably not worth doing. Having the identifiers in the markup is a usability challenge you don't want to be dealing with in this day and age.

However, why not simply implement structural identifiers?

One of my realizations in working with Augment and the HyperScope was that folks at ARC used structural identifiers all the time, much more so it seemed than nids. It should be easy to implement without mucking up the editing experience, and it's possible that social systems will evolve to work around the crufty issues that will result from lack of persistence.

I think the value of having some kind of granular addressability outweighs the lack of persistence. The discussion on this page is the perfect example. I want to respond to specific points in @cdent's page, but instead, I have to transclude the entire page.

Medium has fine-grained commenting capabilities. I would love to see something similar except based on transclusion. For example, I would love to see a little comment icon next to a point in Chris's page that, when you clicked on it, showed the paragraph where it was mention on this page, and allowed you to click through for more context.