Home About SchoolTool Architecture
Document Actions

Architecture

by Tom Hoffman last modified 2005-09-28 14:09

The technical design and building blocks of SchoolTool.

SchoolTool is built entirely from free, open source software.

Python is the programming language used throughout.  From the Python web site:

Python is an interpreted, interactive, object-oriented programming language. It is often compared to Tcl, Perl, Scheme or Java.

Python combines remarkable power with very clear syntax. It has modules, classes, exceptions, very high level dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to various windowing systems (X11, Motif, Tk, Mac, MFC). New built-in modules are easily written in C or C++. Python is also usable as an extension language for applications that need a programmable interface.

The Python implementation is portable: it runs on many brands of UNIX, on Windows, OS/2, Mac, Amiga, and many other platforms.

SchoolTool is also based on Zope 3.  Here's how Steve Alexander, the original architect of SchoolTool and one of the primary developers of Zope 3 has described it:

Zope is
  • a collection of free software
  • jointly developed by Zope Corporation and a large community of software developers
  • that you can manage in whole or in part
  • to manage complexity in gluing software components together,
  • securely publish objects to the web and other systems,
  • and make it easy to do Quality Assurance.

In other words, Zope 3 is a component-based web application framework written in Python.  It is a complete rewrite of Zope 2, which is used in Plone and other popular content management systems. 

SchoolTool uses the Zope Object Database (ZODB) for persistence.  This is, as you might be able to guess from its name, an object database, not a relational database, so there are no tables and no object-relational mapping.  Just object oriented design and persistent objects.  Objects in SchoolTool's database can have either hierarchical containment relationships in a tree structure or direct two-way relationships in a graph or web structure.  Data and metadata about objects is commonly stored in related annotation objects.  New data or metadata can be added to objects through new annotations or related objects, making the system extremely flexible and extensible.

The primary user interface for SchoolTool is generated via XHTML web pages, viewed through a standards-compliant browser.  All the core functionality of the SchoolTool server is also accessible through an XML web services interface, in the REST style.  The underlying Zope 3 architecture allows a clear path for future extension to additional protocols, such as email or SIF.


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: