Theodor Holm Nelson, Founding Designer
XanaduÆ is a registered trademark of Project Xanadu. TransLitô is a claimed trademark of Project Xanadu.
= PERMANIZING USER CONTENT
Xanadu Purple provides a simple default mechanism for permanizing user content addresses. (Users may vary or opt out of it.)
Users may contrive other methods for permanizing and addressing content. This is a simple one.
It is necessary to give newly-typed content a stable address for the author's further use, and to provide a permanent publication address for that content.
We need a simple, extensible method.
Other methods are possible that use a first address for private content and convert it to a second address for publication.
THE MASKED PERMASCROLL
The masked permascroll has the advantage that the two addresses are essentially the same: the address of a character when first typed becomes an address that can be referenced even after the document is published.
A permascroll is intended only for a user's own typed content as it accumulates. It is started when a user first begins to use Xanadu and does not transclude from other documents. All content from other sources may be handled as transclusion from other sourcedocs.
To support this philosophy, the "paste" operation into the permascroll is not supported.
(Note that this particular permascroll method is called the masked permascroll, or permascroll masking.)
= Stage 1: THE PRIVATE PERMASCROLL
Every character the user types is appended to a single file (or, as it grows, series of files. (We will refer to them collectively as the permascroll.) These are of type .pscr to discourage their accidental change.
Each character retains its address within the file at all times, though the file is transposable to other directories.
Their content is private to the user's client system.
(A dividing character is placed on the permascroll between consecutive input streams. This is for readability, should the user actually look at the permascroll, although this is not expected to happen often.)
(Characters eliminated by backspacing during a consecutive typing stream are not stored. Each movement of the cursor to a new input position defines the beginning of a new consecutive typing stream.)
=== Stage 2: PUBLIC PERMASCROLL
If the user publishes any document using content from the private permascroll, a redacted copy of the permascroll is placed on the user's publication server as a file of type .txt. All characters NOT published are replaced by a nonsense character (the same particular nonsense character).
=== MASKING THE CHARACTERS FOR PUBLICATION
An author does not necessarily want revealed all the characters privately typed.
Various masking methods are possible. Some give a first address, convert it to a second...
These are all acceptable.
However, as our standard default method ...
I think the simplest method is this, which redacts the private characters in place.
The simple method is this:
- The permascroll has a sister or shadow file, the permask, with the same number of characters.
- Every character in the permask has a "Published" character (pubchar) to show whether the corresponding character in the permascroll has been published yet.
- When the user publishes a new document, all published characters in that new document are scanned, and a pubchar placed in the permask in correspondence to each published character. (Whether they are already published need not be checked, placing the pubchar is redundant. Pre-existing pubchars are not affected.)
The Publish routine creates a new public permascroll by copying characters of the permascroll in sequence--
- if published, putting the character openly into the public permascroll
- if not published, placing the nonsense character on the public permascroll instead
This transfers all newly-published content from the private to the public with the same address in the file.
=== OTHER USES OF THE MASKING PROCESS
Other sourcedocs can be redacted the same way.