Architecture
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. .