Apache DataSketches (incubating) is an effort undergoing incubation 
at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. 

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 known
issues the project is currently aware of (note that this list, by
definition, is likely to be incomplete): 

 * No issues are known at this time. 

If you are planning to incorporate this work into your
product or 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: 

http://incubator.apache.org/projects/datasketches.html
