Weblog

published Nov 03, 2021, last modified Nov 04, 2021

Guido Stevens: Quaive Roadmap 2025

published Oct 05, 2023

Talk by Guido Stevens at Plone conference 2023, Eibar, Basque County.

Quaive is an intranet for Plone. First full version is from 2015.

This summer we did a full redesign and rewrite of the notifications in Quaive. For various categories you can choose how you want to receive notifications.

We have a lot on our plate, for example:

  • Componentization and design system
  • Collaborative editing, Johannes will talk about this after my talk.
  • Search subsystem. Solo upgrade. Do we need an AI search? Also panel discussion after Johannes' talk.

Consultant-ware is bad business: you treat Plone as a half product, and promise the customer to build the other half. Instead we prefer a high-quality out-of-the-box base product that you can extend if needed.

There is a trade-off between customisability and a good UX. Between cheap, fast and quality you can choose two. I have seen customisation as quality, but really this is a fourth dimension. We do not want cheap customisations, which are really hacks. We need to build a proper solution into a product. This can still be fairly easy: a custom theme. Or a general product usable by all customers.

Commercial open source. If we see a bug in the base product that we want to fix, it is stuff we decide on, so we pay for it. The customer gets no extra bill, it is covered in their subscription. If the customer sees a bug that they want us to fix, then they pay for it.

Reframe the conversation. Developers can think in terms of costs and development time of a feature. The customers care about the value that a feature brings. We should think beyond coding for money. If you are here for the money, you should leave, because you can make more money outside of open source.

You have four organisation types:

  • Blue: machine bureaucracy, top down, control, efficiency, protocol focus, inward looking. In tenders you need to check all the boxes, otherwise you do not get this customer. Optimised towards efficiency.
  • Orange: effective organisation. Sales. Rules are important, but results are more important. Goal seeking. These customers always want more features. Outward looking, but still control. Optimised towards opportunity.
  • Then comes the big shift, with bottom-up empowerment.
  • Green: professional organisation. Self-managing teas, consensus drive, it is about people and feelings, trust. The people who do the actual work are more knowledgeable than their managers, who are there to make things work smoothly. Tech agnostic. Inward looking and empowerment focused. Optimised towards trust.
  • Yellow: network organisation. Fluid and networked, project structure, win-win value creation. There is often more value than money. Outward looking and empowerment focused. Optimised towards innovation.

Really every organisation needs all these layers: blue, orange, green, yellow. How does Quaive do this?

  • Blue: document management, news items (top down)
  • Orange: to-do app, process support
  • Green: conversations, workspaces, global activity stream, groups
  • Yellow: where is the knowledge: see who is specialised in a subject. Open networking.

Integrate this with "pervasive affordances", something you have throughout the stack: tagging, linking, conversation, search, etc.

Quaive project roadmap: agile project management. Kanban boards, roadmap timeline, live progress data instead of strict planning, project analytics. New pervasive affordance needed: make everything actionable. This gives more process support, which is mainly for orange organisations, but every organisation needs it to some extent.

Olatz Perez de Viñaspre: The effect of social biases in language models

published Oct 05, 2023

Keynote talk by Olatz Perez de Viñaspre at Plone conference 2023, Eibar, Basque Country.

Current language models are trained on huge amounts of texts. The quality and content of such text has a direct effect on the new generations created by the language model. In this talk we will focus on how language models reproduce the biases present in society.

