dlitClientSpec-D9 ===04.05.28 CLIENT SPEC FOR DEEPLIT(tm) CONTENT LAYER [former title: CLIENT SPEC FOR DEEPLIT(tm): DEEP LITERARY DOCUMENTS] trans(c)Theodor Holm Nelson, Ph.D. Fellow, Oxford Internet Institute Visiting Fellow, Wadham College, Oxford Visiting Professor, University of Southampton Senior Fellow, McLuhan Program, Univ. Toronto Project Xanadu http://ted.hyperland.com http://xanadu.com email tandm.xanadu.net ===OBJECTIVES OF THIS SMALL PROJECT JUST PART OF THE IDEA, BUT WORKING-- Usable system Demonstration of principle Nothing hierarchical (matter of principle) Extreme simplicity of structure Extreme simplicity of interface ===PROBLEMS WITH PREVIOUS STUDENT ATTEMPTS (Great enthusiasm, intelligence of students) Too many student ideas Unforch didn't work (also customer [TN] didn't like the student designs) Political context not made sufficiently clear by customer [TN] NOT ENOUGH CLARITY BY CUSTOMER [TN] Too much leeway This time I am going to be much more specific. ===OVERVIEW OF DEEPLIT We came before the Web, and we mean to fix it. The DEEPLIT project continues a long and honorable tradition: a quest for documents with deep structure of interconnection to their origins. It descends from the Xanadu project, which required a very different kind of URL and very different unifying conventions, even though its design was not centralized. DeepLit maps the same ideas to today's very different decentralized Web conventions. DEEPLIT is the opposite of conventional electronic documents. The conventional computer "cut" and "paste" lose the connections from content to its origin. DEEPLIT proposes completely different structures for virtual documents (either on line or local), deeper and more powerful than presently available-- - 2-way links with types, profuse and overlapping - selectable overlays, publishable by anyone - legal reusability of content by anyone - ease of legally quoting other documents, staying connected to the origin - different structurings existing simultaneously for same content and much more. The building block is the virtual text stream, distributed as a list of span addresses. A client program sends for different portions of text and these are concatenated into a single stream of text. UNFORTUNATELY Web browsers cannot send for multiple portions of text from different origins, though they often send for multiple pictures to composite a single page. This is simply a tradition which reflects the way the creators of the Web (Berners-Lee and Andreessen) think, as well as the traditions of document structures like those of Microsoft Word. UNFORTUNATELY the traditional document structures, like those of Microsoft Word and HTML, insist on packaging up all their text content into a single file. These conventional electronic documents, we believe, are all wrong for human work, creativity, scholarship and copyright. We want to fix it. Still. ===FOCUS OF THIS PROJECT (For the overall design of DeepLit, see Appendix A.) We focus our attention on delivering and showing virtual streams. A virtual stream (vstream) is delivered as a list of pieces or portions. These pieces are sent for (fulfilled) by the browser and put together (concatenated) into a readable form. Each piece retains its original identity, byte by byte (home addresses), but at the same time each byte has an address local to the document (vstream address). This must be done client-side. Moreover, it should open in a Web browser, which is a difficult constraint: each brand of browser requires a different and demanding plug-in structure. However, we see a way around this. OUT-LINKS AND 2-WAY LINKS: Out-links and 2-way links must be handled in an overlay layer, along with decorations and structure comparable to the other Web functionalities. ===FILE TYPES AND SUFFIX NAMES (required by Windows) These suffix names are currently tentative. .vlst Virtual Version List. This is an address list of portion to be spliced into virtual stream. This contains one or more span addresses, local or remote. SIMPLY A LIST OF SPAN ADDRESSES WITH NO OTHER STRUCTURE MUST BE AN ACCEPTABLE .vlst FILE. .vhtm? [tentative] file compiled by DeepLit client and recognized by browser as HTML through its internal label. .over? .olay? [tentative] [not needed in this client project] overlay (links, structure, decoration) .opls? .dops? .vops? [not needed in this client project] oplist-- list of operations leading to a specific microversion. ====THE DEEPLIT CLIENT DeepLitClient is to be a free-standing program - to be written in Python (i.e., DeepLitClient.py) -- highly-respected language -- "unlike Perl, you don't feel dirty the next morning" -- Eric Raymond, Open Source theorist -- should work cross-platform cleanly =THE INTENDED EFFECT (without additional features) Anyone may create a .vlst file and create a link to it from an HTML page, just like a link to an HTML page. If you click on such a link, IT WILL OPEN LIKE A WEB PAGE-- - the .vlst file will download - the different portions will be sent for - the resulting page will open in a browser - you can instantly see the borders of the portions (right-click the mouse) - you can instantly send for any of the original pieces to see or use the original context. (click undecided) =HOW IT WORKS (in Windows; Mac & Linux should also work but with other details). The following method bypasses the difficulty of doing plug-ins for the different browsers, but should work cross-platform. (Andrew Pam of Xanadu Australia has confirmed this.) [ADDED 04.05.27: 00. User pre-downloads "DeepLitClient.exe" and places it in some appropriate directory. Or we make it an Installer.] 0. User clicks on a link to a file of type .vlst, a list of address spans (local or universal) 1. As with .pdf and Acrobat, Windows asks whether to save or open. Assuming user chooses "open"-- 2. the virtual list file of type .vlst is downloaded. 3. Windows asks what to open it with. [ADDED 04.05.27: There may be a way that our app can be downloaded with a browser dialog instituted on the fly from a click, like Acrobat or RealPlayer.] 4. User selects "DeepLitClient.exe". [CHANGE 04.05.27: HAS TO BE "DeepLitClient.exe" rather than "DeepLitClient.py" because of Windows requirements.] This is only necessary once, since Windows will then associate the .vlst file with this program. 5. DeepLitClient.exe [CHANGE 04.05.27: HAS TO BE "DeepLitClient.exe" rather than "DeepLitClient.py" because of Windows requirements.] does the following-- - opens the file - sends for the individual portions; if there is no portion server, - it can select individual portions from full documents. WARNING: this may involve copyright violation, so we must warn against it. - COMPILES AN HTML PAGE OF THE RESULTING VSTREAM (one font only, no decorations, no links). This is for both political and ideological reasons. - OPENS A BROWSER WINDOW TO SHOW THIS HTML PAGE. - handles error conditions-- -- address not available -- invalid address -- file not of required type ===SOME DETAILS OF THIS USE OF THE WEB BROWSER - SCROLLING. Use of HTML provides scrolling directly. - TITLE. We compile the document's title (if known) to the frame title of the HTML page. (Title specs to be discussed.) - URL. Because the URL would show a local file address, we hide the URL line that would normally show above the HTML page. (As well as its suffix, which we don't want the user to see.) - RIGHT-CLICK TO SEE SEGMENT BORDERS. [MODIFIED 04.05.27: CAN BE A KEYSTROKE TO SEE SEGMENT BORDERS, due to difficulties with Javascript. /phone call 04.05.26 This is done by a Javascript command, which tells DeepLitClient to send in a view with segment borders-- actually an alternative compilation of the same content. (This seems the simplest way.) Since there is no way to draw boundary lines, each segment of text now has a different background color. This alternative view should have exactly the same spacing and appear in exactly the same character position that the user is pointing at. Releasing the right mousebutton flips back to the seamless view. - CLICK TO JUMP TO ORIGINAL. This Javascript command calls DeepLitClient, which looks up the address and sends for the page in a new browser window. In addition, if the contents come from the Eprints server, a marked image showing the boundaries of the quoted content can be sent for. =SLIGHT DISADVANTAGES OF THIS METHOD These we fix later. - The browser will show the warning "You are about to download a file of type .dlit", which takes away from the smoothness of the experience. - We can't show a URL in the browser URL line. (We COULD compile a fake URL window at the top inside the compiled URL. Would be stupid but possibly fun.) =ENHANCING THIS APP AS A PROXY - skip the visible "download" step - be able to show the URL - create for DeepLit a different kind of "save as", which can maintain both the portions or the full source documents for re-use under VLIT. ==> Note that this has important implications for our proposed copyright method. - allowing URLs that can open the fulfilled Vstream at any position, to open at that position as if it had an embedded HTML anchor. (This will need to be a client extension.) These will be incoming equivalents of 'anchors' that can be handled by the URL and its interpretation in the client. APPENDIX A ========= ========= ========= ========= ========= ========= ========= ========= ===OVERALL DEEPLIT SYSTEM DESIGN =DEEPLIT DOCUMENT STRUCTURE DEFINED A deeplit document/docuplex consists of-- - A CANONICAL NAME - A VERSION ID for branching microversions (optional) - ONE OR MORE VIRTUAL STREAMS (vstreams) - ZERO OR MORE OVERLAYS (built of zzstructure) We have discussed only the third of these here. =OPERATIVE PARTS OF THE SYSTEM-- THIS PROJECT: 1. A DEEPLIT CLIENT that brings in content from various sources and concatenates them into one long virtual text stream. Showing it in a Web browser will help it be perceived as a "new Web format". NOW AVAILABLE: 2. PORTION SERVER OR TRANSPUBLISHING SERVER, a server that delivers portions of text content to work with this DeepLit client. (NOW AVAILABLE.) This is the Eprints server from eprints.org, which is in wide use. The transquotable features have been put in at my request; see ted.hyperland.com/ and click on "Way Out of the Box," or go tohttp://ted.hyperland.com/TQdox/zifty.d9-TQframer.html NOT YET: 3. EDITOR for the .vlst format, outputting an address list after editing preexisting content by transclusion. This has been prototyped in Japan (as the OSMIC project at Keio University) and is very simple in principle. Our design - edits multiple Vstreams - places new content in append-only permanent files (permascrolls) - allows stepping to every virtual step (microversion) in every Vstream, and going on from there - drag'n'drop other files that might also work as .vlst - manage cache structure with original contents and their addresses NOT YET: 4. OVERLAY STRUCTURES that work with virtual streams, adding - links - structure - decoration to create the equivalent of HTML and other Web formats, but built on transcluded content. This requires further enhancements of DeepLitClient. NOT YET: 5. PERMAPUB(tm), a service for on-line publishing that charges a flat fee for fifty years' availability. NOT YET: 6. HYPERCOIN(tm) micropayment system for small quotations. APPENDIX B ========= ========= ========= ========= ========= ========= ========= ========= ===USING EPRINTS SERVER TO MAKE SAMPLE .VLST FILE (see ted.hyperland.com) To create sample .vlst files using the Eprints server, we actually need the text delivery mode. Try the portion selection methods at ted.hyperland.com. They return a page showing URLs for the selected fragment. Currently the URLs are incomplete. Compare the following =AS NOW DELIVERED: Human readable (HTML): /archive/00000011/01/zifty-d9.txt?xuversion=1.0&locspec=charrange:3348/201&mode=human This does not show the full URL. =WHAT YOU HAVE TO MAKE IT http://tprints.ecs.soton.ac.uk/archive/00000011/01/zifty-d9.txt?xuversion=1.0&locspec=charrange:3348/201&mode=human =AS NOW DELIVERED: raw chars /archive/00000011/01/zifty-d9.txt?xuversion=1.0&locspec=charrange:3348/201 =WHAT YOU HAVE TO MAKE IT http://tprints.ecs.soton.ac.uk/archive/00000011/01/zifty-d9.txt?xuversion=1.0&locspec=charrange:3348/201 =SAMPLE MINIMAL .vlst DOCUMENT http://tprints.ecs.soton.ac.uk/archive/00000005/01/seclife.txt?xuversion=1.0&locspec=charrange:1942/879 http://tprints.ecs.soton.ac.uk/archive/00000011/01/zifty-d9.txt?xuversion=1.0&locspec=charrange:3348/201 =30=