00:00:00

Building a cathedral over decades

Eric Bréhault - PloneConf 2017

Notes

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

Think about our situation

Notes

We are developping and maintaining a CMS.

What is a CMS?

Notes

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

What is a CMS?

Notes

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

What is a CMS?

Notes

It's a simple feature. Yes...

And its mechanism is precise and quite complex.

Does it fly?

Notes

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

Notes

"Your product is quite similar to this, right?"

Notes

"Well, it can fly. Definitely"

Notes

But our product is a little more complex than his.

And we start thinking: "Could it fly AND be backward compatible?"

... and we add a new piece in our CMS

Notes

Notes

Like this.

No, come on, forget about it.

Notes

LIKE THIS!!!

A very large stack

Notes

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.

This slide is pointless, ignore it

Notes

anyway....

A long story

Notes

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

Open

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

So, that's what a CMS is

Notes

Coming back to my original question, that's what a CMS is.

Complex features, a large stack, and a long story.

Yeah, a mess...

Facing new challenges

Notes

Remember the "Does it fly?" thing, well it keeps on happening. What's up at the moment?

Moving Plone to Python 3

Notes

yes, but how?

Zope4 or Guillotina?

Notes

Headless CMS

Notes

Offering a full REST API approach, that's nice.

And what about a GraphQL implementation? Would be nice too...

Frontend

Notes

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

A bad situation?

Notes

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 is Plone alive?

Notes

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.

Emotion

Notes

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.

Love

Notes

My talk ended with one word: "Love" as the explanation for the entire opensource thing.

Let's dig a little bit from here.

Opensource is not business

Notes

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

Disruption

Notes

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.

10x developer

Notes

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"

Result vs process

Notes

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.

Sharing emotion

Notes

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 strong

Notes

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.

Empathy

Notes

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.

Emotion addicts

Notes

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.

Altruist vs egoist

Notes

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"

What is the perimeter of your family?

Notes

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.

Culture

Notes

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.

Our everyday miracle

Notes

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.

Pluggability

Notes

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.

Pluggability comes at a price

Notes

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.

Pharmaka

Notes

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.

Per aspera ad astra

Notes

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

A diamond mine

Notes

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.

Building a cathedral

Notes

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.

Thank you

Notes