Repoinit: a mini-language for content repository initialization

The Apache Sling repoinit language and processor were created in early 2016, and have been steadily getting more attention since then.

Repoinit scripts are used to create initial content structures, define JCR node types, setup access control, service users and other security-related features, in a way that's easy to review and validate.

A strong specification of the initial state of the content repository is key to setting up immutable Sling instances. It also helps manage the evolution of cloud-centric systems in a traceable way, based on a "diff-friendly" language.

In this talk we'll present the repoinit mini-language, which is easy to understand, having been designed for readability and "obviousness".

We'll also talk about the benefits of using a grammar-driven parser instead of rolling your own, as that's been key to keeping the repoinit codebase manageable and easy to evolve. Using automated tests as reference documentation is another area where the initial design brings ongoing rewards in terms of keeping the docs and common understanding up to date.

This talk will help you understand repoinit better and also give insights on a successful software design, based on simple but important principles.