CAVOR: A Quick Introduction
Copyright © 1999 by Alastair J.W. Mayer, all rights reserved.
What is CAVOR?
CAVOR is (or will be, when completed) an engine for building applications that involve modeling and retrieving graphical and textual data. Examples of such applications include GIS (geographic information systems), mapping programs, CAD (computer aided design/drafting), as well as less-obvious applications as project management (consider PERT charts, etc), CASE (computer aided software engineering) tools (DFDs, ERDs, etc.), and probably others that haven't even occurred to me. It is based loosely on the architecture of the "Vision*" engine originally developed by myself and many others at GeoVision Systems, now owned (and further developed) by SHL who bought the technology when GeoVision went out of business. Cavor is a re-implementation, it does not include any copyrighted Vision* code.
The name Cavor is partly whimsical -- it's the name of the professor in H.G. Wells' novel "The First Men In the Moon" who invents the antigravity material "cavorite" and travels to the Moon. It also works out to a an acronym of "Create A Vision Of Reality", which is what the engine lets you do (in an abstract sense) and plays on the name "Vision*".
What's the architecture?
The Cavor engine comprises several components that run as cooperating processes in a unix-like (e.g. Linux) environment. This includes some non-Cavor 3rd party components such as a SQL-based database and the X Windows system. The Cavor components include a database interface, a graphic display manager, and a scripting language and its processor. The scripting language is extensible and is somewhat similar to Tcl.
A diagram will probably help:

Since the project is still at an early stage, details are subject to change if we come up with better ideas.
What's the status? Where do I get it?
The status as of this writing (April 1999) is "barely begun", and there's no code available for download just yet. Real Soon Now.
In more detail:
The display manager is mostly written but still needs work to be fully usable. It provides for multiple display lists, multiple windows on each list, zooming and panning, unlimited layers, and individual entity (feature) selection.
A grammar for the Cavor Scripting Language (csl, pronounce it 'sizzle' or 'cecil') for bison (yacc) and flex (lex) is coming together. A subset of it works, limited to pretty trivial math operations and such at the moment.
The controlling process will combine the Csl interpreter with a message switching facility to route directives to particular components (such as the display manager). The message switching system (based on unix domain sockets) works.
A basic schema for the common database tables, and the SQL to generate it, is complete. There is much work to do on the database interface routines. The plan is to have a standard database interface API (the DBI) which can be reimplemented for different 3rd party databases. I'm working with Sybase and mySQL at the moment. (I'm tempted to write an Embedded SQL preprocessor for mySQL unless somebody else already has?) One aspect of this is to extend SQL (as part of Csl) with spatial searches. I.e "SELECT ENTITIES WITHIN 5 MILES OF COORDINATE ($x, $y)".
More details, please?
Real Soon Now. Honest. Time is a scarce commodity for me (twin six-month old boys doesn't help), but I'm working to (A) get enough code in shape to be useful enough that others might want to build on it (and post it - it'll be GPL'd), and (B) describe and document enough of the basic design so as to give some direction.
More later.
Copyright © 1999 by Alastair J.W. Mayer, all rights reserved.
(A future version of this document will be freely copyable, but at this early stage I want to limit propagation of stuff that will become obsolete very quickly.)