Hey
I was asked to join the conversation by @djowett.
I'm one of the developer and release manager of ftw.simplelayout.
Here are my 5 cents, or probably 10
First of all ftw.simplelayout is not driven by a opensource community, but it's payed and developed by and for our customers. We try to solve their Use-cases with ftw.simplelayout.
Our customers also organise themselves in a community, so they can push somehow in the same direction.
The starting point:
Many years ago We had the following problem.
Our customers are mainly municipalities, Cities and States (Canton in Switzerland), they all faces the same problem:
They're separated in several departments and offices and it's common to have about 200 (and more) individual users, which have to manage a great amount of content. BUT it has to look the same everywhere on the site. You need to recognise the page/layout/style on every site (Usually several 10K sites)
Some example issues:
- No images are places with tinymce, there are only 1, 2, or often 3 image sizes/dimensions allowed on the whole site.
- Listings like galleries or files needs to look the same on whole site.
- Startpage and Portal sites often have some different needs, like a multicolumn layout.
Our goal was to make sure:
- Every site needs to have the same look and feel according to the "Corporate Identity" of our customer
- Many users have to deal with the system and create a lot of content without any training. We usually only train Webmasters and Superusers.
- Manage the balancing act between flexibility to solve their Use-cases, restrictions to keep the look and feel and as easy as possible to use.
Technical solution:
History: We came up with the old BernArticle back on Plone 2.0. --> simplelayout.base --> ftw.contentpage --> ftw.simplelayout.
We are aware of Deco, plone.app.mosaic, collective.collage, etc. but as said before, the package is kind of customer driven and this does not match the goals, strategies and Use-cases of the mentioned packages.
Also the efforts we can put into the package depends on customer plans, so package may lay around for a while, without any progress and suddenly we can spent 200 hours in new features.
Of course you may point out, that if package would be community driven, there are more people involved and therefore more progress and a steady development. But I'm pretty sure the needs of the Plone community and the needs of our customers are not the same and we would end up in a tool with tons of configuration possibilities to fit all the needs everyone has.
Software desin decisions:
-
Blocks are DX-Types (Security/Workflow, Copy/Move, Folderish Blocks, API, many more. You may ask specifically and I try to answer).
-
Almost no TTW configuration. We use adapters to configure and change the behavior of Simplelayout. Only Dev's configure the sites for our customers. This is far more flexible and easier to maintain, than 100 registry entries.
-
We have Slots, Layouts and Columns (They're not DX types)
- Slots: You can put
<div tal:replace="structure simplelayout:name_of_the_slot" />
on any type, which provides the Simplelayout behavior. - Layouts: You can put N Layouts into a Slot. Currently a Layout has onle one property, the amount of columns it contains.
- Columns: Contains the blocks.
- Slots: You can put
-
Every page has a
state
, which represents the order, position, etc. of all layouts, columns and blocks. -
The state is equal to the DOM. We convert the DOM into a JSON structure and store this in annotations on the page.
-
Blocks can have different representations (views)
-
Blocks can have more individual properties. (Like CSS Klasses, data attributes, ect.)
-
Blocks are addable/editable in Overlay
-
Never reload the page, while working on it.
-
... You may ask for more.
Biggest issue:
Styles:
Simplelayout is heavy based on CSS. So we ended up with: "You need to install a theme to actually use simplelayout".
Why? ....aww...ehhh...
We use ftw.theming in our Themes, so you can use SCSS, predefined mixins/structures, Manage style dependencies and a lot more, like Icon libs etc. A great system. But if you only install ftw.simplelayout and ftw.theming, the Sunbirst CSS (Plone 4) makes it unusable. In all our Themes we reset everything and start from scratch. This way it's easy to put the styles needed for Simplelayout into the ftw.simplelayout package not in every Theme.
Btw: ftw.simplelayout was Plone 5 compatible, but unfortunately not anymore, we lost track of it, but it will be compatible soon.
How our customers use ftw.simplelyout
- Usually the know the content they need to create and arrange the layouts to their needs. This example may be a portal page.
- Some content
- Done, or the review process starts.