Apache Karaf
Copyright 2010-2014 The Apache Software Foundation


I. Included Software

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.

This product uses software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright (c) OSGi Alliance (2000, 2010).
Licensed under the Apache License 2.0.

This product includes software developed at
OW2 (http://www.ow2.org/).
Licensed under the BSD License.

This product includes software developed at
OPS4J (http://www.ops4j.org/).
Licensed under the Apache License 2.0.

This product includes software developed at
Eclipse Foundation (http://www.eclipse.org/).
Licensed under the EPL.

This product includes software written by
Antony Lesuisse.
Licensed under Public Domain.


II. Used Software

This product uses software developed at
FUSE Source (http://www.fusesource.org/).
Licensed under the Apache License 2.0.

This product uses software developed at
AOP Alliance (http://aopalliance.sourceforge.net/).
Licensed under Public Domain.

This product uses software developed at
Tanuki Software (http://www.tanukisoftware.com/).
Licensed under the Apache License 2.0.

This product uses software developed at
Jasypt (http://jasypt.sourceforge.net/).
Licensed under the Apache License 2.0.

This product uses software developed at
JLine (http://jline.sourceforge.net).
Licensed under the BSD License.

This product uses software developed at
SLF4J (http://www.slf4j.org/).
Licensed under the MIT License.

This product uses software developed at
SpringSource (http://www.springsource.org/).
Licensed under the Apache License 2.0.

This product includes software from http://www.json.org.
Copyright (c) 2002 JSON.org


III. License Summary
- Apache License 2.0
- BSD License
- EPL License
- MIT License
