Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM),
and CoSMIC(TM)

ACE(TM), TAO(TM), CIAO(TM), and CoSMIC(TM) (henceforth referred to as
"DOC software") are copyrighted by Douglas C. Schmidt and his research
group at Washington University, University of California, Irvine, and
Vanderbilt University, Copyright (c) 1993-2009, all rights reserved.
Since DOC software is open-source, freely available software,
you are free to use, modify, copy, and distribute--perpetually and
irrevocably--the DOC software source code and object code produced
from the source, as well as copy and distribute modified versions of
this software. You must, however, include this copyright statement
along with any code built using DOC software that you release. No
copyright statement needs to be provided if you just ship binary
executables of your software products.

You can use DOC software in commercial and/or binary software releases
and are under no obligation to redistribute any of your source code
that is built using DOC software. Note, however, that you may not do
anything to the DOC software code, such as copyrighting it yourself
or claiming authorship of the DOC software code, that will prevent
DOC software from being distributed freely using an open-source
development model. You needn't inform anyone that you're using DOC
software in your software, though we encourage you to let us know so
we can promote your project in the DOC software success stories.

The ACE, TAO, CIAO, and CoSMIC web sites are maintained by the
DOC Group at the Institute for Software Integrated Systems (ISIS)
and the Center for Distributed Object Computing of Washington
University, St.  Louis for the development of open-source software
as part of the open-source software community. Submissions are
provided by the submitter ``as is'' with no warranties whatsoever,
including any warranty of merchantability, noninfringement of
third party intellectual property, or fitness for any particular
purpose. In no event shall the submitter be liable for any direct,
indirect, special, exemplary, punitive, or consequential damages,
including without limitation, lost profits, even if advised of the
possibility of such damages. Likewise, DOC software is provided
as is with no warranties of any kind, including the warranties
of design, merchantability, and fitness for a particular purpose,
noninfringement, or arising from a course of dealing, usage or trade
practice. Washington University, UC Irvine, Vanderbilt University,
their employees, and students shall have no liability with respect to
the infringement of copyrights, trade secrets or any patents by DOC
software or any part thereof.  Moreover, in no event will Washington
University, UC Irvine, or Vanderbilt University, their employees, or
students be liable for any lost revenue or profits or other special,
indirect and consequential damages.

DOC software is provided with no support and without any obligation on
the part of Washington University, UC Irvine, Vanderbilt University,
their employees, or students to assist in its use, correction,
modification, or enhancement. A number of companies around the world
provide commercial support for DOC software, however.

DOC software is Y2K-compliant, as long as the underlying OS platform
is Y2K-compliant. Likewise, DOC software is compliant with the new US
daylight savings rule passed by Congress as "The Energy Policy Act
of 2005," which established new daylight savings times (DST) rules
for the United States that expand DST as of March 2007. Since DOC
software obtains time/date and calendaring information from operating
systems users will not be affected by the new DST rules as long as
they upgrade their operating systems accordingly.

The names ACE(TM), TAO(TM), CIAO(TM), CoSMIC(TM), Washington
University, UC Irvine, and Vanderbilt University, may not be used
to endorse or promote products or services derived from this source
without express written permission from Washington University, UC
Irvine, or Vanderbilt University. This license grants no permission to
call products or services derived from this source ACE(TM), TAO(TM),
CIAO(TM), or CoSMIC(TM), nor does it grant permission for the name
Washington University, UC Irvine, or Vanderbilt University to appear
in their names.

If you have any suggestions, additions, comments, or questions,
please let me know.

Douglas C. Schmidt
