Re: [Plone Mosaic Sprint Barcelona discussion] Re: Plone Mosaic Sprint Barcelona June 10 - 13

Guido Stevens <[email protected]>
Newsgroups gmane.comp.web.zope.plone.devel
Organization Cosent -:- social knowledge technology
Message-ID <[email protected]>
On 15/05/14 13:01, Asko Soukka wrote:
> Guido Stevens wrote:
>>>> What I propose is to take a fresh look at the layout/rendering
>>>> patterns we have and work from first principles, to come up with an
>>>> evolutionary approach that moves us towards a responsive grid layout
>>>> engine, while maintaining "good enough" backward compatibility.
>> At PLOG we validated that it should be possible to intercept portlets
>> and metal:fill-slot="main" assigments.
>
> Could you open this one a bit more? Who should intercept and what should
> be the results?

Thanks for your probing questions, Asko :-).

I want to move away from the paradigm where a page is a big chunk of 
content in the middle surrounded by morsels of extra stuff on the left, 
on the right, above and below. In that logic, #content-core in a sense 
*is* the actual page and the rest is chrome slapped on top of that. That 
gives you a content-centric page model, and a page-centric rendering model.

I'd like to turn that around and work from tiles, or whatever you want 
to call a chunk of html. Tiles, not pages, are the primary rendering 
lego block for me. Such tiles get composited into a page. Of course you 
still have pages. But the resulting page is a consequence of the tile 
composition.

To make that work I'd like to demote #main to "just a tile", albeit one 
which prefers to be rendered big. And I'd like to have portlets play 
nice as citizens of this new world. If we have that, everything becomes 
a display:block chunk of HTML that we can position in a responsive grid. 
That changes our 3-column layout with two portletmanagers and a 
metal:main slot, into a single manageable grid we can rearrange at will 
and reflow responsively. = what

That can only work if we have a smart page composition controller who 
does the rendering and decides which tile should render left, right, 
middle; and how large; and how the responsive reflow should work. = who

The closest we have to that in our current code base are 
portletmanagers, but they only work top-down (single column, 1D). And 
are less than ideal considering the convoluted interactions between 
global assignments, local assigments, local blocks, user assignments 
etc. It pretends to put you as an editor in control, but it gets 
confusing really fast. Maybe we can tune down the "control" pretense a 
bit and arrive at a more elegant solution.

So I'd like to work on a new 2D grid layout controller that is advanced 
enough to provide "good enough" backward compatibility with existing 
portlet assignments. It intercepts all portlets, it intercepts 
metal:main and it throws all of them into a 2D grid. Which we then by 
default make behave as if there's a 25% left, 50% middle and 25% right 
column - have a "fake Sunburst" mode if you will out of the box. But if 
you want something shinier, change the layout logic and suddenly you 
have access to a far bigger space of layout choices than is currently 
available. And you can also insert tiles directly, no need for portlets 
overhead.

The best metaphor is perhaps to have "python-side Diazo". Which can then 
handle far more complex scenarios than you'd want to do with xslt, like 
for example full personalization of layouts.

My business case is that I want to be able to provide a fully 
personalized selection and composition of tiles, based on personal and 
usage characteristics. The actual personalization logic is out of the 
scope here, but creating a rendering engine that is flexible enough to 
provide such a capability is not.

Once we have a powerful 2D grid manager, that of course opens up the 
avenue to realize Deco-like content management affordances as well. But 
I'm keen to solve the problem of compositing transient tiles across a 
whole site first, and not prematurely mix this with the challenge of 
managing multiple persistent WYSIWIG tiles and the acquisition and 
permission headaches that poses.

I hope that's enough to turn your "95%" into a "100%"? ;-)

:*CU#
-- 
     Guido Stevens  |  +31.43.3618933  |  http://cosent.nl

     s o c i a l   k n o w l e d g e   t e c h n o l o g y


------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.