Over its architectural history, KARL went from 100% Plone out-of-the-box, to using Plone-the-framework, and finally to using a subset of Plone/Zope technologies in a Python-oriented web framework.
This document explains the KARL3 architecture to a Plone developer.
Plone is a content management system built on a technology stack that includes Zope (application server) and Python (programming language). As an end-user product, Plone contains a lot of architecture and policy for its target. If you aren’t doing content management, then using the needed technology of Plone, without the unneeded technology and unwanted policy, is an attractive proposition.
KARL3 does just this. A small, high-performance, and forward-looking set of the technologies in the Plone stack form the architecture for KARL. These technologies have been re-organized in a Python-friendly context called “Repoze”, with the following characteristics:
Building KARL on a lighter architecture gives a number of critical benefits:
A Plone developer would classically start with all of Plone then add to it. This means Zope2, Zope3 (via Five), CMF, ZPT, DTML, Archetypes, Zope 3 interfaces, workflow, 2 flavors of security, etc. Instead of the monolith, we start with Repoze components and only pay for what we eat:
A competent Plone developer is also a competent Zope developer, and competent Zope developers will find much that is familiar in KARL3. Here is a partial list:
At the same time, a modern Zope developer is, hopefully, ready to re-join the Python mainstream. KARL3 is friendly towards Python web developers as well: