Apache Felix Karaf :: Assembly
Copyright 2010 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 includes software developed at
The Eclipse Foundation (http://www.eclipse.org/).
Licensed under Eclipse Public License 1.0.

This product includes software developed at
OPS4J (http://www.ops4j.org/).
Licensed under the Apache License 2.0.

This products includes software developed at
The OSGi Alliance (http://www.osgi.org/).
Licensed under the Apache License 2.0.

This product includes software developed at
FUSE Source (http://www.fusesource.org/).
Licensed under the Apache License 2.0.

This product includes software developed at
JLine (http://jline.sourceforge.net).
Licensed under the BSD License.

This product includes software developed at
SLF4J (http://www.slf4j.org/).
Licensed under the MIT License.

This product includes software from http://www.json.org.
Copyright (c) 2002 JSON.org

The PDF manual has been generated using http://www.princexml.com/
and contains an attribution which should not be removed by
licensee.

II. Used Software

This product uses software developed at
SpringSource (http://www.springsource.org/).
Licensed under the Apache License 2.0.

This product uses software written by
Antony Lesuisse.
Licensed under Public Domain.


III. License Summary
- Apache License 2.0
- Eclipse Public License 1.0
- BSD License
- MIT License


