This is version 0.9.2 of the Condor Classad library, released on
12-Feb-2001. 

===== What is it? =====

Classified Advertisements (or ClassAds) are the lingua franca of
Condor. (You can learn more about Condor at our web page:
<http://www.cs.wisc.edu/condor/>.) They are used for describing jobs,
workstations, and other resources. They are exchanged by Condor
processes to schedule jobs. They are logged to files for statistical
and debugging purposes. They are used to enquire about current state
of the system.

A ClassAd is a mapping from attribute names to expressions. In the
simplest cases, the expressions are simple constants (integer,
floating point, or string). A ClassAd is thus a form of property
list. Attribute expressions can also be more complicated. There is a
protocol for evaluating an attribute expression of a ClassAd vis a vis
another ad. For example, the expression "other.size > 3" in one ad
evaluates to true if the other ad has an attribute named size and the
value of that attribute is (or evaluates to) an integer greater than
three. Two ClassAds match if each ad has an attribute requirements
that evaluates to true in the context of the other ad. ClassAd
matching is used by the Condor central manager to determine the
compatibility of jobs and workstations where they may be run.

Although ClassAds are used extensively within the Condor project, they
are a general-purpose mechanism. This library is being distributed in
the hope that you will find it useful.

===== Credits =====
This version of the ClassAd library was written by Rajesh Raman. Small
contributions and bug fixes where contributed by Su Zhang, Nick
Coleman, and Alain Roy, but really, Rajesh did all of the real
work. The release was prepared by Alain Roy, who is responsible for
maintaining the code.

The original ClassAd library (used in versions of Condor up to 6.4)
was written by various members of the Condor team, with ideas and
inspiration from Miron Livny and Marvin Solomon. Although nary a wisp
of that original code exists in the current implementation, the
everday use and experience with the original code provided much of the
guidance and inspiration for this version.

===== Status ===== 
Version 0.9.2 is an early release. We hope to release version 1.0 in
the near future. Version 1.0 will be more thoroughly tested and will
have better documentation. Please be aware that some of the public
interfaces may change before version 1.0 is released.

===== Documentation and Help =====
There is some documentation online at: 

    http://www.cs.wisc.edu/condor/classad/

Also examine "sample.C", which is a small sample program that should
help you get started.

If you encounter problems that are not solved by the online
documentation or your own perseverance (you do have the source code!),
you have two options:

1) We encourage you to subscribe to the ClassAd mailing list. This
list is for discussion among all ClassAd users, and for occasional
announcements related to ClassAds. To subscribe, send an email to
"majordomo@cs.wisc.edu" with 

subscribe classad-users

in the body of your email. You will be required to confirm your
registration. At least one of the ClassAd developers reads this
mailing list. 

2) If you are unable to resolve your problems on your own or through
the ClassAd mailing list, please email the developers:
condor-admin@cs.wisc.edu. Please make sure that "ClassAd" is in your
subject line. We will do the best we can to answer questions, but
please realize that it sometimes takes a while to do so.

===== License =====
The Condor ClassAd library is an open source release, under the terms
of the GNU LGPL. Please see the LICENSE file for more information.

===== Building ===== 
We have built the ClassAd library on Linux and Solaris. Hopefully it
will build on other systems. 

Building is a two step process: configure and make. The configure
script takes only one argument, --prefix, which specifies where
ClassAds should be installed:

  ./configure --prefix /usr/local/classads/

After the configuration step, build and install ClassAds with:

  make
  make install

Notice that when the library builds, there is a program called
"test_classads". This program is used to verify the ClassAd library
works as we expect it to. Run it with the command:

     ./test_classads tests.txt

When you are learning about ClassAds, you may find it useful to modify
the tests in "tests.txt" and to look at the code in test_classads.C. 

===== Installing =====
Modify the Makefile variable INSTALL_DIR to point at the location you
would like the ClassAd library to be installed. Then just execute
"make install".

===== Using the ClassAd library =====
Once the ClassAd library has been used, you can use it in your C++
programs. You need to include a single file, "classad_distribution.h",
and link with a single library, "libclassad.a". 

===== Feedback =====
Please provide us with feedback. We are working hard to create version
1.0 of the ClassAd library. Your feedback will help us make that
version the best it can be. If you find bugs, missing features, or
signs of insanity, please let us know by contacting us at:
condor-admin@cs.wisc.edu. Please include "ClassAd" in your subject
line. 
