Casbah 0.1.2 ("Wedded Bliss") Release Notes


Table of Contents
README
CONTACT
CREDITS
TODO
KNOWN BUGS

README

What is Casbah? Casbah is a free software application framework, which focuses on Web applications, particularly those that are document-centric, distributed, robust, etc. The purpose of Casbah is to simplify and speed the development of Web applications. It aims to do that by allowing developers to focus on the central functionality of their application, instead of the multitude of "plumbing" issues that Web applications face. Casbah provides a set of core services that developers can employ: persistence, distributed computing, multi-language, unified data access model, etc.

Casbah is being developed by Web application developers for Web application developers; we've put things into Casbah that we want to use when we build Web apps. One central design commitment has been to make the so-called "scripting languages" (Perl, Python, TCL, etc.) into "first-class" application tools by surrounding them with a rich infrastructure of services. So we've had to work very hard in designing Casbah to avoid choosing one of the scripting languages and making it the extensibility, scripting mechanism of Casbah. The full version of this multi-language part of Casbah will be forthcoming in a future release of Casbah.

The original motivation for Casbah was the development of a free software Content Management System, so the Casbah application framework is particularly well-suited for CMS-like Web apps. The Casbah CMS is the next major goal of The Casbah Project as soon as Casbah itself stabilizes a bit more.

We anticipate building applications like these with Casbah.


Change Log

0.1.2 -- "Wedded Bliss" Release.

  • Perl and Python LDO implementations (need to be updated) (Ken)

  • OrielNative driver (run native executables from Cairo) (Scott)

  • LDO Request Encoding as Objects (REO) docs (incomplete) (Shawn and Ken)

  • LDO REO implementation (incomplete) (Scott)

  • capi docs cleaned up (Kendall, Scott)

  • added __cb_get__ to IDE (Josh L.)

  • core methods named consistently: __cb_foo__ prefix (Kendall & Scott)

  • coptic progress (Shawn)

  • natroun cleanups (Scott, Niel, Assorted)

  • separated CairoAdapter from gCairo (build apps w/ou cairo) (Scott)

  • NatrounRAM (Mike Grinder)

  • New Gamora release for bugfixes (Scott)

  • bug fixes (Assorted)


Obtaining Casbah Software

The latest release of Casbah can be obtained from the following sites.

In addition, Markus Lauer maintains a European mirror of the Casbah Web site at de.casbah.org, and you can download Casbah and Gamora there too:

If you like to live dangerously, you can grab the latest version of Casbah from the project's CVS server.

Using Code from CVS: We make no representations about the safety of using code from CVS. A browsable version of Casbah's CVS is available at http://casbah.org/cgi-bin/cvsweb.cgi.

To access the Casbah CVS server:

  1. Set CVSROOT to ":pserver:anonymous@casbah.org:/usr/local/Casbah/src/cvsroot"

  2. cvs login (password: "anonymous")

  3. cvs co -rCASBAH-REL-0_1_1 or cvs co


Casbah Dependencies

Cairo. Requires a 1.1.x JDK. We'll probably be moving to JDK 1.2 as soon as a stable Linux port is available. The Casbah application server, Cairo, also requires Scott Miller's excellent Java server framework, Gamora, version 0.72.0 or newer. You can obtain Gamora at http://www.gamora.org/. Highly recommended.

Jikes Java Compiler: In some informal testing, compiling the Java source code that makes up a good bit of Casbah, we've found that Jikes 0.47 from IBM is about 12 times faster than the javac in JDK 1.1.7a on Linux. If you have or can install Jikes, we recommend you do so. It's fast!

Casbah IDE. Requires JDK 1.1 or newer and Swing 1.1.1b2 or newer, and Gamora.

LDO. The Casbah distributed objects protocol, requires either Python 1.5.x or Perl 5.x or JDK 1.1

Coptic. The ANSI C version of the Casbah persistent object store requires gcc 2.7.1. An experimental version of Coptic based on Erlang requires Erlang 47.4.1 (Mnesia 3.6, Mnemosyne 1.0.1).

Oriel. Casbah ships with a few Oriel drivers, the most mature of which is the one for JPython, the JVM-based implementation of Python. You can download JPython at http://www.jpython.org/.


Version Scheme

Casbah's version scheme works like the Linux kernel's version scheme. Each version of Casbah is made up of three numbers: MAJOR.SERIES.MINOR. Versions with an even SERIES number are considered stable, production-safe versions; versions with an odd SERIES number are considered unstable, developmental versions.

Example 1. Casbah Version Scheme

  • 0.1.1 --> development series

  • 0.2.1 --> production series

We encourage feedback from running both series of Casbah systems, but don't be surprised if a developmental series has major problems, missing functionality, uncompilable pieces, etc.

And if you're running something out of the CVS, don't even think about it using it for a production system.


Installation

