From WikiWorld

Jump to: navigation, search

ObjectWiki is a challenging design effort. Competing requirements have somewhat stalled the effort here. This page is for brainstorming design concerns and resolving them so that the effort may go forward in a timely manner.

ObjectWiki is to be a "light weight" object environment designed to capitalize on the WebServices, the SemanticWeb, and FirstClassObjectsOnTheWeb. It objectifies not only wiki pages and their cocomponents but also Internet resources in general including HTML pages, media files, data bases and other WebServices.

See CollaborativeWebObjects, ObjectWiki, WikiObjects, WikiTalk, WikiReference, WikiObjectUses, ObjectWikiClassroom


Design concerns:

Clear mapping between Wiki pages, HTML pages, and XML

The ObjectWiki DocumentObjectModel (DOM) is, at present, simple, flexible, and ambiguous. Text objects are simple lists of sections, paragraphs, sentences, phrases and words, with attribute tags introduced by titles or colons (tag: value) and content value addressability.

The model needs to be completed to allow simple, intuitive, complete expression of formal XML entities in plain text. http://www.w3.org/XML/Activity

Compatibility with XPATH, XSLT, and RDF

  1. references compatible with or convertible to XPATH http://www.w3.org/TR/xpath
  2. procedures compatible with or convertible to XSLT http://www.w3.org/TR/xslt (and later XQUERY http://www.w3.org/TR/xquery-operators/)
  3. knowledge definition compatible with RDF (SemanticWeb).

Expression evaluation

There are several flavors of WikiTalk around and I am not happy with them. Using the PhpWiki link format is convienient, but it also obscures the code. I am struggling to decide between some combinations of alternatives.

  1. Use : for literal assignment, use := for evaluated assignment.
* x: ObjectWiki  assigns x the value "ObjectWiki"
* x:= ObjectWiki assigns x the reference to the object (page) ObjectWiki.
  1. always evaluate unquoted object references identified by and imbedded period
* ObjectWikiDesignLab{1}.get gets replaced with the first section of this page.
  1. use x.do to evaluate the string x.

An objective for this "meta" system is to allow free mixing of program and data.

Context definition management and clearity

The contexts of an object includes the self (this), its inheritance heirarchy, user, privleges, system, and environment. Each of these add attributes to any particular object use instance process. It may make sence to distigush these contexts in attribute assignment. e.g

Class.include: WikiPage Class: CIS410 Intro to ObjectWiki Room: 405 ITC

would distinguish between the class or inheritance heirarchy and an instance attribute called "Class"

To what extent should wiki Categories be imployed to define behavior of wiki pages.

Code trust issues

Sharing programs involves trust, and trust often involves ownership. Users cannot review every program they run to make sure it doesn't do anything bad. A lot of code can run well with "nobodies" priveleges, but code that takes action on your behalf, or on behalf of the program author requires the nesessary priveleges.

class contraints

If x is a String, it might also be in a subclass Word, Number, Alphanumeric, etc. We need to be able to specify the class we wish to impose on it and be clear that such usage is valid.

* We can cast a object to an arbitrary class with prepended parenthesis (Word)x.  A validate: method in the class Word would be needed to validate that x is a valid Word.

wildcard methods

In smalltalk, there is the message doesNotUnderstand that is a catchall for messages not specifically defined for the object. Defining doesNotUnderstand allows error handling and proxy objects to be defined that resend messages to othe objects. Wild card methods in ObjectWiki would allow a more flexible definition of the language of objects. It could allow clauses such as are used in SQL to be defined. e.g.

Class: RemoteObject : HTTP.get(url:=address?) ... address: http://objects.com/12345

this."the answer is"


RelaxNg WikiTalk already out there?

RELAX NG http://www.oasis-open.org/committees/relax-ng/compact-20021121.html

RELAX NG Compact Syntax Committee Specification 21 November 2002

The trick is to take the human version of RELAX NG, without all the <> characters and redundancies, make it PhpWiki friendly (WikiDiffs), and extend it to general object specification, XSLT/XQUERY/XPATH etc. programming, and then finally a natural language like operating environment at the top level (WikiTalk 2?).

Personal tools