Apache Sentry is an effort undergoing incubation at the Apache Software
Foundation (ASF), sponsored by the Apache Incubator Project Management
Committee.

Incubation is required for all newly accepted projects until a further review
indicates that the infrastructure, communications, and decisions 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.

For more information about the incubation status of the Sentry project you can
go to the following page:

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