On most Unix platforms, installation is as simple as running the included Perl script Install.

  1. Download the source tarball (Obtaining Casbah Software)

  2. Unpack the distribution tarball with something like:

    tar xvzf casbah-0.1.2.tar.gz

  3. If you're installing this into a system-wide directory, you'll undoubtedly need to run the installation script as root. If you're installing in your ~/, run it as an ordinary user.

    Absolute Path Names: Wherever you choose to install Casbah, make sure that when the installation script asks you to specify the installation path, you input an absolute path, not a relative one. In other words, something like /usr/local/Casbah/, rather than anything like ../../Casbah. The latter will fail horribly and you'll regret it forever! :>.

    The Casbah installation script requires Perl 5.00x. It assumes Perl lives, on your system, at /usr/bin/perl. If your Perl is at /usr/local/bin/perl, you'll need to edit Install to point to your Perl interpreter.

  4. Install -h or Install --help lists the switches.

    [kendall@chomsky cbBuild]$ perl Install -h  

    Casbah Installer; Revision: 1.10 

    usage: sh ./Install [options ...]
        --cache=FILE      Store options in FILE.
        --no-prompt       Don't prompt.
        --help            This help.

    Change into the distribution directory:

    cd casbah-0.1.2

    Now run the installation script:

    ./Install or perl Install

    You'll see something like the following:

    [kendall@chomsky cbBuild]$ perl Install

    Casbah Installer; Revision: 1.10 


    Casbah will install itself into one directory on your system,
    making it easier to remove the software at a later point in time.

    Where should Casbah be installed?
     [/usr/local/Casbah]

  5. Install the software by answering the questions that the installation script asks. The default installation directory is /usr/local/Casbah, but it's relocatable to any place where you have write permissions.

    Install caches the configuration details in install.cache, so if you restart it subsequently to answering all the config questions, you might want to use

    Install --no-prompt

  6. Now that Casbah is properly installed, you need to create an account to use Cairo's (well, it's Gamora's really) admin interface, GVFS. To create such an account, we use pwtool like this

    cd $INSTALL-DIR

    ./bin/casbah-pwtool

    To start the Casbah application server:

    cd $INSTALL-DIR

    ./bin/casbah-cairo

    The default port for Cairo's CPIFAdapter, which is what the IDE connects to, is 2649, but you can change it if needed.

    To start the Casbah IDE:

    cd $INSTALL-DIR

    ./bin/casbah-ide <host> 2649

  7. You can interact with the Cairo admin interface via:

    telnet <host> 2020


Miscellaneous Notes and Tips

The IDE and Cairo may be run on the same machine or they may be run on different machines. The IDE can connect to the Cairo server over the Internet or over a local network.

Cairo will occasionally spit out exceptions to STDOUT, but these do not necessarily indicate system failure. There is still quite a bit of debugging cruft in Cairo, so these exceptions are most likely a result of that.

Cairo has some things that can be tweaked in org/gamora/Defines.java.

In future releases of Casbah, as the systems becomes production-ready, we'll release Red Hat RPMs and Debian DEBs of Casbah.


Documentation

The core Casbah system is fairly well-documented, though there is a bit of lag between the code as of 0.1.2 and the documentation. We'll be updating the docs as soon as possible. The Casbah API document set is available at http://casbah.org/capi.


Casbah License Issues

Casbah is not released under a single license; since its various parts are meant to accomplish different things, we've used a variety of licenses, all of which are generally regarded as free software.


Casbah Application Server

The bulk of Casbah's Java code is licensed under the Mozilla Public License, in part because of concerns about RMS's interpretation of the GPL, Java code, and Sun's JDK libraries. LDO and Coptic are both licensed by the GPL. Coptic also contains a bit of public domain code.

An important goal for The Casbah Project is that Casbah is widely adopted by Web application developers. We, as the primary copyright holders, want to make explicit our position on Casbah applications as "derived works". Our position is that, while the developers of core Casbah encourage Casbah applications be distributed as free software, we allow non-free or closed applications when that is a necessity. In other words, our view about Casbah licensing is that while we encourage Casbah applications to be licensed as free software, and while Casbah itself will always be free software, Casbah application developers are free to develop non-free, closed applications on top of Casbah.

This means, in practice, that if you modify some part of the system that The Casbah Project ships as part of Casbah, you have to make that modification freely available if you are distributing an application (whether free or non-free) that requires Casbah. Your Casbah application doesn't have to be free software, even though we encourage you to make it so. You are free to modify Casbah itself, to make changes to suit your applications, but if you distribute an application on top of a modified Casbah core, you are obligated to make your modifications available in source form, preferably by making them available to the Casbah community itself. Of course, while you're not legally obligated by the Casbah license to make public undistributed modifications to Casbah, it is hoped that you'll reciprocate with the rest of the Casbah community and, practically speaking, it's possible that your modifications will help someone else, or someone else can help you with your modifications.

In short, Casbah applications are not considered "derived works" by the core Casbah copyright holders and, thus, may be non-free software. Casbah itself, however, is free software and modifications to it are free software too.


LDO

LDO is licensed by the GPL to promote its use in other free software projects.


Coptic

Coptic is licensed by the GPL to promote its use in other free software projects; the Coptic public access client is in the public domain so that it can be used in free and non-free software.


XML DTDs