Models are big. For the Falcon model you need 400 GB on your computer.
Masked language models predict hidden words in sentences. ChatGPT is a Causal Language Model, or generative model. That is currently the biggest part of the language models evolutionary tree.
The language corpus of ChatGPT is roughly 90 percent English. German is 0.17 percent. So what happens, is that the models have an Anglo-centric bias.
Most systems are proprietary, not open source. Meta had the Llama model, with 68% performance compared to ChatGPT. It went open source and three weeks later it was more than 90%.
Bias: allocational or representational harm. In one model, black persons were sometimes recognised as monkeys because the model had not been trained well enough on faces of black persons. Also, calling a woman "independent" is positive, but it is still a bias: you don't often call a man independent.
How do you measure bias? Manually made datasets often contain problems: they are biased themselves. Recently a more objective solution: Marked Personas. Ask a question like "define a white male" and compare the answer with "define a black woman". Does this show biases?
Where do models get their data? Web, books, videos. But the internet is also full of hate speech, so you can train a model on hate. So there is a problem of quantity versus quality. There is a lot of effort on debiasing models, but is still an open task with many edges. Ethics will need to guide the further development of large language models.
Different languages can have different biases. For example Basque has no he or she. And we see that if you translate "he/she is a doctor" to English, it becomes "he", and for a nurse it becomes "she". So you see bias in translation.

Lightning talks Wednesday

published Oct 04, 2023

Lightning talks on Wednesday at the Plone conference 2023 in Eibar, Basque Country.

Luistxo from CodeSyntax: Count von Count speaks Basque

Counting 1 to 10: bat, bi, hiru, lau, bost, sei, zazpi, zortzi, bederatzi, hamar. Eskerrik asko!

Dylan and Jon: Is Plone 6 Mach?

What is Mach? New buzzword gimmick. An alliance of mainly CMS vendors. Promise: scalability, flexibility, innovation, improved performance. Micro services, API first, Cloud-hosted, Headless.

Yes, Volto is API first. No, Plone Classic and Volto are not headless. But you can plug a front-end into the REST API. Microservices: no, it is a big monoliths, but you could add logic in micro services. Cloud native: yes (ish). Could be SAAS, though no one is offering this at the moment.

Let's go MACHO: Open source.

Karel: true costs of migration

In South Africa there is no power 24 hours a day, which actually means water is a problem. So we got a filtration system, but got into unexpected problems. That can happen during Plone migrations as well. You have expected and quantifiable costs, but also probable and/or unquantifiable costs. Do integrations work? Can the team be onboarded easily? What will you do once you find out what you did not know at the beginning? Migration may not be the best answer, but can be very expensive.

Code Syntax: #PrettyEibar competition

Take pictures from Eibar, post on Twitter/X/Mastodon, tag with #ploneconf2023, on Friday the winner will get a delicious price.

Fred van Dijk: "Lies to children"

You should try Terry Pratchett's parody fantasy novels. He also wrote "The science of Disc world" with two scientists. This introduced "lies to children". Lying is part of education. You tell that everything consists of tiny blocks, keeping it simple, but then you get to protons, electrons, Maxwell, snares, etc.

Let's market Plone 6 and 7. As developers we try to answer stupid questions honestly. Should be store everything in one big container? Developers: noooo! But maybe for test driving Plone it is okay. One click install to Plone! That is marketing.

Alexander Loechel: eduTAP

Bridging online identity for reliable and trustworthy service access. From eduGAIN and eduroam to eduTAP. Tap to pay, tap to open a door, not tapping a beer. Vision of European Commission: mobility for students should be as smooth as possible. Plastic cards for this is old. We are going to an interoperable campus card. A common ID for all education world wide. This works with wallet apps on your phone. Deliverables: core, libs, docs, central service directory.

Manabu Terada: PoC for LLM search on Plone

Want to search on sentences within an Intranet Plone. Basics of LLM vector search. The PoC worked, but not yet in Plone. So create a few index class, inherited from ZCTextIndex.

Package: https://github.com/cmscom/c2.search.llm. Repo and name may change. Sample package requires a GPU, did not work on my Mac M1.

Also: PyCon APAC 2023 is in Tokyo Japan, 27-28th.

Michael McFadden: demo search on rfa.org in Basque with Nuclia

It works!

Erico Andrei: a bunch of (crazy) ideas

Ideas that need some implementation, will pay with beer.

  1. Move your add-on tests to pytest, using pytest-plone
  2. Move my add-on.
  3. Add new features to plone.api. We had features in 2013. Ten years later we have the same features plus relations. Nothing else. Add for example api for vocabularies.
  4. Create an add-on that stores blobs on an object store: S3, mini, etc. CloudFlare and Thumbor do stuff as well.
  5. Implement a Volto block of every entry in the Wordpress.com list of available blocks.
  6. ActivityPub support for Plone.
  7. Make the most innovative implementation of a new plone.distribution.

