Hola a tots. I would love to do my talk in catalan, but my catalan is very bad, I will continue in english because my english is much better.
Nevertheless, I will do my best to make my english as bad as possible, because speaking bad english is a french tradition we need to preserve (even our new president tries to speak a correct english, and I think that's a shame).
We are developping and maintaining a CMS.
It is a simple feature supported by a precise and quite complex mechanism.
Web frameworks are like that too, right?
But CMS are not just like frameworks.
Maybe we should put it that way...
A CMS looks like a simple feature.
And... it is supported by a precise and quite complex mechanism.
Yeah... still not accurate, let's say...
It's a simple feature. Yes...
And its mechanism is precise and quite complex.
At some point, the user comes to us, takes a good look to our product, and asks:
"Does it fly?"
We: "It is not meant to."
User: "Oh really? well..."
"Your product is quite similar to this, right?"
"Well, it can fly. Definitely"
But our product is a little more complex than his.
And we start thinking: "Could it fly AND be backward compatible?"
Like this.
No, come on, forget about it.
LIKE THIS!!!
Zope 2, ZCA, ZODB, CMF, Dexterity, you name it.
Some of them have been around for 15 years.
That's probably half of the age of more than a half of the people here.
But that's clearly more than twice the age of the average JavaScript framework.
anyway....
Of course, for those who discover Plone today, it might look like it always has been that way, I mean this large stack.
But for the rest us, it is more like a saga....
A long time ago, in a GitHub organization far, far away....
PLONE
Episode VI
A NEW ZOPE
Archetypes empire has vanished. In his absence, the Zope community has risen from the ashes of the CMF and will not rest until the last Python 2.7 egg is migrated to Python 3. With the support of the Plone API, General Leia Dexterity leads a brave res(t)istance. She is desperate to find her brother Luke ZCA and gain his help in restoring peace and justice to the ZODB. Leia has sent her most daring RESTAPI on a secret mission to the outer frontend world, where an old ally has discovered a clue to JavaScript rendering....
Coming back to my original question, that's what a CMS is.
Complex features, a large stack, and a long story.
Yeah, a mess...
Remember the "Does it fly?" thing, well it keeps on happening. What's up at the moment?
yes, but how?
Offering a full REST API approach, that's nice.
And what about a GraphQL implementation? Would be nice too...
There is no way to work with web right now without a strong frontend expertise.
You know what? We do not have a lot of frontend expertise in the community...
Does it sounds like a bad situation?
What would you think of such a situation on a business project?
You would think it is very bad, and the team would probably be not highly motivated.
So why we, Plone community, can handle this huge project, but a business project could not?
I would like to run our analysis over two axis: emotion and culture.
Let's start with emotion.
Last year at the Boston PloneConf, I have developped the idea that someone who writes code feels like a parent (I won't go into detail today)
And an OS community is like a shared parenthood, so we consider ourselves as family.
My talk ended with one word: "Love" as the explanation for the entire opensource thing.
Let's dig a little bit from here.
And I prove it:
Business means you're busy.
If you're busy, you're not free.
And not free is not opensource.
Ok, maybe I am playing with words here. But words matter.
Think about the words we use in business...
Why do we use "disruption" instead of "revolution" or even "evolution"?
Probably because the business world is meant to be violent and fast.
People accept that. Business is violent, and it hurts, and that's ok.
Opensource is different, it takes time, it takes to know people, to collaborate over time.
So at the contrary, it heales.
IT companies value 10x developers, super-men.
Opensource values collective.
Collective means the only way to be a 10x dev is to teach 10 developers how to be 2x better.
In business, we usally do not "care" about human resources or human processes, we "manage" them.
It leads to crazy things like: "According this spreadsheet, it seems with 9 couples, we can make one baby in one month"
In opensource we are more on the line: "It takes a couple to make a baby, and then it takes a village to raise it"
And we also know that "It is easy to make a baby, it is more difficult to make an adult"
What I want to highlight here is the corporate world focuses on the result, and we focus on the process.
Why is that?
Because the process provides emotions, the result (the product) does not (it just makes money).
Opensource does not care about money, so it lets us free to focus on what matters, and what matters the most is emotion.
Let's analyse the opensource process
There is a development process of course, which we enjoy, but we could enjoy it in a business context too.
But also a sharing process.
Some of you are not familiar with the Plone community, so you might not know what is a strong community.
We are not just sharing code, we are sharing emotion.
That's why contributing feels good. Someone somewhere will appreciate what you gave him.
Emotions are not just mental, they are mental and physiologic.
They are what make our mind and our body a single thing, it is the foundation of our unity.
And emotions can be communicated. Love. Hate. Fear. Happiness.
That's what we name empathy, the ability to feel what someone else feel.
Empathy is not something you decide, it is natural, and some studies show it has an important physiologic aspect.
Animals feel empathy.
Because of empathy, emotions are the very first things living beings have been able to share.
I think we are emotion addicts since we are born.
And that's why human want to share, want to help each others.
By doing opensource, we want to be part of something. Like any given group of fan (Python fans are quite close to Justin Bieber fans, or SciFi fans, or Barca supporters, or chess players...)
Any fan invest time and/or money. For something not useful, not productive.
Just to be part of something. Why? because we don't want to be alone? Not exactly.
Because we need emotions. More emotions. They make us feel better, they make us better persons.
As you know, "we are spirits in a material world" (remember the Police song?).
Our world is ruled by economics principles.
Like the myth of the rational egoistic individual pursuing his own interest and it benefits to the entire society. Ok so we are all egoistic in first place...
A lot of people think that. I think it is the biggest hoax ever.
And those people usally say: "Hey, you know, that's just human nature".
But if you ask them if they are also egoistic regarding the family, they say "no, of course"
But what is the perimeter of your family?
What if it is actually larger than you think?
Consider this:
we have proof prehistoric people took care of crippled persons
in countries where you are not paid when you give your blood, we collect more blood
This fraternity, that's human nature.
People are altruists by nature.
That's something our modern world burried very deeply, and opensource makes it resurface.
Because it reminds us that the need for emotions is bigger than the need for money.
So that's why the Plone community is a thing, that's why Plone survived all along its long life.
But it does not explain how.
And the "how" here comes from our culture.
Consider this:
in a Plone site, you can add a Dexterity content in an Archetypes folder
it can trigger an event implemented with Grok, that would display a z3c.form
and gets displayed in Mosaic
and how do you activate that in your web site? just by adding a new egg in our buildout
not a single line of code
Some of the technologies mentioned in this example have more than a 10 years difference.
This is a miracle. The fact it is actually working is crazy.
This miracle is called pluggability.
Pluggability is far more superior than extensibility.
The difference is you just need to declare something and the system will integrate it.
Whereas with extensibility, you have to implement how the system will integrate it.
Plone is all about pluggability (buildout, ZCA, etc.).
And that's a key thing for any complex system like a CMS (also true for an ERP).
That's not easy to achieve.
It is based on our tooling and our frameworks, yes.
But it also relies on our common knowledge, our common approach of any given problem.
We are disciplined, we follow our rules.
Would we release a module without tests? no
Would we release a module without internalization? no
Would we release a module with funky CSS selectors? no
That's what I call our culture. Other CMS (or frameworks), they don't all have that.
Those rules and tools and patterns we have been building and using for years are very interesting:
they are technically effective, we can use them today whenever we need them
they are also mentally effective, they are memory of the past, memory from the previous contributors and they help us to analyse and solve today's issues
and they are also barriers: they might be difficult to learn, to use, they make our community less approachable for beginners
that's what we could call a pharmaka in ancient Greek: something which heales, and something which poisons at the same time.
means: through hardships to the stars
Facing difficulty is hard, but it improves us.
what's difference between me and (me - 10 or 15 years)? I know workflow, I know components, I know testing, etc. And when I mean I know it, I really do, I learnt it the hard way right?
And the fact that we know all of us have been facing this difficulty makes us to trust each other.
Just like brothers in arm.
And as a reward for the difficult time, we inherit a strong culture.
Communities which avoid difficulties build weaker culture (and so they need to protect their core, we don't, our core is self-protected).
So I inherit a culture.
I got this knowledge from the community, this knowledge has been built maybe 5 or 10 or 15 years before me.
but actually this knowledge is free, everybody could catch it:
on internet you can learn about testing, about OO patterns, or anything
so this knowledge is in the air, but the community helps to turn it into a crystal.
That's our treasure. A treasure made up of free stuffs, but all together it becomes a treasure.
So ultimately, what are we doing with our love and our culture?
We build a cathedral.
like the Sagrada Familia: conceived by someone who left, continued by new persons, still under construction, and every part makes sense.
Table of contents | t |
---|---|
Exposé | ESC |
Autoscale | e |
Full screen slides | f |
Presenter view | p |
Source files | s |
Slide numbers | n |
Blank screen | b |
Notes | 2 |
Help | h |