You are not logged in Log in Join
You are here: Home » Members » klm » OrganizingContent » OrganizationObjectsProposal » wikipage_view

Log in
Name

Password

 
 
FrontPage » KenManheimer »

OrganizationObjectsProposal

Organization Objects

Culprit: Ken Manheimer

This is a proposal for a new framework in the CMF that provides for tracking various kinds of content relationships in an extensible, comprehensive way. It is designed to be extensible with new relationships, and useful with any applicable content types, without requiring any changes to the content type implementations.

I've sketched out the motives for Organization Objects in MotivatingOrganizationObjects and the LinkObjects proposal fills in some other details.

Context

The CMF offers an extremely good basis for reuse of content types, principally because the only behavior directly coded in the content type implementation is that which is entirely specific to the type. Behaviors having to do with interactions with other objects, and with general services, are realized in the infrastructure. This means that:

  • Content type developers need only pay attention to the concerns specific to their type.
  • General changes to/extension of content behaviors can be accomplished without change of all the existing object types.

Problem

The information managed by a content management system is not only in the specifics of each content item - it is also in the relationships of the items, the "spaces between the content". (Some examples of these relationships are relative modification time, forward and reverse linking info, lineage/provenance - ie, "from which bit of content was another bit of content created?", relative ranking, and so forth.) Without access to this kind of relationship information, CMF portals can only provide for navigation based on folder containment, explicit URL links, or by catalog searches.

  • Folder containment is an extremely limited and rigid organizing mechanism.
  • Living with only links and searches is like living in an imaginary world where every room is connected to every other by transporters - it lacks a basis for regionality, neighborhood.

    In other words, it lacks progressively grouped regions by which you can realize "where you are".

The challenge is to provide for tracking of organizational information in a general way that applies across content types, providing for consistent implementation of relationships as they are discovered to be useful.

Forces

Digital Creations has had some success using its web sites to organize efforts like its community-facing development processes, using wikis, trackers, maillists, and other structured content. However, we've also hit up against hard limits in these content types:

  • These specialized content types do not lend themselves, by any measure, to integration with eachother. We cannot use wiki pages for tracker message elements, or vice versa. We cannot automatically integrate mailling list messages in either of the other two, without a lot of effort.
  • We cannot even federate those types with themselves, in a comprehensive way, in order to scale beyond individual collections.

Furthermore, if we were to invest effort to integrating these particular content implementions, it would not be applicable beyond the specific combination. It would not generalize. (Thus, we're keen on pursuing this direction, rather than going the route described in my WikiNG proposal.)

The inherent reusability of the CMF's content architecture would lend itself to this cross-germination and scaling - provided we could offer the functionality in a comprehensive way, not specific to any particular content type, and extensible to incorporate useful relationships as they are recognized.

Solution

Provide an extensible, general service for:

  • Retaining relationship details about content objects as the objects are edited
  • Reporting that information so it can be used unified with other reports
  • Used as structures specific to that kind of organization.

This would entail:

Event-based Tracking of Changes
Notification about major content-object lifecycle changes - creation, modification (of content, security, or attribute), and deletion - is automatically propagated to organization objects that have registered interest. Optionally, notification interest is qualified for attention to particular content subsets.

This generalizes what the manage_after* methods do to propagate object changes to the catalog. With this more generic version, new organizations can be implmented without any change to the content objects. It is up to the organization objects to register for notification with the event channel.

This event notification mechanism might be implemented as some kind of generic infrastructure service in the NewReligion model, or with a general event channel, as tres has sketched in his events tool proposal.

Catalog-style Query Interfaces
Organization objects present query interfaces returning result sets that can be unified (via union and intersection) with result sets from other organization services, and also with result sets from the catalog.

These interfaces would be patterned after whatever is done for catalog drop-in indexes - in fact, they may be drop-in indexes. I dunno.

Specialized-Result-Structure Interfaces
Organization object services also can, when appropriate, present organization-specific query interfaces. These interfaces take result sets and return organization-specific structures, representing an ordering of the result objects according to the organization.

For instance, an organization object that tracks object modification-time would take a result set (perhaps from a generic catalog search) and return something sorted according to change time. Such an organization object interface would take qualifiers determining whether to return results in ascending or descending order, whether to consider the last-modification date or the creation date, and so forth.

An organization object responsible for tracking lineage relationships would have an interface to yield a quite different structure - a hierarchy indicating the lineage relationships between the subjects, with special cues instead of repeated sub-elements in order to elide nesting cycles. This interface would take, for example, arguments determining whether it should nest indirectly contained objects or present them as being disconnected.

The Specialized-Result-Structure Interfaces section examples are significant - i would like to pursue several wiki features as the initial target of this project, including:

  • RecentChanges
  • Lineage (See also a related in-progress proposal, for CommonNameSpaces? .)
  • Backlinks and Forward links

for general CMF content.

Resulting Context

  • A comprehensive, extensible framework for implementing tracking and reporting of organizational relationships. (This could be seen as providing relational database capabilities across content types, for targeted relationships, at the application level.)
  • Inherent susceptibility of any type of content to organization tracking, without special tailoring of the content object.
  • Ability to consolidate searches according to organization with other organizational searches and with catalog searches.
  • Easy access to specialized relationship information. Thus, we could for instance present incoming (backlinks) links and lineage info with every view of a page.

The kinds of relationships i'm talking about are things like:

  • relative timing of content change events (provenance, revision, publication, origination of new content, security/licensing changes, etc) (For some interesting ideas about the primacy of event-oriented cataloging, see http://www.ilrt.bris.ac.uk/discovery/harmony/docs/abc/abc_draft.html and http://lcweb.loc.gov/catdir/bibcontrol/lagoze_paper.htm .)
  • Lineage/threading - ZWiki "lineage" and news/email threading are related, and perhaps similarly essential, features.
  • Interlinking info (dublin core "relations"?) (May connects with tres' Implement Dublin Core's Relation / Source Elements proposal.)
  • Path - next/previous/up/down sequencing particular to some collection. Eg, sequencing for a slide-show vs sequencing for a user guide vs sequencing for a manuscript. Each of these could overlap in the pieces of content they include, but imposing different actual sequences.
  • Ranking - Organization of ratings relative to other items in a collection.
  • Dependency ("depends-on" / "dependents")
  • It may make good sense to implement site navigation tracking facilities based on this framework. This would entail adding page visit occurance as notified events.

Risks

  • Propagation of notifications accompanying every content change on the site, particularly multiple changes, presents a risk of prohibitive system loading as the number of content objects increases. Well informed design will be necessary to avoid scaling problems here.
  • In order to be really usable, it must be easy for application developers to identify and obtain the organization object services they need. We will need a general mechanism for obtaining services according to some salient feature - probably their interfaces! - this is something that the NewReligion? probably needs to provide in any case.
  • In general, the comprehensiveness of this project is ambitous. Careful implementation choices will be necessary particularly in the fundamentals.

(See also a more casual, OrganizationObjectsPrelim and MotivatingOrganizationObjects .)