plone futures, plone conference 2016 keynote by eric steele

70
Plone Futures Plone Conference 2016

Upload: t-kim-nguyen

Post on 15-Apr-2017

109 views

Category:

Technology


1 download

TRANSCRIPT

Plone FuturesPlone Conference 2016

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!

Fifteen years

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.

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.

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

(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

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

Portal actions control panel

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

Read image EXIF information to automatically rotate them if necessary.

Auto-Rotation for Images

Plone 5.x

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

Easily change default search order

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

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

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

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

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

Merge collective.emailconfirmationregistration into core

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

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

Use React in core, deprecate Backbone

Framework Fight!

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.”

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"

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

<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>

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

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

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

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,

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.

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

GSOC

Vikas Parashar: Themes

"Clean Blog"

"Spot"

"Booster"

"Business Casual"

"Future Imperfect"

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

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

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

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

Plone Futures

Plone 2020• APIs (hide complexity)

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

Plone 2020• Improve TTW customization• Improve training/documentation

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

Plone 2020• Cleaner codebase

• Simplify structure• Remove unused functionality/code

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

The Headless CMS

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

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

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

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

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

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

“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

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

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)

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+

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.

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.