BLACKOUT PERMASCROLL MASKING in Xanadu Purple
This supplements PscrLogic-D10, "Permascroll Logic and the Duality of Addressing."
Theodor Holm Nelson, Founding Designer
XanaduÆ is a registered trademark of Project Xanadu. Xanadu Purpleô and TransLitô are claimed trademarks of Project Xanadu.
PERMANIZING USER CONTENT
Xanadu uses only content with stabilized addresses. Therefore 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.
It is desirable to have a simple permanizing method for managing these addresses.
Xanadu Purple provides a simple default mechanism for both, simultaneously-- permanizing content addresses for the user (internal addressing) and when published (external addressing).
PUBLISHING A SUBSET OF THE AUTHOR'S INPUT
An author does not necessarily want to reveal all the characters privately typed. Permascrolls are a way of handling this.
PERMASCROLLS IN GENERAL
A permascroll is an append-only file whose contents retain their addresses. It can be public, private, or both (as in the method to be described).
- a private permascroll is seen only by the user (or a user team).
- a public permascroll may be accessed by anyone.
The problem is reconciling the two sets of addresses.
There are various permascroll methods (see PscrLogic-D10).
Some generate a first (author's) address, then convert it to a second (publishing) address.
Any method that stabilizes both sets of addresses interchangeably is acceptable. The method described below, however, is particularly simple, and may satisfy the average user (if we ever have one).
THE PRIVATE PERMASCROLL IN GENERAL
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.
Further specific rules of the Xanadu Purple private permascrolls are given in the Appendix, below.
PUBLIC PERMASCROLLS IN GENERAL
The public permascroll is a public sourcefile which may be used for many purposes by different authors and users. Thus its addresses must be stable. If it is a permascroll, then it may be appended to; the issues are how and when.
THE BLACKOUT METHOD: MASKING THE PRIVATE CHARACTERS
The following permascroll method is called the blackout or masked permascroll.)
This is to be the standard default method of Xanadu Purple.
It redacts the private characters in place.
The masked permascroll has the advantage that the two addresses, internal and external, are the same: the address of a character when first typed becomes an address that can be referenced even after the document is published.
Stage 1: PRIVATE INPUT
Everything the user types is appended to the permascroll (note particular rules in the Appendix).
Typed user input is received by the Edit module, parsed into consecutive strings as received, and passed to the Permascroll module, which appends them to the permascroll.
When edited by Xanadu methods, it is rearranged and manipulated virtually by EDL.
Links are given endsets in this address space.
Stage 2: CONVERSION TO PUBLIC PERMASCROLL (Blackout method)
When the user publishes any content from the private permascroll, a redacted partial copy of the private permascroll is placed on the user's publication server as a file of type .txt. It has the same length as the private permascroll and corresponds to it character-by-character.
All characters NOT published are replaced by a nonsense character (one selected particular nonsense character).
Any reader requesting a span of content whose addresses include private characters receives the nonsense characters specified by the spanpointer, instead of the private ones.
INTERNALS OF THE BLACKOUT METHOD
In the user's private space, 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; the pubchar may be redundantly overwritten on top of pre-existing pubchars.)
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.
=== ALTERNATIVE PUBLICATION METHODS
Users may vary or opt out of this permanizing system; it is provided for convenience.
Users may contrive other methods for permanizing and addressing content. This is a simple one.
Other permanizing methods are possible that use a first address (internal) for private content and convert it to a second address (external) for publication.
However, in Xanadu publishing, it is necessary for all content to have a permanent addresses, and for all EDLs and links to refer to those permanent addresses.
A user wishing to opt out of the permascroll method must choose a way to assign permanent addresses to content, and then to make the EDLs and links match up.
We may provide such mechanisms at a later time, but the default method of the blackout permascroll will be the first such mechanism supplied.
=== OTHER USES OF THE SHADOW-FILE MASKING PROCESS
Other private (or copyrighted) sourcedocs can be redacted the same way. We will endeavor to provide redaction routines at a later time.
=== === === APPENDIX: FURTHER DETAILS OF PRIVATE PERMASCROLLS IN XANADU PURPLE
= IT'S ONLY FOR USER TYPING
A permascroll is intended only for a user's own typed content as it accumulates. It is initialized when a user first begins to use Xanadu and does not transclude from other documents.
All content from other sources should be handled as transclusion from other sourcedocs.
To support this philosophy, the "paste" operation into the permascroll is not supported.
= DIVIDING CHARACTER
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.
= THE BACKSPACE ISSUE
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.
Similarly, cursor repositioning within a consecutive block-- e.g., typing a sentence and then making an insertion within that sentence-- need not be registered as a separate span, but may be received altogether in their intended position.