DISCLAIMER-WIP

Apache Hop is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the name of Apache TLP sponsor.
Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications,
and decision-making process have stabilized in a manner consistent with other successful ASF projects.
While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

Some of the incubating project’s releases may not be fully compliant with ASF policy.
For example, releases may have incomplete or un-reviewed licensing conditions.
What follows is a list of issues the project is currently aware of (this list is likely to be incomplete):

The source code contains code that is not licensed under the Apache 2.0 License, See LICENSE file for more information

If you are planning to incorporate this work into your product/project, please be aware that you will need to conduct a thorough licensing review to determine the overall implications of including this work.
For the current status of this project through the Apache Incubator, visit: https://incubator.apache.org/projects/hop.html