twingle/doc/teps tep-0000.txt,1.1,1.2 tep-0104.txt,1.1,1.2
[email protected] Sat, 8 Mar 2003 08:45:53 -0700 (MST)
| Newsgroups | gmane.comp.cms.oscom.twingle.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvs/root/twingle/doc/teps
In directory alpha.oscom.org:/tmp/cvs-serv7041
Modified Files:
tep-0000.txt tep-0104.txt
Log Message:
Merging changes with Gregor
Index: tep-0000.txt
===================================================================
RCS file: /cvs/root/twingle/doc/teps/tep-0000.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** tep-0000.txt 8 Mar 2003 15:22:18 -0000 1.1
--- tep-0000.txt 8 Mar 2003 15:45:51 -0000 1.2
***************
*** 26,33 ****
100 Basic XUL wireframe
! 101 Type system
102 Model/view/controller architecture
103 Editor widget
! 104 Server discovery
105 Server-side support
106 Client-side databases in profile directory
--- 26,33 ----
100 Basic XUL wireframe
! 101 Server discovery
102 Model/view/controller architecture
103 Editor widget
! 104 Type system
105 Server-side support
106 Client-side databases in profile directory
Index: tep-0104.txt
===================================================================
RCS file: /cvs/root/twingle/doc/teps/tep-0104.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** tep-0104.txt 8 Mar 2003 15:22:18 -0000 1.1
--- tep-0104.txt 8 Mar 2003 15:45:51 -0000 1.2
***************
*** 1,5 ****
! TEP: 104
! Title: Server discovery
Version: $Id$
Last-Modified: $Date$
--- 1,5 ----
! TEP: 101
! Title: Type system
Version: $Id$
Last-Modified: $Date$
***************
*** 10,14 ****
--- 10,189 ----
Created: 07-Mar-2003
+ Abstract
+
+ Supporting many kinds of OSCOM servers, each capable of being
+ extended, will pose challenges for Twingle. This document proposes
+ a type system based on RDF and XBL.
+
+ Problem
+
+ Although the field of content management is becoming more mature,
+ there are still few standards and little agreement on definitions of
+ terms. This especially true in the OSCOM server projects, where
+ innovation remains rapid. For instance, even the basic ideas of
+ folders and documents have different names in the different OSCOM
+ server projects and different capabilities.
+
+ Some of the OSCOM server projects have extensible architectures as
+ well. Thus, different installations might have custom content types
+ defined that are unique to that site.
+
+ Twingle needs to accomodate this through a combination of addressing
+ issues and punting on issues.
+
+ Assumptions
+
+ The first step necessary is to find simplifying assumptions. In
+ this case, the major point is that Twingle can deliver 80% of the
+ value by focusing on 20% of the content type capabilities of
+ servers.
+
+ How? As long as the server can send back an RDF description of
+ every piece of content, and that RDF description contains a small
+ but important number of common metadata properties, then much of the
+ problem of efficient navigation can be addressed. With just this,
+ Twingle can provide the following benefits over current CMS user
+ interfaces:
+
+ o Working between sites
+
+ o Browsing a tree of resources without returning to server
+
+ o Having multiple resources open simultaneously
+
+ o Newer navigation paths, such as "twenty recent changes", "by
+ author", or keyword searches
+
+ The second assumption is that there are two common types that most
+ others are derived from: collection and item. Each of these will
+ contain a fairly common set of views that should be supportable by
+ any content type:
+
+ o Contents (for collections). Note that this will allow add,
+ delete (with multiple selection), rename, cut, copy, paste, etc.
+ All of these operations are fairly slow and cumbersome in web
+ interfaces. Twingle will do these quickly and asynchronously.
+
+ o Edit (for items)
+
+ o Preview
+
+ o Properties (for core metadata)
+
+ o Web manage (discussed in the next section)
+
+ Again, if it is true that all content types can easily support these
+ basic views, then Twingle is adding a lot of value, as these are the
+ important/frequent interactions for content authors.
+
+ Finally, we have the ultimate simplifying assumption: an escape
+ hatch. The "Web manage" tab will give the custom view on a resource
+ that the CMS' regular browser interface provides. If the content
+ author needs to do something unique to that content type in that CMS
+ server, the content author can easily and quickly find the place to
+ get there.
+
+ Type System Overview
+
+ Still, the remainder after these assumptions require a solution.
+ The way that data are retrieved and saved back to the server are of
+ particular importance, as getting a single way to do this (such as
+ DAV) is unlikely.
+
+ To tackle this, Twingle will provide an extensible type system.
+ Twingle will ship with support for major well-known types.
+
+ Type Definition
+
+ The RDF model of Twingle allows a resource to say that it is a
+ certain type. For instance, a resource at
+ 'http://some.where.com/somefolder/somedoc' might provide an RDF
+ property that says::
+
+ <oscom:resourcetype rdf:resource="urn:oscom:resourcetypes:document"/>
+
+ With this, the server is telling Twingle that this piece of content
+ is an instance of a well-known type, one defined by the URN
+ 'urn:oscom:resourcetypes:document'. This resource is built into
+ Twingle, and contains some metadata such as the title of the
+ resource type, the CSS style (to display an icon, and the kind of UI
+ widget to create (discussed below).
+
+ For custom types, the resource points to a resourcetype at a URN
+ they provide. The handler for their type must be installed
+ separately.
+
+ XBL Bindings and Widgets
+
+ We now have the metadata for a piece of content. We need some way
+ to display it to the user and handle server interactions.
+
+ Twingle will use Mozilla's XBL system for this. With XBL you can
+ build composite UI widgets that contain state and behovior. These
+ widgets can extend existing XUL widgets and internally contain
+ multiple widgets, including custom XBL widgets. In fact, you can
+ inherit from other custom widgets.
+
+ In our case, we specifically need something to display when a
+ content author double clicks on an item in the navigation area. For
+ Twingle, this means a new tab in the workspace with a tabpanel
+ containing tabs for each view of the resource.
+
+ The type system will define new elements that extend the XUL
+ '<tabpanel>'. For instance, to display the above 'somedoc' document
+ resource, a custom element called '<documentviewer>' will be
+ defined. This element extends tabpanel and contains a tabbox with
+ tabs for each view (Edit, Preview, Properties, Web Manage).
+
+ Each of those views are themselves custom elements
+ ('<documenteditor>',
+ '<documentpreview>','<documentproperties>','<documentwebmanage>').
+
+ The '<documentviewer>' widget also has state (the URL from which to
+ retrieve the data, the URL to which the changes should be put,
+ whether the text has changed, etc.) and behavior (how to save its
+ source to the server, how to retrieve its source from the server).
+
+ These widgets are also responsible for attaching themselves to the
+ workspace's tabs.
+
+ Since these widgets will be composed of fine-grained widgets
+ (editors, viewers, listings, etc.), building new widgets should be
+ straightforward and less prone to errors. Also, making minor
+ distinctions (such as differences in ways that servers accept data)
+ can be encapsulated in these black boxes.
+
+ Finally, if a server or site really wants to exploit Twingle by
+ adding a custom view of a resource, they can extend Twingle by
+ installing a new XBL widget type. For example, if a workflow
+ component wanted to have a workflow tab on each document, a
+ '<workflowdocviewer>' element could be created that extended
+ '<documentviewer>'.
+
+ Open Issues
+
+ Some kinds of collections, like a trouble ticket system, don't
+ accept any kind of content. They only accept a single kind of
+ content item, a trouble ticket. Providing a list of accepted
+ content types in a collection would improve the UI but significantly
+ increase implementation complexity. However, passing the burden to
+ user (they try to add something and get an error message) isn't good
+ either.
+
+ Should the type system keep state internally (which would then be
+ divorced from the RDF model), or should all properties have
+ getters/setters which interact with the RDF model? Some complexity
+ of dealing with RDF could be pushed to an XBL "superclass".
+
+ We are considering a broadcaster/observer architecture where
+ integrity of the "model" is tightly managed. Actions don't modify
+ data directly or even through JavaScript methods. Instead, they
+ broadcast events and subscribe to events. Any state change would be
+ handled by a separate object, which would ensure the server gets
+ updated before updating the local model. (Discussed in TEP 102).
+ This, however, would make widgets less autonomous and encapsulated.
+
Copyright
This document has been placed in the public domain.
+