The Casbah XML DTDs are meant to be analogously licensed to free software; i.e., you can use them, distribute them, modify them, etc. But since the whole point of a DTD is to define a set of documents the semantics of which are shared, the Casbah XML DTDs are licensed under terms that dictate the adoption of a different name if they are distributed in modified form. This is the same license used by DocBook, the computer industry documentation standard.

The XML DTDs are not included in the present release, since Casbah isn't yet doing anything with XML. They are available from the Casbah CVS server, however, and can be browsed at http://casbah.org/cgi-bin/cvsweb.cgi/XML/DTDs/.


Compatibility

Casbah isn't meant to run on any particular platform, but many of the Casbah developers are Unix freaks, though a few of us use NT and the Mac. However, most of Casbah has been tested and developed primarily on various Unix systems, including Linux and Irix. Most of the Java code should run on anything with a JVM.

Coptic is ANSI C -- with bits of ASM in places -- but has only been tested on IRIX and Linux. We don't anticipate any problems porting to any modern Unix and, perhaps with a bit more work, it can probably be made to run on NT as well.

Casbah has been tested on the following:

  • Linux 2.2.1

  • Irix 6.3

  • JDK 1.1.5

  • JDK 1.2

If you setup and run parts or all of Casbah on something else, please let us know about it so we can keep this list up-to-date.


CONTACT

The Casbah Web site is http://casbah.org/. There are several Casbah mailing lists also available, including one for system developers and one for Casbah users. More details about joining these mailing lists, and Web archives of each of them, can be found at http://casbah.org/mail.shtml


CREDITS

Free software projects, by their very nature, require the voluntary, cooperative, and generous effort of volunteers. It's often said that these volunteers are paid in the admiration, respect, and good will that their efforts engenders in their peers. The Casbah Project is no different in this regard than any other free software project; we've only progressed to this point because of the generosity and hard work of the lots of very smart people.

Shawn Pearce. Responsible for much of the Casbah core design, as well as the design and implementation of Coptic. Wrote most of the Casbah API document set. Performs regular feats of C, Perl, and Unix wizardry. Engineered Casbah release and installation mechanisms.

Ken MacLeod. Responsible for much of the Casbah core design, as well as design and implementation of LDO. Also the tech lead for SGML, XML, property sets, etc. A wily Perl and Unix hacker with formidable design and management skills.

Niel Bornstein. A co-founder of The Casbah Project. Responsible for project management. Responsible for input into Casbah core design and most of the existing Natroun driver development. Responsible for much of Casbah's XML DTD work. The only C++ programmer most of us even like!

Scott Miller. Responsible for important Casbah core design contributions, as well as nearly all of the implementation of Cairo, the Casbah application server. The lead developer of Gamora. Makes Java wizardry look like child's play.

Wesley Felter. Responsible for design and implementation of the Casbah IDE. Also implemented pieces of Cairo. Casbah's pipeline to the Mac and NT worlds, keeping the Unix bigots occasionally honest.

Bijan Parsia. Responsible for Casbah core design clarifications, improvements, including Oriel, the Casbah multi-language subsystem. Implemented existing Oriel drivers. Responsible for work on a distributed Coptic based on Erlang and Mnesia. Asker of hard questions. Bringer of "blargh".

Jim Hebert. Responsible for systems administration assistance, general Unix wizardry, appropriation of development accounts, and Oriel development. In-house bullshit detector.

Michael Grinder. Responsible for NatrounSQL and NatrounRAM driver design and implementation.

Josh Lucas. Added get() stuff to the IDE.

Markus Lauer. Responsible for setting up the European mirror of The Casbah Project Web site.

Kendall Clark. A co-founder of The Casbah Project. Responsible for document set editorial work and production, Web site, and general feature harping. Responsible for whatever XML DTD work that Bornstein didn't do. An occasional herder of wayward cats.

North Texas Linux Users Group. Hosted initial development, mailing lists, etc.

Compu-Aid. Provided development accounts.


TODO


Cairo

  • Extend Jigsaw to communicate with Cairo, CVN via LDO

  • NatrounPOP3, NatrounIMAP

  • finish NatrounHTTP

  • NatrounWordNet/Brico

  • finalize Oriel API

  • finish OrielJPython and OrielKawa


IDE

  • fix off-by-one tree expansion problem

  • add some kind of progress feedback

  • make it possible to open a table in a new window (maybe by holding down ctrl?)

  • make it possible to create new CVN objects in the IDE

  • add in-place editing of simple items (strings, numbers)

  • add separate-window editing for larger things (scripts, multi-line strings) using jEdit

  • add preferences (which Cairo to connect to, etc.)

  • switch from CPIF to LDO (once it has been fully spec'ed)

  • add authentication (I vote for uncrackable SRP)

  • make Cairo and the IDE run in one VM (Frontier-like setup)


Coptic

  • complete ciod, the Coptic IO Daemon

  • integrate sfcfp to parse Coptic config file

  • test and debug bcache (the page cache engine)

  • create B+-tree index datatype

  • create Coptic client/server protocol modules


XML DTDs

  • Finish Camel


KNOWN BUGS

None yet...