Mosaic in future versions of Plone

Lately I could do some hands on work with mosaic and really like to use it. It is really easy to include new tiles and except from some known limitations it works quite well for what I have seen. Still I have some questions and want to raise the discussion on the roadmap for inclusion in core. Is this still considered for Plone 5.1? Is there a PLIP for it?

Bevor we can include I think we should have a clear vision of what to do with our other layout components like portlets and even viewlets. Will tiles replace viewlets and even portlets?

For now portlets have a number of advantages compared to tiles:

  • They support inheritance (which is good for some use cases like navigation, news-listings, etc.)
  • They come with a fine grained API for view permissions and conditions
  • There is a big ecosystem of portlets

I think we need a least the following steps:

  1. Create a portlet which allows the inclusion of tiles. Because: If you have a full layout a editor can't understand that he can have widget A in the editoral space in the center but not on the right side.

  2. Create a tile which allows the inclusion of portlets. Same reason as above and don't throw away the ecosystem.

  3. Deprecate and remove viewlets in favor of tiles. We really don't need both, do we? Am I missing something here?

  4. Allow conditions, inheritance, permissions for tiles like similar to portlets.

  5. Deprecate and remove portles in favor of tiles.

Does this sound reasonable? What do others think?

Cheers
Tom

1 Like

I don't think so at this point. I think moving to mosaic might require a major version change.

With going to mosaic, long term, I think it means getting rid of the display menu and default pages(default pages has to be the worst thing to try and explain to users). These are good changes but are disruptive.

This can be solved with a "meta" tile which houses a group of tiles and does the sort of things portlets managers do, just more light weight. In a project I'm working on, I've gotten rid of the concept of portlets and have only tiles. Meta tiles can be added anywhere on the theme and managed without any installation or anything.

I think there are too many steps.... :frowning: I'd prefer a disruptive version of plone(maybe 6), that finally changed the paradigm.

Other things to think about:

  • getting rid of default pages is a huge win
  • migration will be horrible trying to go to the new model with tiles and mosaic layouts
  • theming needs to be re-thought with layouts in mind(site and context). I've done away with diazo in a project in favor of simply layout files which only render tiles. Still can use the theming editor and much of the infrastructure--just don't need the transform.
  • our customization and add-on story potentially gets vastly simplified. Everything either has to do with tiles, layouts, css, js and configuration. No viewlets, viewlet managers, portlets, portlet managers.

I'm throwing around a lot of thoughts here and nothing is obvious as to what we should do.

Thanks for starting the discussion. I've been wanting to start talking about this myself for a long time.

2 Likes

@tomgross Thanks for the great post about adding new tiles into Mosaic. Are we allowed to make that post into Mosaic docs?

I agree with @vangheem that installing Mosaic by default requires a major release (in addition to a lot of work in Mosaic). Yet, I believe, it can be bundled similary to plone.app.multilingual for easy installation. Maybe we should make a plip for that to figure out all the missing pieces. If 5.1 comes too early already, but maybe 5.2. There are some major issues like accessibility, localization of Mosaic toolbar, and CMFEditions not working with blobs in persistent tiles.

The original Blocks paper is a good read: https://github.com/plone/plone.app.mosaic/raw/master/docs/Blocks.pdf

It also raises these still unsolved issues.

Mosaic supports multiple editable areas ("panels") in main teplate ("site layout"). Simply have classic portlet with <div data-panel="left-column">Placeholder</div>. (Although, I recall editor having issues with empty panels.) Of course, there's still no inheritance: adding tile into portlet column is only visible on the page where it was added.

There are tiles for inclusion of viewlets and portlets, but viewlet tile is intended only for manual use and portlet tile is disabled in Mosaic registry by default (the implementation was a bit tricky, and supporting it may not be fun in the long run).

1 Like

@datakurre you are welcome to reuse the documentation