Apache Sling is a open source content management system that is heavily based on the Java Content Repository specification. In short: Everything is considered to be content in such a system. I attended the adaptTo() conference in Berlin (Sep, 25th – 27th) to find out more about how such a system would help Intershop’s own CMS. This article is to convey my findings on Apache Sling. All of what I gained from speeches and personal talks. I have not verified this in any manner but hopefully will do that in the near future.
Key takeaways
- Versioning concept is inherently present as the Java Content Repository specification already contains such a concept
- Access control management per content object is also available thanks to the JCR
- Naturally blends in to tree data structures such as our page composition concept with Page, Page Variant, Slot, Component, Slot, Sub Component and so on
- JCR nodes can have types and mix-ins associated with them. Even though that this is not a strong type-value relation as with our Pagelet <-> Pagelet Model Definition semantic
- Special knowledge and tweaking is needed from time to time to cope with performance issues
- Good scalability and service isolation
In detail
Versioning and access control management are highly requested features to our customers. It seems that the pure existence of these concepts is making our live much easier. Of course these concepts must be embedded into a state of the art user interface. So there’s still work left to do. From talks with people I learned also that such a repository needs taming. A content repository cannot be viewed as just another database system. It’s a complete new stack. So all knowledge about database and IS 7 performance improvement (create an index, increase the size of miss-caches) would not be applicable here.
If written well and correct, rendering script code in Sling can be the key to solve migration. Remember, everything is considered to be content also the script code itself (i.e. JSP, JS, HTL etc.). Data entered by content editors over time is the main business value. You don’t want to do it again just because a migration to a new platform is around the corner. Sling provides us with the necessary flexibility to execute rendering code that can cope with all the different data structure changes that can happen over time. Provided that the rendering script itself is not doing something wrong.
Links
- Apache Sling: https://sling.apache.org/
- Wikipedia: https://en.wikipedia.org/wiki/Content_repository_API_for_Java
- JCR Specification 2.0: https://jcp.org/aboutJava/communityprocess/final/jsr283/index.html
- AdaptTo: https://adapt.to/