Mark J. Norton, Consultant























I got involved with the Open Knowledge Initiative when I was invited to the project kickoff meeting back in 2000. The interest and excitement was obvious at that meeting. People are very passionate about making eLearning tools more widely available.

Since then, I've participated in several project related to OKI. These projects are summaries here.

OKI Meetings

I have particated in several technical meetings since the OKI project was started. Some of these were focused on issues surround digital repositories and how university libraries could make use of them. Others had to where various services would fit into the OKI architecture. There has been some overlap between the work being done by the IMS Global Learning Consortium and OKI. As Director of Specification Development during that time, I coordinated IMS activities with OKI, especially at IMS quarterly meetings.

Stellar Technical Evaluation

Although not technically part of the OKI program, Stellar is a major project at MIT to develop distance learning tools. These tools are implemented in Java and allow students in Singapore to participate in MIT classes. My work was a technical evaluation of the project to date. This involved examining code, interfaces, and speaking with the developers involved. Results are confidential to MIT.

OKI Technical Evaluation

In the spring of 2003, Eduworks was commissioned by The Mellon Foundation to evaluate the OKI Project. Eduworks subcontracted the technical evaluation to me. The evaluation was conducted using a methodology consisting of:

  1. Documentation review - as of May, 2003.
  2. Source management review - mostly how SourceForge was being used.
  3. OSID review - all Common and Eduational Services.
  4. Sample implementation review - largely a digital repository.
  5. Interviews with program participants - ten developers.

In addition an evaluation of current support for building systems based on the OKI OSIDs. This consisted of:

  1. Building a prototype OKI system.
  2. Sharding data between institutions.
  3. Swapping code or tools.
  4. Accessing remote services.
  5. OKI ventor compatibility.
The results of this evaluation are confidential to the Mellon Foundation.

OSID Implementations

I have implemented the following OKI Open Source Interface Definitions at this time:

  • osid.shared
  • osid.dictionary
  • osid.authentication
  • osid.filing
The shared OSID contains a unique identifier generator based on a timestamp in milliseconds along with an authority string. Type, Agent, Group, and Properties are all implemented. Properties, however, is expanded considerably in an included osid_mjn.properties package. The SharedManager has support for persistent management of Agents and Groups.

The DictionaryManager provides a simple way to extract strings from an application or GUI and put them in a container which allows them to be retrieved using a tag (usually a string).

Authentication is usually based on a underlying enterprise authentication mechanism, such as Kerberos or LDAP. Just to see if it could be done, I've created an authentication method that is wholly contained in the osid.authentication implementation. It uses persistent properties (username and password) kept in agent objects. While this is not especially secure, it is simple and easy to use. An administration tool is also included to allow user names to be created and added to the list of known agents.

There are very few implementations of the OKI Filing OSID that I know of. Several issues came up in developing this OSID. For example, a Cabinet has properties associated with it, but not ByteStore. Since properties are a good way to handle metadata, I would assume that ByteStores would have properties, too. Alternatively, they could be handled in CabinetEntry, since Cabinet and ByteStore both extend it. Properties are treated differently here than in osid.shared.Properties.

The javadoc generated from this implementation is available for you to view. Please contact me if you are interested in sharing or swapping OSID implementation code.

Proposed Improvements to Property Management

During the implementation of osid.shared.Properties, I noticed that several features were missing which would limit the usefulness of properties in OKI based applications (IMHO). There are no provisions for adding new properties dynamically, or changing existing values. There are no recommended ways of grouping properties by type, or creating hierarchical organizations of properties. Finally, there is no ways to iterate over key/value pairs.

To address these, I wrote a proposed set of extensions which added in the missing functionality. This proposal only changes the name of a single method of the original definition of osid.shared.Properties, but adds several new classes, including a set of wrapper clases for atomic data types such as boolean, int, char, float, etc.

You can download my implemenation of properties. Have a look at some of the javadoc generated from this implementation, also.

OSID State Persistence

Many applications using the OSID specifications will require state data to be persistent across invocations. Support for serialization and persistence is provided in the OSIDs, but little or not guidance on how this might be accomplished is mentioned. I've written a short paper called OKI OSID Serialization which examines what data might be persistent in OSID implementations, describes common strategies for persistence, and includes a full implementation of persistent state for the osid.shared.SharedManager.

Personal and Collaborative ePortfolios using OKI OSIDs

The real power of the OKI OSIDs can be difficult to see by just looking at the interface definitions. It takes a real application like ePortfolios to put the OSIDs into context. To put the problem into perspective, I've written an Overview of Personal and Collaborative Portfolios. This the the basis for a Design for ePortfolios using OSIDs. The design explores the use of filing, hiearchy, and dr to implement organization and collection structures, and examines the use of authentication and authorization to develop access control. Digital Rights Management is mentioned, along with some of the standards work being done in this area.

Remote File Repositories

While most digital repositories require a certain degree of formality, it is possible to concieve of a lightweight repository as a wrapper around a remote filing system accessed by FTP. An index-based searching mechanism can be added to perform limited file metadata searching. This is proposed in Remote Filing Repositories.

Tufts VUE Implementations

Several OKI OSID implementations were developed as part of the Tufts Visual Understanding Environment (VUE), a concept mapping appliation. OSIDs implemented include authorization, authentication, shared, and two forms of filing. The Cover Page goes into a bit more detail and has a link to download code and documentation.

Inheritance in Relational Databases

This paper explores how relational database tables can be set up and used to inherit attributes arranged as a hierarchy. In particular, this is used to explore how implicit authorizations can be resolved when they are persisted in a database.