Top Banner
Plone Futures Plone Conference 2016
70

Plone Futures

Apr 15, 2017

Download

Technology

Eric Steele
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Plone Futures

Plone FuturesPlone Conference 2016

Page 2: Plone Futures

It's great to have Plone back here in the US. It's been far too long. To our international visitors, it's wonderful to have you here and I'm glad we could get you here for one last visit before the wall goes up.

Welcome to Boston!

Page 3: Plone Futures

Fifteen years

Page 4: Plone Futures

This is always the hardest of the "what's coming in Plone" talks to give. We've spent the last few years talking about what Plone 5 would look like and how we were progressing towards that. And it was a hugely sucessful release.^ Lots of positive attention, Dexterity, Deco.

Page 5: Plone Futures

But the .1 release is always the super boring one.

Plone 5.1The release where we apologize for everything we did to you in 5.0.

Page 6: Plone Futures

Prevent over-generation of js/css files (1 of each per add-on). Allow add-ons to add their resources to “default” (available at all times) or “logged-in” (only for authenticated users) bundles. https://github.com/plone/documentation/pull/529/files

Meta bundles generation

Page 7: Plone Futures

(have to check multiple places to see if package is installed)Largely unused and an old implementation of OpenID. Remove it from core, live as add-on.

Get rid of portal_quickinstaller• Currently two ways of installing products: GenericSetup and

CMFQuickInstaller• From a user standpoint, needlessly complicated.• From developer standpoint, also needlessly complicated

• @@installer• Only handle GS profiles• Standardize on "default" and "uninstall" profile names

Page 8: Plone Futures

Add actions control panel to Plone. one of the main reasons people need to go into the ZMI right now.

Portal actions control panel

Page 9: Plone Futures

Scale images in plone.scale such that they will look good on devices with pixel ratios greater that 1. More and more devices these days can display images with higher resolution than the html/css resolution. Plone however often serves images that are scaled to the exact same size as html/css resolution, while a lot of devices can display twice the resolution.

Retina image scales

Page 10: Plone Futures

Read image EXIF information to automatically rotate them if necessary.

Auto-Rotation for Images

Page 11: Plone Futures

Plone 5.x

Page 12: Plone Futures

Add new option to search control panel setting the default ordering of @@search

Easily change default search order

Page 13: Plone Futures

Add installed, not-installed, have, not-have conditions to registry.xml records to control whether or not theyʼre imported. Particularly useful when it comes to registering resources in add-ons that target multiple versions of Plone.

conditionally import registry records• installed• not-installed• have• not-have

Page 14: Plone Futures

Merge it into CMFPlone, so there's one less package. Add a new Plone control panel, so you don't have to go through the ZMI, with a cleaner, more usable interface.

Merge Products.RedirectionTool into core• Merge into CMFPlone• New control panel

Page 15: Plone Futures

Registry Improvements• Add ability to add/edit/delete records from control panel• Import/export capability

Page 16: Plone Futures

Remove support for old style resource registries• Drop use of cssregistry.xml, jsregistry.xml• Fail loudly, so users know why the old way doesn't work

Page 17: Plone Futures

Add ability to require email verification before account is activated. Particularly important on self-registration-enabled sites.

Merge collective.emailconfirmationregistration into core

Page 18: Plone Futures

Assimilate collective.indexing• Queued indexing, happens only once per transaction• Significant performance improvements• Allows other indexers (like SOLR) to be notified on any indexing

operations

Page 19: Plone Futures

Begin removing existing Backbone code, more use of React instead.

Use React in core, deprecate Backbone

Page 20: Plone Futures

Framework Fight!

Page 21: Plone Futures

Which I'm pretty sure was written by a spambot, because I don't understand any of it.

Reset define in RequireJS after bundles are loaded

“Reset the requirejs define global variable in Plone so add-on developers do not have to learn how to use requirejs if they are including js that expect requirejs to be used.”

Page 22: Plone Futures

Whereas Diazo handles theming -- the entire site design, Mosaic is focused on just the layout/display of content- Create complete page layouts, through the web, by placing tiles of content the page.- This can be text, images, specific field values, collection results, embeddable media.- Responsive grid, collapse nicely on smaller screens- Page layouts can be saved and reused, set as default views for new content. - And the ability to limit which users can use the which (or any) layouts

Mosaic• Content layout• "Tiles"

Page 23: Plone Futures
Page 24: Plone Futures

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-layout="./@@page-site-layout">

Page 25: Plone Futures

<div class="mosaic-grid-row"> <div class="mosaic-grid-cell mosaic-width-half mosaic-position-leftmost"> <div class="movable removable mosaic-tile mosaic-ingredients-tile"> <div class="mosaic-tile-content"> <div data-tile="./@@plone.app.standardtiles.field?field=ingredients"></div> </div> </div> </div> <div class="mosaic-grid-cell mosaic-width-half mosaic-position-half"> <div class="movable removable mosaic-tile mosaic-directions-tile"> <div class="mosaic-tile-content"> <div data-tile="./@@plone.app.standardtiles.field?field=directions"></div> </div> </div> </div> </div>

Page 26: Plone Futures

<div class="mosaic-grid-cell mosaic-width-half mosaic-position-half">

Page 27: Plone Futures

<div data-tile="./@@plone.app.standardtiles.field?field=directions">

Page 28: Plone Futures

Extending this further...• Using diazo, plone.resource for ttw application development• Asko: “fat themes”

Page 29: Plone Futures

collective.themefragments^ Shoving more into themes, so that theyʼre no longer just design, but also functionality^ Export current site setup as “theme”^ Do we need to worry about this? Drupal is notorious for having themes that decide things like which text editor youʼll be using

