Note: this is a non-technical description of Casbah for marketing purposes.
Casbah is an ``open source'' development project. That means that anyone can contribute to it, and anyone who wants to use it, can use it free of charge with the source code included. The Open Source development model is one among many approaches to software design; but it is particularly well-suited to a project like Casbah.
So, what is Casbah? It is being designed to serve as a content management system, primarily for Web content, but not only for the Web. The basic structure of Casbah is simple, even if the implementation of it is complex: a persistent integrated core holds the content, which can be manipulated by scripting and programming languages, and output through a variety of drivers. The persistent core, which we call Coptic (Casbah's Object-Oriented Persistent Integrated Core), can be inspected, manipulated, and managed with a GUI client. Let's look at some of the other characteristics of Casbah.
The growth of the Internet and Web publishing means that more and more it is a team, and not simply an individual, which builds Web sites. Casbah is designed with these teams in mind: it is built to support multiple, simultaneous content creators. The client/server architecture means that Coptic runs on a server and multiple GUI clients can connect to it, retrieve content objects, work on them, and return them to Coptic safely and efficiently.
An implication of the multi-user nature of Casbah and distributed client/server computing is that Casbah can also manage multiple Web projects, as well as many other kinds of digital content projects, simultaneously. Thus it is designed from the ground up to serve as the hub of a multi-user, distributed team of content creators and managers.
One of the design goals of Casbah is worth mentioning here: we are designing and building it in such a way as to make building GUI clients a relatively simple affair. The result of this design decision leads us directly to the next characteristic of Casbah.
Since Casbah features a client/server approach, there are two questions here: how portable is the client, and how portable is the server.
First, because Casbah is an open source project, we are able to take advantage of open source resources. The Casbah server has been ported to the NSPR, the Netscape Public Runtime, which is available for 20 versions of Unix, Mac, Windows, and BeOS. It's what makes Netscape servers able to run on so many platforms, and it is licensed under the NPL. This means that the Casbah server will run on over 25 platforms; in other words, it will run on every platform Netscape runs on. That's what we call cross-platform.
But even though we will support many platforms -- and we invite people to help us support them -- Casbah is liable, on the server-side, to always run best on Unix. The Casbah development team is filled with Unix programmers. Unix is the ideal platform for the server-side of a client/server application like Casbah: it is robust, powerful, and 'at home' on the Internet.
Second, how portable is the client? The reference GUI client is going to be implemented in Java and the new Java Foundation Classes (Swing). This means that any computing platform that supports Java can be used as a client platform for Casbah. So virtually every modern computing platform can become a home to Casbah content teams: Windows, Macintosh, OS/2, BeOS, all versions of Unix, etc.
While there are many native Casbah GUIs in the planning stages, especially for Linux, BeOS, and Macintosh, the Java GUI will insure that virtually anyone who has access to a computer can use the Casbah system.
We are also designing Casbah in a way that allows new extensions of its functionality, into areas that its designers don't envision. The best computer programs are ones that can be changed to match the changing needs of its users. This is the case with Casbah. For example, there has already been preliminary discussion to put the core Casbah technologies to two additional uses beyond content management: workflow/document managing and Web application framework. By building on top of an extensible, open core, Casbah will be flexible enough to provide unanticipated functionality. In short: it won't be simple to answer the question, what does Casbah do?
At the heart of Casbah is a programming language called Scheme, designed, in part, to be embedded into things like the object store that lies at the heart of Casbah, which we call 'Coptic' (Casbah's Object-Oriented Persistent Integrated Core). We are embedding Scheme for the sake of extensibility, tight integration, etc. Using Scheme and a Computer Science technique called partial evaluation, we think Casbah will eventually be able to read scripts and programs written in other languages, 'translate' those languages into native Scheme code, and then execute those scripts and programs. What does this mean for programmers and for organizations who use Casbah? It means that you can use your favorite or best programming language to control Casbah and Coptic. We call this 'language agnosticism,' which just means that Casbah lets you use the language you or your programmers are good at, and it figures out the rest. We call this part of our system 'CREOLE' (CREOLE Runtime Environment for Open Language Extension).
At this time the following languages are targeted:
There aren't any practical limits on the number of languages that can be used to program Casbah, except, of course, for programmer time; but as long as a translator for the language has been written, it can be used in Casbah.
See http://www.ntlug.org/casbah/creole/ for a more technical description of what Creole is.
Casbah will have document/object versioning and access control built in from the start. The management of content, and teams of content creators, relies upon the management of versions of content objects. It will be possible to store previous versions of entire Web sites in the Casbah system. This is especially helpful for Web content teams, which often need to 'roll back' to a previous version of the Web site or of some part of the Web site. The access control built into Casbah will mean that only authorized content creators may have access to parts of the Casbah system. This means that the right people will work on the right job at the right time.
Casbah will also be making use of the eXtensible Markup Language or XML. We'll be using XML to define and develop high-level content and document management tools that will allow for rapid evolution of content.
Perhaps the most important part of Casbah is that everything about the system is open. You have all the APIs, SDKs, and source code that the developers have. This means that Casbah can be customized, tweaked, and hacked to fit the particular situation that you want to use it in. This provides a level of control and customizability that isn't available on proprietary, closed systems.
Casbah is being built by a diverse group of computer professionals: Unix, Mac, and BeOS developers, content creators, scripters, professional hackers, students, teachers, etc.
If you are interested in helping out with Casbah, please see the Casbah Web site for more
details.