Lightning talks Monday
Lightning talks on Monday at Plone Conference 2020
A new add-on to vastly* improve your content editing experience.
(* size of improvement may vary, no warranty implied. The following is (un)paid free software promotional content)
Adding images to a document is so hard! At least nine steps! (Difficulty be exaggerated for marketing purposes). Why can't you drop an image in? You can, with our new, super special add-on krcw.tinymce_imagedrop.
Can you drop two? Yes!
Can you drop more than two? No, because browsers are weird.
But it fails gracefully.
How I learned to stop worrying and love web forms. We must have a good interface, data structure, validation, security. Deform (form library), colander (de/serialization), peppercorn (data structure), bootstrap forms for design. We have a looooong list of widgets. In deform 3.0 we will use bootstrap 5. See https://github.com/pylons/deform
Plone relational database backend storage. It is a drop-in replacement for FileStorage of ZEO. You can use PostgreSQL, MySQL, Oracle, SQLite. It has been around for about 13 years, grown old, but in recent years development has picked up, driven by Jason Madden, including Python 3 support. It is much more performant. Latest release 3.4.0 is form October 2020.
PostgreSQL is the cloud database, kind of industry standard, well supported by all big cloud providers. Easy to install in Docker.
Advantages of RelStorage: fast, parallel commits, better concurrency, shorter locks. Optimized per process caching. Blobs in database. Optionally you can use it in history free mode. You lose the Undo functionality, but you don't need to pack so often.
plone.recipe.zope2instance supports it with the rel-storage option.
You can use additional client side caches, shared between all threads of a process.
With the zodbconvert tool you convert from ZEO to RelStorage, or the other way around, including converting blobs if needed.
ZODB keeps old transactions, so packing is needed, even in history free mode. RelStorage has a fast zodbpack.
RelStorage 3.x is Python 3 only and runs with Plone 5.2+. Here, blobs should be stored in RelStorage.
RelStorage 2.x is for Plone 5.0, 5.1, and blobs should **not** be stored in the database, except for Oracle backends, otherwise you should still use a shared blobs filesystem directory.
I use RelStorage today for all my live deployments. I have used it since version 1.6 with Plone 4.3 and never had problems. Always blazing fast. Dev/ops and sysadmins love it: it is a standard solution, nothing special, just works.
We want to bring back an add-on catalog for Plone. You can look on PyPI, but it is hard to find packages.
We worked on a tool for this. You can search on named, filter on Plone versions and add-on types.
- The Python Package Filter Aggregator (pyf.aggregator) aggregates the meta information of all Python packages in the PyPI.
- an api using elasticsearch
- a prototype in Svelte
We only aggregate packages that have classifier Plone :: Framework. We will probably work on this during the sprints and are happy to onboard you.
Both platforms are for building websites, but they approach things in different ways. I hope this may inspire. Keep in mind the motivation of the two platforms, which may account for some strengths and weaknesses.
Webflow is visual web design, less content management. Strong design tools. Designer friendly layout tools. You can design a page with what you could call blocks.
Plone is enterprise content management, focus on security. Linking to an attachment is standard, where it is tricky in Webflow. Forms are way more flexible.
We have also built a website in Webflow and based it on Plone.
It is easy to create a such a project. Demo. See https://stevepiercy.github.io/pppp/
- Created by Eau de Web team
- Dependencies: Volto blocks form
- Similar component: Volto columns block
- Use it to organize other blocks.
- Demo showing lots of configuration options, including for different screen sizes
- See https://github.com/eea/volto-grid-block
Custom elements are an extension to normal native html elements, for example <flag-icon>.
The promise of web components: write once, use anywhere. See https://custom-elements-everywhere.com/
How do you use this in Plone? Use plonecli add svelte_app to create a small app. Run yarn. Install in Plone add-ons control panel. Edit a page. Replace html source with <my-svelte-app />. And your component is there and working. The size is less than five kilobytes.
volto-slate is a drop-in replacement for the standard rich text editor in Volto. Volto turns an HTML document into a modern document.
Why another text editor instead of improving the existing one?
- With Slate we get a better plugin framework. Plugins are just wrappers around the editor. The standard Draft.js is meant to be integrated directly by an application, no concept of plugins out-of-the-box.
- Slate has simple DOM-like storage for its values, making it easier to render the ersult.
- No migrations of any kind.
- Right now not possible to completely remove or replace Draftjs out of Volto.