Copyright (c) 2000, 2003

The Open Services Gateway Initiative
Bishop Ranch 2
2694 Bishop Drive
Suite 275
San Ramon
CA 94583 USA

All Rights Reserved.

LEGAL TERMS AND CONDITIONS REGARDING SPECIFICATION

Implementation of certain elements of the Open Services Gateway
Initiative (OSGi) Specification may be subject to third party
intellectual property rights, including without limitation, patent
rights (such a third party may or may not be a member of OSGi).  OSGi is
not responsible and shall not be held responsible in any manner for
identifying or failing to identify any or all such third party
intellectual property rights.

THE RECIPIENT ACKNOWLEDGES AND AGREES THAT THE SPECIFICATION IS PROVIDED
"AS IS" AND WITH NO WARRANTIES WHATSOEVER, WHETHER EXPRESS, IMPLIED OR
STATUTORY, INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF
MERCHANTABILITY, NONINFRINGEMENT, FITNESS OF ANY PARTICULAR PURPOSE, OR
ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR
SAMPLE.  THE RECIPIENT'S USE OF THE SPECIFICATION IS SOLELY AT THE
RECIPIENT'S OWN RISK.  THE RECIPIENT'S USE OF THE SPECIFICATION IS
SUBJECT TO THE RECIPIENT'S OSGi MEMBER AGREEMENT, IN THE EVENT THAT THE
RECIPIENT IS AN OSGi MEMBER.  IN NO EVENT SHALL OSGi BE LIABLE OR
OBLIGATED TO THE RECIPIENT OR ANY THIRD PARTY IN ANY MANNER FOR ANY
SPECIAL, NON-COMPENSATORY, CONSEQUENTIAL, INDIRECT, INCIDENTAL,
STATUTORY OR PUNITIVE DAMAGES OF ANY KIND, INCLUDING, WITHOUT
LIMITATION, LOST PROFITS AND LOST REVENUE, REGARDLESS OF THE FORM OF
ACTION, WHETHER IN CONTRACT, TORT, NEGLIGENCE, STRICT PRODUCT LIABILITY,
OR OTHERWISE, EVEN IF OSGi HAS BEEN INFORMED OF OR IS AWARE OF THE
POSSIBILITY OF ANY SUCH DAMAGES IN ADVANCE.

THE LIMITATIONS SET FORTH ABOVE SHALL BE DEEMED TO APPLY TO THE MAXIMUM
EXTENT PERMITTED BY APPLICABLE LAW AND NOTWITHSTANDING THE FAILURE OF
THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDIES AVAILABLE TO THE
RECIPIENT.  THE RECIPIENT ACKNOWLEDGES AND AGREES THAT THE RECIPIENT HAS
FULLY CONSIDERED THE FOREGOING ALLOCATION OF RISK AND FINDS IT
REASONABLE, AND THAT THE FOREGOING LIMITATIONS ARE AN ESSENTIAL BASIS OF
THE BARGAIN BETWEEN THE RECIPIENT AND OSGi.  IF THE RECIPIENT USES THE
SPECIFICATION, THE RECIPIENT AGREES TO ALL OF THE FOREGOING TERMS AND
CONDITIONS.  IF THE RECIPIENT DOES NOT AGREE TO THESE TERMS AND
CONDITIONS, THE RECIPIENT SHOULD NOT USE THE SPECIFICATION AND SHOULD
CONTACT OSGi IMMEDIATELY.

Trademarks

OSGi(TM) is a trademark, registered trademark, or service mark of The
Open Services Gateway Initiative in the US and other countries.  Java is
a trademark, registered trademark, or service mark of Sun Microsystems,
Inc.  in the US and other countries.  All other trademarks, registered
trademarks, or service marks used in this document are the property of
their respective owners and are hereby recognized.

Feedback

This specification can be downloaded from the OSGi web site:
http://www.osgi.org.  Comments about this specification can be mailed
to: speccomments@mail.osgi.org

