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.

dotLRN Community

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

OpenACS Group

The core dotLRN group type is dotlrn_community. This group type defines some basic attributes that all communities have: There are two different types of learning communities in the basic dotLRN release: class instances and clubs. While Clubs need no additional attributes, Class Instances require information concerning the Term and Year of the Class Instance.

Site Node

In dotLRN, a community is mounted only at one particular node. In the future, if communities end up being multi-mounted, there will have to remain a canonical location for the community in order to ensure maximal modularity - specifically the ability to point to a community's URL using only the community_id as a starting point.

Instance of dotLRN Community Manager

The core dotLRN OpenACS package is called dotlrn (surprisingly enough). This package is meant to be remounted to handle community types and specific communities. A package_id corresponds to each community.

The group types for these two dotLRN Community Types are dotlrn_class_instance and dotlrn_club.

Use of NPA

dotLRN makes heavy use of the New Portal Architecture.

Each full-access user has a personal portal where all data from all communities is centralized in one place. This is called the dotLRN User Portal.

Each community has a non-member portal which displays information to those browsing the system and wanting to find out more about a community before joining it. This is called the dotLRN Community Non-Member Portal.

Each community also has an administrative portal which centralizes all administrative functionality for that community. This is called the dotLRN Community Admin Portal.

Finally, each community member has her own dotlrn Community Member Portal. The important distinction here is that there is a different portal for each member of this community. Thus, if a community has 100 members, there are 100 individually managed portals. These portals are initially created from the dotLRN Community Portal Template that administrators of the community control.

dotLRN Applets

dotLRN Communities have various packages of functionality. These packages (dotLRN applets) 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 Applet is composed of three pieces that may each be a separate OpenACS package:

NPA Interactions

The relationship between the NPA and the portlet functionality is explored in the NPA Architecture Manual.

dotLRN Applet API

The relationship between dotLRN and the specific dotLRN-dependent packages (dotlrn-bboard, dotlrn-faq, etc...) is 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.