Johannes Raggam: Debug javascript in classic Plone

It is documented in the mockup readme: https://github.com/plone/mockup#development

Basically: start the development server of mockup, get the url, paste it in the plone bundle in the Resource Registries. Then add debugger; somewhere in the mockup javascript.

Michael McFadden: Video Content for Plone

published Oct 04, 2023

Talk by Michael McFadden (a.k.a. flipmc) at Plone conference 2023, Eibar, Basque Country.

We do a lot of video in Plone at Radio Free Asia: https://www.rfa.org/english/video

How do we start with video in Plone? Just add a new content-type. Then add a template, use the html5 video tag and pass it a url. And it kind of works.

But we added a stream view and set some headers that helps for streaming.

So someone uploads a two hour Ultra HD video and you get a ticket: "Plone is slow" Your job is to fix it. And now the sysadmin is on the line and says: "We are seeing some troubling disk usage."

Okay, start offloading to an external server.

What I was doing here, was a journey: instead of thinking it completely through and designing a perfect solution and never shipping it, I just started coding and getting something out there that kind of worked and that we could improve.

We never used blobs here, we just did not have the disk space. Saving a 50 TB video would give 503 as feedback. "What is this nginx thingie, I thought we were using Plone?"

So we hired a javascript developer to help here, and they saw a progress bar. And I wrote a z3c.form custom widget. Without even using jQuery. And then when you click Save, you only post some metadata to Plone, with the video already being somewhere else. This worked nicely.

And now a video on our site went viral. Google for "gutter oil", if you have a strong stomach. So the CEO gets a message, look at this video, and opens it on the phone in the DC metro, and the video does not load. "Plone is broken."

Video encoding to get it to a reasonable resolution. Use ffmpeg to get it done. Don't look at its code, don't create an event handler for this. You would do this somewhere externally. Amazon S3 or something. We use Kaltora.

"Variable/adaptive bitrate video delivery." Such buzzwords get you a new job and 20 grand extra. Chop the video into fragments. You can load video fragments on different resolutions, depending on your bandwidth. Code this into an m3u8 file.

So I created https://github.com/flipmcf/CasterPak, creating HLS stream packaging for video on demand, with a built in file cache.

We abstract away the complexity. How leaky is this abstraction? A native video content type in Plone, is this possible? With code like this, it starts maybe becoming possible. We can push it.

Audience: you can look at https://peertube.tv/ or https://mediacms.io/.

Piero Nicolli: What's new in CSS in 2023

published Oct 04, 2023

Talk by Piero Nicolli at Plone conference 2023 in Eibar, Basque Country.

With container queries you can query the size of a parent element and apply styles based on that. This is useful when media queries are not enough. Supported in all major browsers.

:has(). In Firefox still experimental. Apply styles to elements that contain the selector.

New nth-of selectors.

Text wrap balancing. Only latest chrome. Only use this for progressive enhancement.

initial-letter. Not yet in Firefox. For showing the first letter much larger.

Dynamic viewport units. All major browsers. Helps when 100v is too large because the browser shows toolbars. You have small and large viewport height and width: svh, svw, lvh, lvw. And dynamic: dvh, dvw.

Wide-gamut color spaces.  Allows for more vivid colors to be used. color-mix to mix two colours to create new values based on the channels of the colours getting mixed. Welcome dynamic color palettes without needing preprocessors.

Nesting is now supported in all major browsers, without preprocessors like scss.

Cascade layers. You can define layers and specify in which order they are applied.

Individual transform properties in all major browsers.translate, rotate and scale can be specified on their own line, so also overridden without overriding the complete transform line.

Extra: view transitions, only in latest chrome. Only in SPAs for now.

See https://developer.chrome.com/blog/whats-new-css-ui-2023/

css preprocessors will be used less, but they are still useful when you are working with a css framework like Bootstrap.