xuPurple-D6
=== 12.09.12
XANADU PURPLE OPEN DEFINITION (preliminary)
(We assume the reader already knows our basic concepts; this enumerates and specifies the current version.)
Theodor Holm Nelson, Founding Designer
Project Xanadu
XanaduÆ is a registered trademark of Project Xanadu. TransLitô is a claimed trademark of Project Xanadu.
This is an open definition of the current Xanadu software design. Anyone is free to program to these specifications. It is a simplified version of earlier Xanadu systems, designed to work in today's file and network environment without the special servers or addressing of its predecessors, but also without their special search abilities.
UNDERSTANDING THE NAME. Predecessors of this name include--
- Xanadu Green (also known as Udanax Green or Xanadu 88.1), designed in 1979, and still underway under open source at Udanax.com
- Xanadu Gold (also known as Udanax Gold or Xanadu 92.1), designed in 1988-92, and archived at Udanax.com
Xanadu Purple is a simplified and adapted version of Xanadu Green.
TRADEMARKS. We reserve the XanaduÆ trademark for our own code and services, and Transliteratureô or TransLitô for the document subset.
(We considered making "TransLit" a certification mark, but found that process far too complicated and uncertain.)
THE DOCUMENT SUBSET-- TRANSLITô. The designation "Translit" refers to the data subset of Xanadu Purple which defines the Xanadu document (xanadoc). We want to assure document compatibility with Xanadu Purple, without regard to storage, methods of creation, publication policies, etc. It is intended to allow people--
- to open and view xanadocs
- to create xanadocs by their own chosen means
- to publish xanadocs by their own chosen means and under policies of their own
Translit thus consists only of--
- document definition
- file types required for this document definition
Others are free to program to TransLit specification, but may not call it TransLit. If you want to point out the compliance of your code, we ask you to say instead:
This is intended to be an implementation of the TransLitô document specification. [and any other comments on compatibility, etc.]
Anyone wishing to program a viewer or editor for these documents by any means is welcome to do so.
THE FULL USER SYSTEM, XANADUÆ PURPLE. The designation "Xanadu Purple" is intended for our whole package of--
- user environment
- internal file types of the user environment
- versioning method
- publishing method
- user content stabilization method (permascrolls)
Others are free to program to this specification, but may not call it Xanadu. If you want to point out the compliance of your code, we ask you to say instead:
This is intended to be an implementation of the XanaduÆ Purple specification. [and any other comments on compatibility, etc.]
=== THE FUNDAMENTAL XANADU CONCEPT: STABILIZED CONTENT
A xanadoc is composed of stabilized content, meaning--
- the content does not change
- the addressses of the content never changes
In other words, all content remains available at fixed addresses that never change. This is not a technical issue but a political and policy issue, to which the Xanadu Project has its own solutions.
To create a xanadoc, you store the content separately and refer to it by EDL, links and ODL, which put together new arrangements and connections of that content.
Any change to a document is made by changing the list of its content, including pointers to new material.
New content is stored elsewhere under the same rules (for example, at the end of a file-- see permascrolls, below).
All the Xanadu and Translit designs are based on this concept.
=== === === TRANSLIT, THE DOCUMENT DEFINITION
TransLit is about a specific kind of document, the xanadoc, built from stabilized indirect content.
A xanadoc has five internal components, in various combinations:
- xanadocID
- EDL
- xanalink
- ODL
- stabilized content (what the other components refer to)
=== xanadocID
This identifies a xanadoc.
The xanadocID consists of three fields, the last optional--
- username (should be unique somehow)
- docID (does not change)
- microversion
The xanadocID identifies a xanadoc uniquely if a microversion is specified. If no microversion is specified, the latest version is assumed.
=== EDL (file type .xanedl, .xanadoc) -- SEE EXAMPLE AT END
The EDL, or Edit Decision List, specifies the content of a document. It is a list of content addresses.
EDLs may change as a document evolves.
=== XANALINK (file type .xanalink) -- SEE EXAMPLE AT END
A xanalink is a coupling among spans of stabilized content.
Xanalinks are not embedded.
LINK TYPES. There may be many link types. To avoid ambiguity, a link points to its type definition as well as its endsets. (SEE EXAMPLE AT END.)
A xanalink has one or more prongs or endsets. Each endset may in turn have any number of spanpointers to content.
A xanalink is a free-standing first-class object which is published as a separate file (if it is published).
Xanalinks, once published, are expected to remain published. A xanalink is removed from a document by changing that document's ODL.
=== ODL (file type .xanodl) -- SEE EXAMPLE AT END
The ODL, or Overlay Decision List, is a list of addresses of the links to be brought in to a document.
ODLs may change as a document evolves.
=== === === Translit USER CLIENT UNDEFINED
SCREEN APPEARANCE. We are saying almost nothing about appearance, since we do not simulate paper and thus any possible view is legitimate. (Under the motto WYSIWYNC, What You See Is What You Never Could.)
However, there are several key visualizations we recommend--
- side-by-side visible connection (when two xanadocs are connected, or a xanadoc is connected to a conventional document)
- link beams or straps for two-sided links
- propellers for multisided links
- transclusion beams or straps for two-sided transclusions
- propellers for multisided transcusions
=== === === XANADU PURPLE SPECIFICATION
Xanadu Purple is a text system-- a user environment for creating, studying and integrating xanadocs.
This means holding various structures, manipulating and maintaining them.
=== Xanadu Purple open definition: DATA FOR DOCUMENTS
Same as for TransLit, plus
- hypertime oplist, registering every edit operation (cumulative)
- permascroll, registering all user input
- caching of content from elsewhere
And the operations and conventions to make these work.
These are all discussed elsewhere.
=== Xanadu Purple Open Definition-- MODULES
DOCID module
new doct
open doct "show document"
step in document
EDIT MODULE
insert new or from clipboard
rearrange
INTERACTION module
handles screen presentations,
user input
and delivers edit ops to other modules
HYPERVERSION module
Oplist/ backtrack, sidetrack
version ID
Permascroll Module
-append edit
PUBLISH MODULE
opens content from
permacroll, makes it public
extended and newly- redacted permascroll
replaces old permascroll
on publishing site
links go to pub.site
edl, odl go to pub.site
=== THE ACT OF PUBLICATION:
The act of publication has a number of steps.
- The xanadocID is published, along with its current EDL and ODL.
- new links are published
New content is published as follows:
The public permascroll is updated
from the private permascroll, unmasking
any newly-published content.
This naturally includes--
- any new published content at the end
of the permascroll
- any newly-published content which was
previously lurking unpublished
at earlier positions in the permascroll
=== === === APPENDIX 1: SERVICES AND POLICIES
The official plan of Project Xanadu has always been to offer offer long-term storage and publishing services.
Xanadu publishing has several parts and concerns, especially long-term availability. (Content stabilization is not a technical issue; it is a policy issue, which is essentially political.)
If others replicate our software, we cannot, of course, control what they do about availability, but they will have to deal with these same policy issues.
=== === === APPENDIX 2: FILE TYPE SPECIFICATIONS
=== EDL
NAME OF FILE:
whatever.xanedl, whatever.xanadoc
CONTENTS:
xanadocID = whatever.microversion
spanpointer
spanpointer
spanpointer
...
=== XANALINK
(The link's creator and document of origin are defined by the xanadocID of the folder it's in.)
NAME:
whatever.xanalink
CONTENTS:
xanadocID = whatever.microversion
LINK TYPE = whatever
DEFINED AT = spanpointer
ENDSET 1= e.g. COMMENTED-ON
spanpointer
spanpointer
spanpointer
...
DEFINED AT = spanpointer
ENDSET 2= e.g. COMMENT
spanpointer
spanpointer
spanpointer
...
=== ODL
CONTENTS:
xanadocID = whatever.microversion
linkaddress
linkaddress
linkaddress
...
=== STABILIZED CONTENT
User permascrolls
Content from elsewhere, cached and stabilized
=30=
span: