We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

On the Road - Plone 6 and Beyond

00:00

Formal Metadata

Title
On the Road - Plone 6 and Beyond
Title of Series
Number of Parts
50
Author
License
CC Attribution 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Plane (geometry)System programmingAbstractionDegree (graph theory)Musical ensembleBlogCloningMereologySeries (mathematics)HypermediaGeneral relativityProjective planeOpen sourceProxy serverSoftware developerContent (media)Observational studyCore dumpElectronic mailing listElectric generatorOpen setPoint (geometry)Source codePlanningWeb pageJSONXMLLecture/Conference
Plane (geometry)Set (mathematics)DebuggerCodeRight angleFront and back endsBitText editorCore dumpType theoryContent (media)VoltmeterBlogState observerMedical imagingComputer fileComputer animation
Plane (geometry)Dew pointMedical imagingView (database)Content management systemWebsiteRight angleCASE <Informatik>Element (mathematics)Content (media)Computer fileWeb pageCore dumpMultiplicationData management
Demo (music)Data managementPlane (geometry)Web pageComputer-generated imageryEvent horizonMedical imagingWeb browserComputer configurationWeb pageRight angleContent (media)Library (computing)Mereology2 (number)WebsiteType theoryField (computer science)MetadataBitDifferent (Kate Ryan album)View (database)Block (periodic table)Perspective (visual)Menu (computing)Computer fileFunctional (mathematics)WritingCloningComputer animation
Plane (geometry)MereologyType theoryRight angleCASE <Informatik>Electronic mailing listWeb pageContent (media)WebsiteWave packetDefault (computer science)
Plane (geometry)System administratorDefault (computer science)Basis <Mathematik>Sheaf (mathematics)Configuration spaceRegular graphText editorRight angleWeb page
Content management systemRootDemo (music)Plane (geometry)Computer-generated imageryNormed vector spaceWindowBitSoftware frameworkWeb pageDefault (computer science)Type theoryElectronic mailing listContent (media)2 (number)Reverse engineeringMenu (computing)Single-precision floating-point formatComputer configurationMultiplication signSystem callRandom matrixBlock (periodic table)Wave packetConfiguration spaceDifferent (Kate Ryan album)Differential (mechanical device)Right angleMedical imagingOrder (biology)Sheaf (mathematics)Computer animation
Plane (geometry)Right angleWeb pageGreatest elementBlog2 (number)Configuration spaceOverhead (computing)Client (computing)BitHypermedia
Plane (geometry)Medical imagingClient (computing)Projective planeHypermediaVideoconferencingRight angleBlock (periodic table)BlogComputer animation
Plane (geometry)Point (geometry)Right angleCovering spaceHuman migrationCore dumpWeb pageBitComputer animation
Plane (geometry)Client (computing)Element (mathematics)Proxy serverProjective planeWebsiteWeb pageContent (media)Instance (computer science)Right angle
Web pagePlane (geometry)First-order logicBlock (periodic table)Right angleWeb pageBounded variationMusical ensembleInstance (computer science)Element (mathematics)TesselationMedical imagingMenu (computing)Descriptive statisticsDifferent (Kate Ryan album)Computer animation
Plane (geometry)Right angleCache (computing)Computer scienceWeb pageMultiplication signBitPoint (geometry)NP-hardNeuroinformatikTesselationValidity (statistics)Block (periodic table)
Plane (geometry)Client (computing)Block (periodic table)TesselationRight angleDependent and independent variablesWebdesignTerm (mathematics)Mereology2 (number)Proxy serverPhotographic mosaicCovering spaceWeb 2.0Computer animation
Plane (geometry)Proxy serverSystem callArithmetic meanContent (media)Multiplication signTesselationClient (computing)Term (mathematics)Right angleFormal languageDecision theoryRevision control
Hill differential equationPlane (geometry)Block (periodic table)Electronic mailing listNP-hardGodRight anglePlastikkarteComputer animation
Plane (geometry)Group actionBlogContext-sensitive languageText editorFocus (optics)SynchronizationRight angleComputer animation
Plane (geometry)View (database)MereologyRight angleHypermediaData managementCloningBlock (periodic table)Content management systemText editorSoftware developerPoint (geometry)Decision theoryWeb pageObservational studyProxy serverContent (media)SynchronizationType theoryElectronic mailing listMedical imagingBlogXML
Plane (geometry)Meta elementPerspective (visual)Wave packetClient (computing)Ocean currentProper mapAxiom of choiceBlock (periodic table)Data managementPoint (geometry)Software developerRight angle2 (number)Inheritance (object-oriented programming)Online helpProjective planeComplex (psychology)Computer animation
Plane (geometry)Point (geometry)View (database)Representational state transferCloningRight angleAbstractionFront and back endsSoftware developerPlanningRelational databaseComputer animation
Plane (geometry)Projective planeStandard deviationLocal ringSoftware developerLibrary (computing)Right angleBit
Plane (geometry)Right angleDecision theoryArtistic renderingSoftware frameworkComplex system1 (number)Enterprise architectureCanadian Mathematical SocietyComplex (psychology)Software developerAxiom of choiceRouter (computing)WebsiteStaff (military)Pairwise comparisonView (database)CloningStandard deviationGoodness of fit2 (number)Stack (abstract data type)Divisor
Plane (geometry)WebsiteSoftware frameworkOctahedronSemantics (computer science)Keyboard shortcutMultiplication signMechanism designSoftware frameworkComputer configurationVariable (mathematics)Right angleBookmark (World Wide Web)VoltmeterXML
Connectivity (graph theory)Template (C++)Right angleBitAcoustic shadowProjective planeWave packetWeb 2.0Client (computing)Dataflow
VideoconferencingPoint (geometry)Data managementLevel (video gaming)Social classOperator (mathematics)PlotterArithmetic meanBitClient (computing)Projective planeWave packetOpen setMultiplication signWeb-DesignerWeb 2.0Formal languageDifferenz <Mathematik>Goodness of fitClosed setLatent heatWebsiteRight angleWeb pageDivision (mathematics)Semantics (computer science)Computer-assisted translationRevision controlConnectivity (graph theory)Whiteboard
Type theoryRight angleAxiom of choiceText editorSoftware frameworkWeb 2.0WindowOverhead (computing)Standard deviationWeb-DesignerComputer animation
Plane (geometry)Sanitary sewerGamma functionCollatz conjectureJava appletComputer configurationMultiplicationDefault (computer science)Different (Kate Ryan album)Perspective (visual)Process (computing)Projective planeFront and back endsSelf-organizationArithmetic progressionRepresentational state transferClassical physicsClient (computing)RoutingMultiplication signType theoryWeb pageStability theoryObject (grammar)Right angleCloningWebsiteProof theoryPlanningOvalHoaxRootAlpha (investment)Core dumpDebuggerUser interfaceDivisorVoltmeterRule of inferenceContent (media)Latent heatInstance (computer science)Arc (geometry)
Plane (geometry)Perspective (visual)Right angleSelf-organizationPlotterClient (computing)TelecommunicationRevision controlPhysical systemTheory of relativityDrop (liquid)Table (information)Hydraulic jumpMultiplication signCloningVideo gameNumberPoint (geometry)Rational number
Plane (geometry)Wave packetDifferent (Kate Ryan album)Coefficient of determinationHydraulic jumpRight angleLevel (video gaming)Water vaporOnline helpPlanningWordTraffic reportingProcess (computing)Arithmetic meanFreewareDecision theoryWritingPerfect groupCloningSoftware bug
Plane (geometry)FeedbackEmailShooting methodWebsiteTwitterMusical ensembleLecture/ConferenceJSONXML
Kolmogorov complexitySystem programmingAbstractionTurtle graphicsVideoconferencingComputer animation
Transcript: English(auto-generated)
In 2008, Alexander Lemie, one of the founders of Plone, wrote a blog post with the title
Simplifying Plone. It was a series of actually three blog posts. The first part was about simplifying Plone's editing experience. The second part was about improving its handling of media and rich media. And part three was about composite pages, listings, and content proxies. He wrote that before Plone Conference in Washington DC in 2008.
So who here was in Washington DC in 2008? Yeah? Quite a few. Okay. Are you still actively involved in Plone Core development? Who's actively involved in Plone Core development and was in Washington DC? Raise your hands.
Okay. Like one, two, three. Okay. In 2014, Eric Seer wrote a piece about general relational relay and he also gave talks about this how passing the torch in open source projects, right? And he cited a study that the half-life of a Debian developer is 7.5 years, right?
And like 2008, that's more than 11 years ago, right? So it's not uncommon that like people leave in open source projects, right? Other projects have that problem again as well. And you have generations of developers, right? The interesting thing about Plone is that ideas and stories stick far more than actual
code, right? Eric asked yesterday what is Plone if we replace the front end and the back end, right? I mean it's just a set of ideas and stories and people, right? That's it. So let's have a look at some of the ideas that Alex Lemie expressed 10 years ago.
So the first idea was to simplify the editing experience for editors, right? And one of the core ideas in this blog post was fewer content types. So get rid of some superficial content types. What does that mean? Let's look at that a bit more in detail and what we did about that in Volto.
So one of the observations that Alex shared was that images and files usually do not live on their own, right? They are usually, an image is usually in a content management system, a part of like a page. Maybe you embed an image. Maybe you have an image gallery or maybe you have a slider. But you rarely have the case where you like just drop images in a folder, right?
Usually you use the album view and then you have like an album, right? But it's rarely the case that you have like just an image as a content element, right? So you have image collection, slider, galleries and stuff. And the same is kind of true for like files, right? Often like people in Plone like want to attach a PDF file or multiple PDF files
to a document, right? But yeah, it's rarely the case that you just like dump stuff, right? At least when we talk about websites. So let's see what we did about that in Volto, how we handle images in Volto.
So you go to the add menu, you choose page and you have a blank page. So we create a page with an image, then we choose one of the blocks. This is like the beautiful new blocks chooser that Victor wrote.
You can choose an image here and then you have two options. One option is to browse the content, the existing content of your site and upload stuff. So if you choose to use existing images, you see that browser on the right side and you can choose an existing image, it will show up. And then you have a few options here. So you can like have an image on the left side, image on the right side and align that, right?
Together with a few other like metadata fields like DL tag. And then you can add like a bit of content, right? You can save that and you have a page with images, right? Something that you can do with standard clone as well. Not as fancy as that but like still that's something they can do.
Let's have a look at like what happens if we upload an image, right? So we don't browse but we upload an image. So we upload an image here, image is quite big so that like takes a while and this is an image, right?
Same thing, it doesn't matter if you upload the image or use an existing image. You have the same functionality. But if you save it, we will see like a difference here. When we go to the folder contents view, right? You will see that this page is actually folder-ish and it's a folder.
So we upload an image and the image ends up as part of the site, right? And what usually happens in clone is that the image is next to the file that you created. And that kind of sucks, right? Like from a user perspective. You create something then you want an image, you have to upload an image, right?
And that makes it like super simple, right? You create a page, you upload that image and that image is part of your page. You can also choose to have like an image library and get it from there. But this is how we handle images, right? So let's have a look at like the second content type that we have, collections.
Collections are nothing more than like persistent searches, right? So why is that a content type? That was something that I never like understood and I write blown up collection, right? Like the dexterity type for collection and like I never understood why this is actually a content type. We basically have two main use cases for collections. One is to sort a folder listing.
It's as simple as that. The other one is aggregate content that is spread across the site. And collections are amongst the harder things in trainings, right? It's something that I usually do like after the first like half day or first day that I like explain people collections. So why is that? Part of the reason is that if you have to teach collections,
you also have to teach people default pages, right? So take the news section in Plone that's there by default. So if you want to like tell people how to do that on their own, they have to create a folder, then they have to drop a collection in there. They have to add that collection as a default page, configure that collection,
and then they have to start to drop content, right? So you have to train them like three concepts. Like you have to create to tell them like that we have folders, that we have pages. You have to tell them about collections, how they work. And you have to tell them about default pages, right? And that's something from our experience that experienced administrators and stuff, they can do that or experienced editors.
But it's something that people tend to forget if they don't work on a regular basis or daily basis with Plone, right? So what if we would like simplify all that like collections, default pages and folder? Let me like show you how that can look like in Volto.
So we go to the add menu and we have a simple single like option there, a page, right? So you can add a page and it's a new section, right? So you add your news and then you add a block and you choose the listing block, right? And what we have now is basically a folder, right?
It's the same. You have a folder-ish page and you have a listing and that will list everything that you see in your folder. But on the right side, you also have the collection options, the criteria, right? So you can choose criteria from here and say, I want all like to see all types. You can do the reverse order, everything that you can do in the collection if you want, right?
So we save that and we have the news folder. So now we can start adding content right away. So let's add a news item, right? We only have a page, so let's add a page. Let's call that news item one. And news items have the only difference between a page and a news item is actually like the delete image, right?
So let's add the delete image, easy, and a bit of content like body text, we have it. Then we go back to news and we have the listing there, right? Done. We can like create a second news item like same as before. And of course, it will show up in the listing.
So compare that with the thing that like explained to you before that I guess like everybody here knows, right? How to like create a collection with a default page and compare that with that. So what if we would like kill all content types
and instead rely on a single content type to rule them all? I have a confession to make here. When I actually downvoted the idea of folder-ish pages or folder-ish types two times in the framework team, right? Because I thought that it's like it's too disruptive
and there are lots of things that we have to think about if we move something to folders, right? We heavily rely on the differentiation in Plone between folders and pages, right? They're like two different things. This is the first thing that you like train people, right? You have like when I do a training, I start with like you all have like the Windows Explorer, right?
So you have pages and you have folders, right? This is how you organize your content. So I was a bit skeptical about that. But when we did Volto, then I thought like, yeah, let's give it a try, right? I mean, we had like Rob in the team and he is an advocate of that like since forever. So let's give that a try, right?
And see how that goes. And since then, we shipped that idea or this configuration for the past three years. We got an overwhelming like positive feedback from our clients because it removes a significant cognitive overhead. But you have to try, my experience is that you have to try out things
before you can actually judge them, right? I'm always like a bit skeptical of like new things. And I want to like try them out before I like have a final judgment. So we did that, right? And like, yeah, and that happened quite often to me.
So like if Albert created the new Pazanaga UI toolbar, right? He moved the save button from like the bottom of the page up to the page. I hated that. I hated that so much, right? And then I tried it out for like 30 seconds. And since then, I love it. I love it. It's so strange to me to having to scroll down the entire page to like save something.
And it's an experience that I would ask everybody like to give it a try. Like everything, every new idea, just like try it out. And with Volto, we had like the chance or opportunity to try out things and ideas that have been around for like more than 10 years actually. So let's continue on our like quest to simplify Plone, right?
The second blog post by Limi was about like rich media. Like images and stuff, right? And that was like 10 years ago. So that was like ancient technology, right? To compare to what we have now. So think about like for in client projects, we did like complex sliders. We did videos.
We did audio. We did image galleries. Everything you can think about. And there was like just blocks, right? That I showed to you earlier. So I will share a few of those things in my talk tomorrow. And Victor will also share some like more sophisticated examples. So let's come to the next, to the final like blog post from Limi.
Like composite pages, right? Complex topic. I remember sitting together with Alex and when he showed like us Deco, right? And it was like, I was super impressed back then, right? That idea has been like around for ages. But we haven't been able to really like put that into core Plone, right?
We had like collage. We had mosaic. We have cover. Like we have custom solutions. And none of this solution was ever like brought to a point where we could actually like really use that and really felt comfortable moving that into core, right? So that's like one of our major pain points actually in migrations. Like even from Plone 4 to Plone 5 or Plone 3 to Plone 5 or whatever, right?
Is always like the composite page solution that you use. If you use like one of those composite page solutions, it's like, it's your major pain in your next migration, right? To the next step. That's just how it is. If it doesn't go to the core, it will be around for a bit and then it's gone and you have to move to the next things.
Another like complex thing that Limi describes was proxy elements, right? So you have an overview page like for newspaper sites or like most of the other sites. And what you want to do is not actually put new content there, right? Because that doesn't like make much sense on an overview.
Like if you have a newspaper website for instance, right? You don't want to just put text that like you can't do anything, right? You want to teaser something. So you want to teaser existing content. And that's what like the proxy element is about, right? So let me show you what we did like in a client project. And later today, Victor will show you like the more sophisticated solution to that.
So you want to add a composite page. So you go to the add menu, you choose a page. You give it a title and then you go to the blocks chooser and you choose for instance a hero tile, right? A hero block.
So here a block is an element like with an image, a title and a description, right? So you choose the element that you want to actually proxy. So a news item, right? So it shows an image and text, right? So you can choose like different variations, right? Image on the left, image on the right, image on the top, right?
This is a really basic example. You can do like, you can style it more fancy and stuff. So next is like we add like a teaser block, right? So you can choose here like between one to four elements, right? That's like a grid like element but with teasers. So you choose like the first element, you choose the second element with that beautiful
right tool that Victor and Rob created at the Beethoven's sprint. You choose the third one and you see like how quickly you can add stuff, right? And it's there. So this is a composite page. You can save it and then it will like, there it is.
Okay, so this is our solution to composite pages, right? You might have mentioned that I like mixed a bit of naming. We had that problem at Nicolas' talk as well.
He spoiled my talk that we renamed a few things, which is like totally fine. You know what they say, right? I mean, there are only like two hard things in computer science, right? Cache and validation and naming things, right? And that's like true. We had such a hard time of naming things, right? So at some point we decided to like rename tiles to blocks because tiles, I love the name
tiles, right? Because it makes so much sense in a mosaic, right? But we have the feeling that this does not like really fit like modern web design, right? Because if you look at cover or other like block solution on mosaic, right? It's really like, it's a mosaic, right?
And you have columns and you have like grids. And our experience is that modern web design is like single column, right? Then you have like blocks that can have like multiple columns. But in the end, it's blocks because you have to make everything responsive, right? And that's hard if you can create arbitrary mosaics, right? That was part of the reason. Second reason is that Gutenberg is also like using the blocks term.
And third reason is that like tiles or Kachen in Germany is like something that none of our like clients understands, right? It's like, it just does not feel right, right? So we decided to rename that to blocks. Another thing is the proxy, proxy tile. I never like quite liked the term proxy.
In other, like I had a talk with Rob about that. And other languages, it's more natural. But I always ask myself, like, could I go to my mother and explain that to her? What that is, right? If I would tell her, hey, mom, that's a proxy tile, right? And of course she wouldn't have a clue what I'm talking about, right?
So we had a hard time. And we like shipped our proxy tile to a client. And I was like telling them like, it was like a pre-version for them to have a look. And I told them, like, we're sorry, like we had to name that proxy tile because we don't like have a better name. And then they came back to us and said like, yeah, why don't like call it teaser tile? And it immediately clicked with me.
I thought like, yeah, teaser is like, it's exactly like the thing that it does, right? It teasers the real content. So all the naming is like still like open for discussion, of course, right? I mean, in the Volto team, we make decisions. But that doesn't mean that like we have to keep it that way. But for me personally, that makes lots of sense.
The other thing is like collections. We call them like smart folders, topics. Eric told me like another name for that, which I like forgot. So we had like multiple names for that. And it kind of like made sense to us since we merge collections with like the folder listing
to just call that listing, right? Because in the end, it's a block that lists things, right? You can configure that, you can sort it, you can add criteria to it. But in the end, it's a listing, right? So it's like, it's simple. And I think it nails it, right? I love the like listing block, right?
Okay, so enough with like hard problems and naming. Let's come to something like beautiful. We talked a lot about like Pazanaga UI, right? Albert Casado, who like created Pazanaga UI. He did a fantastic talk two years ago at the Plone Conference. I did plenty of talks about Pazanaga UI. The idea is like simplifying the user experience in Plone and focusing on the user, right?
And it's really like amazing how much that is in sync with what Lemmy wrote, like more than 10 years ago, right? So the idea like the idea was always there. And it was like in our team, it was always like when we discuss things, we always keep like those idea in the back of our head, right? But I swear I just like run into Lemmy's blog post like three days ago or something, right?
And that was really amazing for me, like that those ideas really stick, right? So let's go back to Pazanaga UI. So we focus on regular editors. And we set the UI focus by like removing stuff, right?
So Eric already shows like Pazanaga UI in his keynote. So I will like skip that, the context sensitive toolbar. You saw the toolbar on the right, right? So let's go back to revisit Alex's ideas.
So in part two, he talked about like simplifying Plone's editing experience, right? That's really in sync with Pazanaga UI to focus on the editor because they are our most important advocates actually within companies, right? You always have like the management who does the final decisions, but editors are important. And I read a study just like the other day that like,
that if people like switch like content management systems, it's usually because like 80% of like the editors really hate, deeply hate their content management systems, right? Because they may all make it incredibly hard. So I fully agree with Alex's notion that like we should focus on the editors, right?
So Pazanaga does that by reducing clutter and focusing on that from the UX point of view. The second part was about like improving Plone's handling of rich media, right? And getting rid of like the content types and stuff. So you can do like images, we have the audio block, we have like slider blocks that you can create.
And we have the folder-ish pages which make that a lot easier. Part three was about composite pages, listing and content proxies, right? So we have the teaser block, we have listing blocks, we have grid blocks, we have the Volto editing page. We have all that, right? So please go to Limi's blog and check that.
It's really, really interesting to see how that resembles into Volto today, right? But that's not it. Editors and users are really, really important. But what about developers, right? Yesterday at the panel here I realized like that I'm still more developer at heart than like a manager or anything, right?
I realized that when like I heard what Kim and Paul were saying yesterday, right? That was way better than anything that I had to say to be honest, right? Because they really had like the user perspective is incredibly important and they had great ideas, right? Um, but let me put it like from a business perspective, what the problem is with current Plone, right?
Which is also a problem for developers. We started KitConcept like a bit more than three years ago. And our main challenge is to keep up with our client demands and grow the company, right? So when we hired like new interns or new colleagues that like come to us without like Python knowledge or with JavaScript knowledge,
I have the choice as manager to either train them in Plone, like ZCA, Python and everything, right? Or I can train them with front-end technology. And when I have an experienced Python developer, maybe like in a year or so, you will like learn Plone like in a proper way, right?
But only if it's an experienced developer, right? So if you have somebody starting from zero, it might like take them three years or whatever to reach the point where they can actually handle everything that Plone has. Because we have a huge stack and it's super complex if you look at it from the outside, right?
So what we do with our interns is I train them with React, right? I start with React. So they learn React because it's a lot faster. One of our interns just got his first project, right? And we let him do things on his own, right? We won't help you, right?
Solve your own problems. And if you have a blocker, then come to us and we will explain it to you and we will try to create the necessary documentation in the docs, right? For everybody else to learn it, right? And I said it before in Nicolas' talk, right?
When we gave them Victor's training material about blocks. And after an hour, they came back and said, hey, here's my first block. And I was like, what? That's great, right? So we can significantly simplify our technical stack if we focus on what matters. So take the idea of like Lemie and Albert from like a UX point of view
and like apply that to our technical step, right? The foundation of all that is the REST API. Since the last like five years, I worked a lot with like front-end developer teams, right? And they don't have any idea about Plone, right? And you have to explain them like maybe a few like base concepts
like how we structure content that's not a relational database and stuff. But the REST API is an abstraction they can work with, right? They don't need to learn Python. I usually like just point them to the Plone REST API documentation and tell them, let me know if you're missing something, right? It's like Plone REST API is what Plone API did for Python developers, right?
It's an abstraction layer and like front-end developers do not need to know more except a few concepts of Plone to work with it. So REST API is the foundation for everything else that follows, right? The second important thing is like follow standard technology, right?
Follow industry standards. Do not reinvent the wheel. Reuse over reinvent. I know you heard that like a lot. But we have to like take into account that in 2019 we're a tiny community. We're a tiny, tiny community. Look at a random like React project on GitHub and they have like thousands of contributors, right?
It's not uncommon to have like 3,000 contributors or anything. Like the CSS library that we have, they have like a vast amount of like developers and contributors, right? So we can't afford in 2019 to like reinvent the wheel over and over again
because then we will like be dead, right? Because we're competing with like a lot and a lot of people. Go to any like JavaScript meetup, your local JavaScript meetup, like we have like 250 people in the Bonn.js like meetup by now and Bonn is like a tiny city. Like when we go to conference there are like 2,000 people, 3,000 people
and that's a lot. That's huge, right? And I somewhat like have the feeling that's almost arrogant to think that we can solve problems that like this huge amount of people can't solve properly, right? So let's look at that a bit like closer. So the foundation of all that is React, right? React is awesome.
React dominates like the modern front end, at least in my experience, right? When we do like the JavaScript meetup, like 90%, 95% are doing React, right? There are like a few folks that's like do Angular, there are like mostly newbies that do Vue. I won't do the comparison. They're all good frameworks, right? But like my personal feeling is that React is like really the dominant like factor
and the most innovative community. And we tried the other ones, right? We were like on the Angular, we were using Angular heavily, AngularJS, Angular 2 and stuff, right? We tried out Vue and we made the decision like to go with React and that's like a great decision, right?
And it's all Rob's fault. So yeah, for React, we're using like the standard React stack, right? So we're using React Router. We use Redox. We use Razzle for server-side rendering. So if you have a like half-decent experienced React developer,
they will know like our stack immediately, right? I mean, Plone and Volto is like a complex system, right? Because like that's like enterprise CMS, right? We are not building like a small website or like Gatsby, right? So it's definitely like a complex system, but it's complex because like that's our requirements, right?
But it uses only the standard stack. So if you know React and the standard stack, there's nothing that you really have to learn, right? Except like maybe our choices. And that's really important to us. We don't move to like the fancy latest things right away. We wait a bit, right? And React is incredibly stable. So I'm really, really happy with React.
Second thing is like semantic UI. Don't reinvent the wheel, right? And it turned out that like choosing a CSS framework is actually a lot harder than choosing a JavaScript framework. We didn't expect that. So Paul, if you want your pillow fight, like next time maybe recommend like a CSS framework pillow fight. Because we monitor CSS frameworks like over like two years or so
and we had really promising options there, right? We looked at material, material design light and stuff, right? Material design light like just vanished, right? It was like one of our favorites and like it just like just vanished. It was gone, right? So we are relying on semantic UI.
Semantic UI uses less. It has its own like theming mechanism which we don't have to reinvent. It has like tons of variables if you like them. It has a community. It has React bindings. It also has Angular bindings and jQuery bindings. So we heavily rely on that for Volto, right?
And also another thing that we took is what the React community or JavaScript community is calling component shadowing. It's basically the idea is just a bunch of templates, right? So you take an existing template or component, you drop it to a folder and it will like overwrite the existing one, right? So like rather easy.
Though as always like I was like still a bit skeptical at least at the inside, right? So I thought about like okay we have to like actually try that out, right? And I only like maybe I'm too skeptic but I only believe things if I like really see them, right? So a client approached us and asked us for Volto training. They were considering using Volto for a really large project
and you know how it is with large clients, right? They can't afford to just like hire one agency and then rely on them, right? So they need people in-house to at least understand a bit of the stack and can jump in, right? So they asked us to do a training with them, right?
And their idea was like yeah we have a few people that like have like have worked with web stuff, right? So why not like train them in like doing a theme, right? Because theming is simple, right? So we had like we did a three days training with people that had like from no experience with web development HTML at all.
Ops engineers and stuff, right? And a few people had like seen HTML before and tinkered around a bit with WordPress and stuff, right? So that was the level. And I had to do like three day training. So we started at the first day with HTML CSS and we really started from zero, right?
I like I explained them like basic HTML tags, right? How the mock-up works in HTML, you have an opening tag, you have a closing tag, like you have a diff and stuff, right? And basic CSS, right? Selectors and stuff, right? I spent like the first day on that and at the end of the first day they all like had to create like a basic website, right?
At the second day I teach them less to like handle CSS in a better way and because it's the foundation of Semantic UI and I show them Semantic UI and like ask them to do the website that they did on the first day in Semantic UI, right? And then they saw the difference between like their initial like version, right? Which was like basically themed
and then like what they could do with Semantic UI, right? And the idea was that at the third day we do a plot theming, right? And at the end we have like the manager was expecting us to like create a theme, right? And it turned out that like I underestimated like the level or the time it takes us. So we were always a bit delayed on the first days.
So we ended up with like we had like we spent at the third day we spent like two-thirds of our time with still like the old stuff, right? So we had two hours left for the Plone theming, right?
And their knowledge was basic web technologies, right? HTML, CSS, less Semantic UI. Nothing Plone specific at all. I didn't talk about Plone at all. Not about a concept, not anything. And I just wanted to start and then like one of their Ops engineer came in and say, hey, can I still join, right?
We had two hours left. So I started with like with Volto, right? And I showed them like, okay, here's your Volto page, right? Here are like, here are the components, right? And I showed them how to override a component, right? Like the logo or the breadcrumbs, right? And within two hours they were able to do that. They built like the theme in two hours.
And after that, I was really amazed. I don't know. I didn't expect that to happen, right? But it worked, right? And people from zero. I mean, that doesn't mean that they're like super experienced like HTML devs and you can throw them at client project or anything, right? But within three days, like we're able to like start people from zero to like actually doing theming, right?
And I had to explain them like also like basic, like what a ES6 class is, right? And how JSX works, right? And just like in two hours. Because it's like, it's pretty basic, right? We can quickly train people those basics, right? Then you have to start at some point with like learning React properly and stuff.
But there's like a bazillion of really, really good courses and everything, right? Books in German, in any language you can imagine. There are ACAD courses, video, whatever. I always like when we onboard a new intern, I always ask them, what kind of like person are you?
Do you prefer books? Do you prefer me to tell you? Do you prefer like videos and stuff, right? And like people are different and like it's all there. We don't have to create all this documentation on our own, right? I mean, we know that we have to catch up with the documentation. But we are really relying on like the shoulder of giants, right? Here. So we can often like just point people to standard documentation, which is like great.
So let's wrap that up and see like our quest to simplify things that started like more than 10 years ago. So with Plone 6, we aim to simplify Plone by like reducing the cognitive overhead and reducing content types.
We simplify the UI with Passanaga UI to focus on what really matters to our editors, right? We aim to simplify the stack by relying on React and web standard technology. If you start in 2019 with web development, it's like it's React, it's Angular, it's Vue, right? You should start with one of those things.
You shouldn't start with like Python, PHP or anything else, right? It's like it's what web development looks like. You can like still use Gatsby and stuff. There are different choices and there are valid reasons for all those choices, right? But you should start with one of those frameworks, right? And one of those like one of the biggest framework of that of those like three
or like there are more, but that's React, right? And yeah, that's where we are. What's the current status of all that, of all what I showed you, right? You saw that I showed you like different websites, right?
We are like doing like three or four projects in parallel. So like we did a few things for one client, a few for others, right? A few things are like still work in progress. Lots of things that you saw are in Volto 4 in the current master, but we put so much things, so much new things in Volto 4, right? And Victor did such an amazing job on that like in the last like three months
that it will take us some time like to polish up everything and finish everything, right? But everything you saw is like basically there. So yeah, where are we? We have a stable and future-proof base, right?
Which is Plone 5.2 and Python 3. And we have a stable Plone REST API that use semantic versioning that's there for quite some time that's used by multiple different organizations and clients with different objectives and perspectives. So not only Volto, but lots of other consumers, right?
Volto 4 is still an alpha. We still use Volto 1, 2, 3 and Plone React in multiple projects. We are still working on upgrading them. We have a few flips around. There's a dexterity route flip to turn the Plone side route into dexterity type
to allow the main page, right? You saw that that actually works today. So thanks to a workaround that Victor created, you can use the front page as a fake dexterity type. So that actually works, but we would like to do it properly.
And Ruhl did a fantastic job on that, creating a flip and everything. But it's something that we would need to merge into Plone 6, right? There are a few other flips right now around. Like for instance, content-specific behavior, something that we borrowed from the Giutina folks because they have that.
But it's all those flips are like, we kind of like to have them, but they're, to be honest, they're all optional, right? They're optional flips. They will make it easier for us in Plone 6. But in the end, you can start with Plone 6 today by using Plone 5.2 and Volto 4 or Volto, right? Because this is what Plone 6 most likely will look like.
Maybe we'll add more stuff, but this is like the core, right? Plone 5.2 without Python 3, without archetypes and stuff, and Volto 4 default front-end. We will keep the classic Plone user interface, so you can still run Plone 6 like you run Plone 5.2. But in the end, it will be like the same, right?
So you can use Plone 6 today if you want, right? And for me, and now I'm switching to the business perspective again, right? It's a very good opportunity. Because, to be honest, and I'm just talking about the business side here, it's hard to sell people Python 3 upgrades, right?
When we advertise Plone 5.2, we put it out, and we did a press release that says, okay, now we support Python 3, and we did a few other things, right? And I tried to put myself in an outsider perspective, right? What would happen to me if I would hear that Drupal dropped PHP,
I don't know what's the version number, like 7 or PHP 5, right? That was around for ages, right? And I would say, is that a press release? They upgraded from PHP whatever version to PHP whatever else version, right? I'm not in the PHP community, and this is how people perceive that from the outside, right?
Okay, they upgraded from Python 2 to Python 3. What the hell, right? I don't care. And I know the effort that we had to put into that, right? And I'm deeply, deeply thankful to Philip and everybody else who was involved in that, right? But it's hard to sell people the Python 3 upgrade,
because for them it's just like, it's painful, there's the risk of breaking things, and they have to put a significant amount of money on the table, right? And they have to rationalize that within large organizations, it's never that you talk to everybody at the same time, but you talk to one person and they maybe want that, but they have to go to their superiors,
and then the person has to go to their superiors again, and stuff and rationalize that, right? And if the only thing that you have is the stick, right? And you say, you know, Python 3 support and this, right? They might consider to switch the systems, right? Because in large organizations you always have people that don't like Plone, you have people that like Plone, and there's always something going on, right?
No matter what system you have, you always have somebody who prefers that, or whose wife or husband uses something else in their work, or whatever, right? So that's a risk of losing clients and not making them happy, right? So we also have the carrot now, right?
We have Volto, right? So you can go to a client and show them Volto and say like, okay, you can have that, right? And that's like the fancy thing, and we usually in large organizations have the problem with the public relations, and internal communications, and people that are more visually oriented, right? And usually they like WordPress or something else a lot, right?
Because it looks nice and everything. And they're saying like, they're pushing for those systems, right? And with Volto we can compete with that, right? You can take Gutenberg and compare it with Volto, right? And say, okay, this is similar, right? So we can do fancy things today.
And if that doesn't work, if the carrot doesn't work, right? You can still come with a stick and say like, yeah, but you know, like in 2020, right? We need to do that Python 3 upgrade, right? And that usually works out quite well, because you have something for everybody, right?
So yeah, if you want to jump in, go to voltocitconcept.com, give it a try. It's like, it's still Volto 3, right? So it's like the old one, we have to upgrade it, which we will do soon. But I mean, Volto 3 is still like the basic things are there.
Yeah, please write bug reports. Give us feedback. Like Philipp said yesterday, right? On the stage, I'm really thankful that he did that. Like, we're an open community. We have a community process, right? We have clips that you can write if you don't like something about Plone. You can like jump into GitHub issues, discuss things with us, right?
We kind of like make decisions in the Volto team, but that doesn't mean that like this is set in stone, right? We come to conferences to like hear your feedback and hear what you think, right? Tell us your experience, jump into the discussions, write bug reports, give us feedback. Please come to the sprint. I would love to see people like non-technical people
at the sprint who can help us. Like if you haven't used Volto, that's like perfect. Because then we can like let you sit down and like watch you or maybe even screencast like your first experience with Volto. I would love to see that, right? I always ask people like, if you haven't used that, like please sit down, show us how you work with it, right? Because then we can work out
like the UX problems that we still have. That's definitely there. So please give us feedback. We have three trainings on React and Volto thanks to Rob and Raul and Victor, right? We have a React training. We have a Volto training. We have the Volto hands-on training. We are working on a documentation with the season of docs.
We had like what, 40 people that attended the training, right? Which is awesome. That was like the biggest training at the conference. That's great, right? So please don't stop there. Come to the sprint, help us work on that. And yeah, help us to build clone 6
to simplify it, to make a difference. So that was it. Yeah, feel free to like approach me anytime in the hallway, anywhere, give me your feedback or anybody else from the Volto team, Rob, Victor or anybody else.
I'm Tisto on GitHub, on Twitter, Timo Stoltenberg. Shoot me an email at tisto.plone.org or visit our company website. Thanks for listening.