<%= [dotlrn_header "dotLRN Architecture"] %>

dotLRN Architecture

by Ben Adida and Arjun Sanyal, part of dotLRN Documentation.

dotLRN is built on OpenACS 4.x, a modular architecture for community-oriented web applications. dotLRN is also modular in that new course management functionality can be added as desired. Since dotLRN modules must function within the dotLRN architecture, dotLRN modularity must be built on top of OpenACS modularity.

The dotLRN architecture attempts to define a framework within which learning communities develop. A learning community may take many different forms, but remains the crux of the architecture.

Learning Community

A Learning Community is architected as a series of OpenACS components, with a heavy use of the subsite concept. One community is represented by:

Class Instances & Clubs

There are two different types of learning communities in the basic dotLRN release: class instances and communities (clubs). Both have the same functional capabilities but have different attributes and roles for their respective members.

Class Instances

Class Instances are related to a particular class, and must specify: The fist three parameters may be stored as separate items, all in one, or combined in some way. The current architectural direction is to separate Year and to group Term and Section, but this may change. In terms of the global architecture, this isn't very important.

Since all class instances have a common basic set of parameters, the class instance groups should all be a single core group type, called dotlrn_class. The dotlrn_class group type defines the attributes above (year, term, section). dotlrn_class is a group type that subtypes dotlrn_community.

In addition, in order to group class instances by the class they refer to, the dotlrn_class group type is subtyped into further group types, where one class is itself a group type. For example, 6.001 is a group type, whose parent group type is dotlrn_class. Then, 6.001 is the group type that all instances of 6.001 belong to. 6.001 - Spring 2002, Section B is a group of group type 6.001. This architecture allows for:

Communities (Clubs)

Clubs are fairly generic Learning Communities, with no specific attributes. Clubs are timeless, in that they don't start and end on certain dates. Membership lists evolve, but the clubs remain unique, without instances.

Thus, unlike class instances, the group type structure for clubs can be much simplified. A root group type, called dotlrn_club can encompass all club groups without any additional level of group typing.

dotLRN Packages

Learning communities have various packages of functionality. These packages are much like existing OpenACS 4 packages, but with added specifications, special callback interfaces, and predictable APIs that not every OpenACS 4 package will have.

Thus, a dotLRN Package is composed of three OpenACS 4 packages:

The relationship between the NPA and the portlet package are defined using ACS Service Contract. This is described in greater detail in The Portal Interface (futher down).

The relationship between dotLRN and the specific dotLRN-dependent packages (dotlrn-bboard, dotlrn-faq, etc...) is also defined using ACS Service Contract. ACS Service Contract defines a standard provider/consumer interface with special contract APIs. The dotLRN system defines the dotLRN Applet Contract, which includes the following operations:

The specifics of creating a dotLRN package are described in the dotLRN Package Creation Guide.

The Portal Interface

dotLRN will present most of its interface in portal form. Each dotLRN package will present its information inside a portlet within the appropriate portal page.

The current Portals package is inappropriate for this effort, given that there is no clean API for creating portal pages, setting up portal pages configuration, and rendering portal pages programmatically. Instead, dotLRN will need a much more programmatic portal mechanism.

A Portal Page

The New Portals Architecture (NPA) will feature the ability to programmatically create and edit single Portal Pages. A single Portal Page will be defined by:

The dotLRN application will then create, configure, and associate individual portal pages with specific users' sections of the site. This will allow portal functionality to exist within the dotLRN application without handing over all control to the portals package.

Portlets

The NPA will require portlet packages much like the old portals package. Each portlet package is responsible for:

The Per-User Interface

Each user will have a single NPA interface which groups information from all dotLRN classes in one page. Given the subsited architecture of each class, the per-user interface must be subsite aware, and must be able to query information across subsites.

The per-user interface will use slightly different portlets than the community-specific ones, given that those portlets will require scanning information across package instances. There is some thought that this may be "not so kosher." As long as the cross-package information is kept to a minimum, though, it should be just fine. We'll make sure to keep associating packages with the communities they belong to.

<%= [dotlrn_footer] %>