Fat Theme• Theme fragments (Zope PageTemplate files) living in theme

package, rendered as a tile. (collective.themefragments)• Design + Functionality• Embed genericsetup profiles in zipped theme packages

(collective.themesitesetup))• Dexterity content types• TTW permissions

^ Maybe these aren't just themes,

Page 30: Plone Futures

We can also do some pretty amazing stuff with this concept. This is Rapido, you can go to Eric Brehault's talk to hear more about it. But I guarantee you'll be hearing a lot about this in the next few years.

Page 31: Plone Futures

https://summerofcode.withgoogle.com/organizations/6123238505578496/?sp-page_size=48#6248572219555840

GSOC

Page 32: Plone Futures

Vikas Parashar: Themes

Page 33: Plone Futures

"Clean Blog"

Page 34: Plone Futures

"Spot"

Page 35: Plone Futures

"Booster"

Page 36: Plone Futures

"Business Casual"

Page 37: Plone Futures

"Future Imperfect"

Page 38: Plone Futures

http://googlingsummer.blogspot.in/2016/08/summarizing-summer.html

Parker Joshi: collective.easyforms• Dexterity-based form creation• Migrations from PloneFormGen• Plone 5 compatibitlity

Page 39: Plone Futures
Page 40: Plone Futures
Page 41: Plone Futures

http://blog.jensenjiang.com/2016/08/20/GSoC-2016-product/

Jensen Jiang (ftw.book)• “proceedings” layout• Plone 5 support

Page 42: Plone Futures

Plone Futures

Page 43: Plone Futures

Plone 2020• APIs (hide complexity)

• REST API (plone.restapi)• Python API (plone.api)

Page 44: Plone Futures

Plone 2020• Improve TTW customization• Improve training/documentation

Page 45: Plone Futures

Training this week has been huge success, greatly improved our available training material.^ Training as vital to bringing in new users/contributors

training.plone.org

Page 46: Plone Futures

Plone 2020• Cleaner codebase

• Simplify structure• Remove unused functionality/code

Page 47: Plone Futures

Alpine City Sprint^[Zope Resurrection Sprint](https://blog.gocept.com/2016/10/04/zope-resurrection-part-2-First step towards making Plone Python 3 compatbile^ With Python 2 nearing end-of-life, we need to be making our way towards Python 3.^ Interim step for Plone

Zope2 / Update Dependencies• Update dependencies to latest versions

• ZTK• Zope• ZODB3

• Most are Python 3 compatible• Minimal cleanup

Page 48: Plone Futures

The Headless CMS

Page 49: Plone Futures

Content management systems have traditionally been broken down into three layers^ Holds and serves the content.^ The functionality that allows you to add/edit/delete and otherwise manage the content^ And the one that provides the visual representation of that contentSo when we use the term "headless", we're talking about removing that final presentation layer, creating a clear separation between the front and back ends of the CMS.^ Separation of the front and back ends of the CMS^Backend handles storage, serving content via API

Three layers of CMS• Content Storage• Content Management• Content Presentation

Page 50: Plone Futures

Mobile growing into a larger percentage of traffic. Headless positions plone well for succeeding as things trend in that (mobile) direction.

CMS Front end• Traditional Web

• Dynamic• Static

• Mobile• Native App/Application• IoT• Other systems/services

Page 51: Plone Futures

Is the CMS the center of the experience or a part of the whole?

Page 52: Plone Futures

The thing is, the recent trends have leveled the playing field. The headless CMS and microservices reduce the reliance that organizations have on commercial CMSs. It's harder

Page 53: Plone Futures

Existing options from other old-school CMS tend to focus on adding an API and saying "just ignore the frontend"^ Typically deemed “Decoupled”

The Decoupled CMS* Existing system + API

Page 54: Plone Futures

If that's good enough for us, we're already there. Yay!plone.rest provides the basic infrastructure that allows us to build RESTful endpoints in Plone.^ plone.restapi integrates that with the existing Plone functionality^ In alpha

The Decoupled CMS• plone.rest• plone.restapi

Page 55: Plone Futures

“Note, however, that many of the traditional products that now offer headless capabilities were not really architected for these use cases. In fact, when some of those products were created, multi-channel only meant delivery to multiple websites. Building these capabilities is only adding to their complexity.”

--Apoorv Durga

Page 56: Plone Futures

So we said, yeah, ok. We're already talking about simplifying our stack.

Page 57: Plone Futures

Three Teams• REST API• Front-end

• Works with plone.server or plone 5 + restapi• Basic plone ui: navigation, toolbar, login/logout• Handles form generation, read json schema, determine widgets, • Theme, which can be overridden at build time• server side rendering via Angular Universal• views (add/edit/view, or custom)

Page 58: Plone Futures

If you want something fun, have an american, fin, and catalan all try to spell 'aiohttp'

Three Teams• Back-end

• aiohttp-based HTTP server (asynchronous, handles multiple concurrent transactions)

• Plone's Dexterity framework (sans views/forms)• Zope Tool Kit (ZTK)• ZODB• Python 3.5+

Page 59: Plone Futures

Concurrent development• Two approaches, in opposite directions:

• Start with everything and remove what we don’t need/want. • Start with nothing and add back everything we want.

Page 60: Plone Futures
Page 61: Plone Futures
Page 62: Plone Futures
Page 63: Plone Futures
Page 64: Plone Futures
Page 65: Plone Futures
Page 66: Plone Futures

When we talk about removing everything, people get a bit freaked out. WE've been around for 15 years now and we've already removed a lot of old and/or unused functionality. Let's take a moment to remember those we've left behind and how far we've come.

Page 67: Plone Futures
Page 68: Plone Futures
Page 69: Plone Futures
Page 70: Plone Futures