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 the 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
