From WikiWorld

Jump to: navigation, search

I propose a collaboration and [[|]] effort to standardize and implement collaboration objects as an extention of WikiWiki and a bases for ObjectWiki. This is a continuation of the EIES Legacy and a step in creating a general purpose CollaborativeHypermedia system. See OpenSource and the presentation slides, [1] for some background on my thoughts on collaborative systems. -- JimScarver

Someday we will have FirstClassObjectsOnTheWeb, in the mean time, how about wiki objects? We can gateway to web objects once they are available and not have to wait-- not to mention that Wiki can be an easy and fun way for ubiquidous collaborative knowledge object synthesis.

It employs the notions of

  • semi-structured text (ThomasMalone),
  • active text,
  • interface languages,
  • content addressability, and
  • collaborative objects.

to keep this text a proposal, i moved comments to: WikiObjectComments -- ClemensFischer

Below we have tried to define a syntax that

SmallTalk is a simple but general LanguageOfObjects we can borrow from in defining the language ObjectWiki, we can call the language WikiTalk.

It is difficult to keep this page up to date as we are still inventing the language and experimenting with simplifications in our use cases and filling in holes as we go along. See WikiTalk, WikiReference, WikiObjectUses.

We don't have to impliment ObjectWiki before writing in it. Let us begin.

name: proposed wiki semi-structured text rules version 0.5

nameFormat: WikiName:WikiWord.component... e.g. this component can be globally addressed as WikiWorld:WikiObjects.nameFormat or simply WikiObjects.nameFormat within the local wiki, or just nameFormat in this page.



A name followed by a colon introduces a named component. Text on the same line indicates the name applies to the text on that line only (see list exception). End of line after a name indicates that the name applies until the next name (at the same level) is introduced or the section end indicated by a horizontal rule (----). The name of a section is the value of the element name: in that section if introduced.

lists: are created by using wiki numbered or bullet list formats, by labels that are repeated more than once, or by ambiguous references.

  • components may be addressed by number or name with # being the number of elements.
  • the most recently introduced name, even if one line format is used applies to wiki lists.
  • names: can be used to address list elements as well
  • lists in object references use parentesis (WikiWorld:WikiObjects.(nameScope,lists.names)
  • numbering starts at one, zero can be used to give the element introducing the list or the initial unnamed part of the text item.
  • ranges: 1--5 references the first to the fifth

Text Element Components:

  • p1s1w1 references paragraph one, sentence one, word one
  • ranges: p2--p5 references the second to the fifth paragraph
  • sections: s5.p3 references the third paragraph in the fifth section (as separated by horizontal rules(----).
  • headings (with blanks removed?) can be used as references to their content.


  • pattern - componant is identicle to pattern
  • =pattern - component is like the pattern using unix file globbing characters
  • =~~pattern - component is like the pattern using perl regular expressions
  • =%pattern - component is like the pattern using SQL patterns
  • ~~value, ~~pattern, ~~~~pattern, ~~=%pattern - not like the pattern
  • ranges: pattern--pattern

quoting: names and patterens may be quoted to include special charaters, |" protects a quote in quotes, | represents the backslash, other unix/c sytle escaps may be used in quoted strings, e.g.


operations: braces are shown instead of brackets due to phpWiki bug)

  • link: {display||reference} use wiki link syntax (left bracket, display value, virticle bar, link value, right bracket) If the display part is empty the link part is evaluated but no link is shown in normal page view. If the link part os empty the display part is evaluated and displayed but not linked.
  • fetch: {objectReference||privs}.fetch or objectReference? within a reference
  • assign: {objectReference||value||privs}.store
  • perform: {objectReference||arguments and environment initialization list||privs}.do
  • insert: {objectReference||value||privs}.before or .after
  • delete: {objectReference||privs}.delete
  • input: {objectReference||class:aTemplate format:aFormat}.input
  • trigger: {eventReference}.trigger (built in will include create and update events)
  • catch: {eventReferenence||stuff to do}.catch


  • date/time
  • access
  • update
  • meta info update
  • new
  • any specific operation on any oject or class

language Support:

  • minimal built in functionality
  • http web services

' querystring ' formdata ' SOAP (WikiObject analog)

  • (blanks in component names are discouraged as they are not valid or must be protected in names in most languages.)
  • the intent is to support any language, notably Smalltalk, Java, Javascript, Scheme, Prolog, Python and Unix Shell. (Perl and PHP are likely when native to the wiki)
  • special laguage objects will execute the code via web service.
  • languageObject {code} executes code with the readers priveliges (nobody if not logged in).
  • my.languageObject {code} executes code with the code owners priveliges.

flow and program control:

WikiObject analog of SMIL (simple multimedia interface lanuage) and WSFL (web services flow languag)

  • serial and parollell presentaion/evaluation
  • conditionals
  • repetition

submission and delivery:

(to be defined, the list processing capabilities enable this functionality directly but an email gateway/interface would be desirable)

roles and permissions:

(to be defined similar to LDAP/X500, the list processing capabilities enable management of this functionality which must be enforsed by the software)

implicite components: if not explicite, components are searched in this order.

  1. body: visible text
  2. header: rfc822 values plus initial header fields if item stars with a header lable (headed fields should not normally be displayed)
  3. classes: list of inherited components (technically part of header?)

See also: ObjectWiki ObjectWikiClassroom ObjectWikiDesignLab

Personal tools