WEBVTT

00:00.000 --> 00:13.040
Hi, so we are going to start with the next session, so we have our presentation and James

00:13.040 --> 00:20.480
Bottomley, who is going to cover the Selfie's Contributor, so we can start.

00:20.720 --> 00:35.520
Okay, well, everybody, thank you very much for coming, so one of the things I really like about

00:35.520 --> 00:41.920
Phos Dam is that it's a conference that actually has a lot of excitement about it, but mostly

00:41.920 --> 00:47.680
they're willing to take talks that I give that are about weird and wonderful sort of parts of my

00:47.680 --> 00:54.800
brain that grew up in the prehistory of open source that no other conference will, and so this talk

00:54.800 --> 01:00.880
is pretty much that. So this is exploring the really weird parts of my brain from what has

01:00.880 --> 01:08.400
observed in the 20 odd, 25 years I've been involved with the Linux kernel project. I suppose I should

01:08.400 --> 01:13.600
not to sell Vestray, who is the last speaker, and say that by the time you rewrite my brain in Rust,

01:13.600 --> 01:18.240
it won't have any of these dark corners where these talks come from, but until that happens I'm

01:18.240 --> 01:24.560
perfectly happy to give these sort of talks. So a bit about me, where I came from and giving this talk,

01:25.440 --> 01:30.480
I started out life as I said, as a kernel maintainer, a kernel developer, and I've been doing

01:30.480 --> 01:37.040
the kernel for many years. I was actually been an open source advocate for a long time. I was

01:37.040 --> 01:43.600
on the legal panel earlier on advocating for the DCO, which is the legal mechanism whereby you

01:43.600 --> 01:50.800
make contributions to the Linux kernel. Part of my job, when we first engage SNOSDL and later

01:50.800 --> 01:57.200
the Linux Foundation, was to evangelize for the DCO, because we knew if we made it, industry standard,

01:57.200 --> 02:02.240
nobody would be able to question it, which is the position we're pretty much in today, 20 years later.

02:02.960 --> 02:08.960
I also led the effort to create the Linux Foundation Technical Advisory Board, and I did do a

02:08.960 --> 02:14.960
few things with containers that have been forgotten about long in the depths of time. But what I want

02:14.960 --> 02:21.120
to talk to you today is about the sort of deeper darker motivations that come with open source

02:21.120 --> 02:26.400
and why people actually do it, and how based on this you can manage communities to do it.

02:27.360 --> 02:35.520
I should also say that I gave a talk similar to this five years ago at FOSDAM before, just before

02:35.520 --> 02:41.920
COVID here to actually, and it was also entitled the selfish contributor, but it was mostly focused

02:41.920 --> 02:47.920
on the aspects of selfishness that help drive open source engagement with business. So I was really

02:47.920 --> 02:54.080
trying to explain to you how you can use selfish motivations to drive engagement with open source

02:54.080 --> 02:59.360
in businesses. This talk is actually going to be trying to explain how you can use the selfish

02:59.360 --> 03:05.040
motivations of individuals, people to actually help accret and drive your community.

03:07.360 --> 03:13.840
So with that we'll get on with it. I do have to give you a disclaimer. This talk is mostly my opinion.

03:13.840 --> 03:19.120
The reason it's so controversial is not everybody shares my opinion about how open source

03:19.120 --> 03:26.720
works, what you should be doing and everything. So this is all on me. I do work for Microsoft now,

03:27.760 --> 03:34.160
and you may attribute anything in this talk to me personally. My employer is nothing to do with

03:34.160 --> 03:38.080
any of the opinions that I'm going to be telling you, so you may not attribute them to them. This is

03:38.080 --> 03:42.640
the legal disclaimer. This is why they allow me to come and do these sort of talks. If I make clear

03:42.720 --> 03:49.600
that I'm talking on my behalf, not on their behalf, and with that we'll get into all of the problems

03:49.600 --> 03:58.480
of managing engineers, which are many shall we say. So this is a great cartoon. Managing engineers

03:58.480 --> 04:03.680
has been often said, everybody has heard this is like herding cats. This is one of Sarah Anderson's

04:03.680 --> 04:08.560
pictures of a cat hearder, but basically all engineers like to go their own way, they like to do their

04:08.560 --> 04:13.680
own thing in exactly the same way as cats do. And a cat hearder really just doesn't work.

04:15.440 --> 04:21.680
The basic problem that has plagued industry for a long time is that getting engineers to do

04:21.680 --> 04:29.440
productive work and by productive work, industry means work that the VPs and the CEO of your corporation

04:29.440 --> 04:34.480
once done. All engineers would claim whatever they were doing, including looking out of the window,

04:34.480 --> 04:40.240
they were doing productive work, obviously because we're thinking, but companies have very fixed

04:40.240 --> 04:48.240
ideas of what productive work actually is. So engineers tend to work best and work most

04:48.240 --> 04:54.880
productively on things they like doing, which is a very important thing to observe. And usually

04:54.880 --> 05:00.080
every engineer has a slightly different motivation. Everyone likes doing slightly different things,

05:00.160 --> 05:05.040
or sometimes even radically different things. I mean, some people even work on rust from what I've

05:05.040 --> 05:10.240
heard, whereas obviously people like me working in the Linux kernel would work mostly on C. So

05:10.240 --> 05:19.120
there's obviously a diversity of motivation among sort of everybody. Industry as in industry that

05:19.120 --> 05:24.320
higher traditional engineers to produce proprietary software has been struggling with productivity

05:24.400 --> 05:30.800
issues in software teams for a long time. Primarily because it's very difficult to motivate

05:30.800 --> 05:36.640
engineers to work on the same problem. And industry's idea was, we'll produce a project plan and we'll

05:36.640 --> 05:43.040
sit you through meetings and we'll get you in there and we'll get HR and give you motivational

05:43.040 --> 05:47.920
talk. And eventually you'll figure out what we want producing and you'll do it. And this always

05:47.920 --> 05:54.160
worked somewhat slowly. It worked. So it perhaps slowly towards its goal. But when open source

05:54.160 --> 06:00.560
came along, it was a real revelation because open source managed to move much more rapidly than

06:00.560 --> 06:05.520
industry did. And if you know in this anything about industry, you know the watch word is always

06:05.520 --> 06:12.880
agility. And so industry became very jealous of the way open source actually ran. So let's do some

06:12.880 --> 06:18.960
analogies from truffle hunting. I actually, although I work for Microsoft, I now live in Virginia,

06:18.960 --> 06:24.240
but I used to live actually a mile away from Microsoft campus in Bellevue. And one of the things

06:24.240 --> 06:30.080
I really liked about living in the Pacific Northwest for eight years is that the Pacific Northwest

06:30.080 --> 06:37.360
actually has a truffle industry. So I could, as a sort of in my spare time, I enjoy cooking and I

06:37.360 --> 06:41.680
really enjoyed cooking with black and white truffles that I could just go and pick up in the local

06:41.680 --> 06:46.800
farmers market. Because the Pacific Northwest actually has a native truffle called the Chiba

06:46.800 --> 06:52.880
Melonosporum that grew up in the Pacific Northwest and has found nowhere else in the world. It tastes

06:52.880 --> 06:58.000
very similar to the Paragode truffles you get here. But obviously the French think it's not as good.

06:58.000 --> 07:04.560
I actually, as a gourmet, I don't, I do disagree with that statement. I think you can get

07:04.560 --> 07:08.800
truffles from the Pacific Northwest as good as you can get here. But the point is, if you live

07:08.800 --> 07:12.800
in the Pacific Northwest, you pick them up in the farmers market and they're cheap. I mean,

07:12.800 --> 07:17.280
there are a lot cheaper than the Paragode truffles, which means I can cook with them an awful lot,

07:17.280 --> 07:22.000
which means I have excellent experience in truffle-based recipes. But I'm not here to talk about

07:22.000 --> 07:28.080
the recipes, I'm here to give you the truffle-hunting analogy. So the people who gather the truffles

07:28.080 --> 07:34.240
in the Pacific Northwest always use dogs to actually go hunting for truffles. Dogs are not unreasonable

07:34.240 --> 07:38.560
animals to do this with because you find truffles through the smell. They're very deep in

07:38.560 --> 07:43.280
the ground, but they always emit a slight smell that an animal with a good sense of smell can

07:43.280 --> 07:48.960
find, and dogs have a good sense of smell. So there's a massive industry in the Pacific Northwest

07:48.960 --> 07:53.120
roaming through the woods with dogs that are trained to hunt truffles, picking up truffles and

07:53.120 --> 08:00.080
selling them at farmers market. But in Europe or in France, this is not what happens. Europeans

08:00.080 --> 08:06.720
always hunt truffles with pigs. And there are many arguments between American truffle hunters and

08:06.720 --> 08:12.320
European truffle hunters about what is the best animal. The pigs hunt truffles are really well

08:12.320 --> 08:17.600
because they haven't a selfish interest in the truffle. A pig loves truffles. The reason a pig

08:17.600 --> 08:23.280
hunts truffles is because the pig wants the truffles. The reason a dog hunts truffles is because

08:23.280 --> 08:28.560
the dog loves you, and you've told it, you like the truffles, so the dog will get the truffles for you.

08:28.560 --> 08:33.760
But it doesn't have the selfish motivation to get the truffle. It has an altruistic motivation.

08:33.760 --> 08:38.320
It's only grabbing around and the dirt for the truffles because you told it to. As soon as you tell

08:38.320 --> 08:42.880
it's something else, it'll forget about the truffles and do whatever else you do. Pigs usually,

08:42.880 --> 08:47.680
if they found a good truffle patch, have to be dragged away, kicking and screaming. They do not want

08:47.680 --> 08:54.080
to give up the truffles. It is their selfish motivation to get the truffles. And the upshot of this

08:54.080 --> 08:58.800
is that, at least according to Europeans, because obviously I'm speaking from the American side of the

08:58.800 --> 09:06.000
continent, pigs do find more truffles because of the selfish motivation. The downside,

09:06.000 --> 09:11.040
corollary is that dogs actually do less damage. If the pig slipped its leash or got its

09:11.040 --> 09:15.360
muzzle off, it would actually grab up the truffle orchid. It would damage all the trees and

09:15.360 --> 09:20.720
create a massive scar on the forest. So pig using pigs to truffle hunt is dangerous because you

09:20.720 --> 09:25.200
have to control them. Whereas dogs, as soon as you whistle and call them off, they'll be gone.

09:25.200 --> 09:30.880
They're not interested in the truffles at all. But the key point here is that by harnessing the

09:30.880 --> 09:36.400
selfish motivation of pigs, Europeans can actually find masses and masses of truffles and the

09:36.400 --> 09:41.840
woods around here. So what does this have to do with open source, which is basically the

09:41.840 --> 09:47.600
meat of the talk I'm going to give you? You've all heard of the selfish motivation and open

09:47.600 --> 09:52.640
source because it's a very famous phrase. People who work in open source, it's all about scratching

09:52.720 --> 09:57.680
your own edge. Scratching your own edge is satisfying your own selfish motivation to get whatever

09:57.680 --> 10:04.400
is itching you done. And this is a key point about almost all open source. It's actually made

10:04.400 --> 10:10.400
up usually of communities of volunteers who have a selfish interest. The selfish interest is they

10:10.400 --> 10:16.880
want to see something change, something happens, something you're done. Harnessing the selfish

10:16.960 --> 10:28.080
motivation is actually what can make communities move together. And open source wins in this regard,

10:28.080 --> 10:32.720
often because contributors self-select for being interested in the community. So this is a

10:32.720 --> 10:37.520
big difference from the way the way engineering in companies works is you hire a load of engineers.

10:37.520 --> 10:41.440
You don't really ask them what they're interested in. You put them on a task and you tell them to do it.

10:42.080 --> 10:47.680
In open source, you sort of flag you might be interested in doing this project and you sort of

10:47.680 --> 10:52.720
announce it on some broad mailing list and chances are that the only people who turn up and are

10:52.720 --> 10:58.240
interested in it come to you are people who are already interested in this project. So open source

10:58.240 --> 11:03.200
already has the first advantage in that it is self-selected for people who are actually interested

11:03.200 --> 11:07.360
in the problem you're trying to solve. Whatever it is you're trying to do. So this is Strike

11:07.360 --> 11:15.360
want to open source. An interesting question in that regard if everybody's just going to join

11:15.360 --> 11:21.520
and self-interest is enough is actually do we even need a catheter? Do we need somebody to

11:21.520 --> 11:26.560
lead the project? It's an interesting theoretical question and the answer in some communities is

11:26.560 --> 11:32.720
no but in most communities is yes. And what I'm going to do to illustrate this is give you lessons

11:32.720 --> 11:39.600
from Linux. So you probably can't read this but this is the email Linus Turvals originally sent out

11:39.600 --> 11:47.040
and answering that he was actually going to start working on Linux 25th August 1991. The first line

11:47.040 --> 11:52.320
is good because it sounds nicely ironic now. I'm doing a free and open source operating system.

11:52.320 --> 11:57.040
It's just a hobby and it won't be big and professional like new and obviously we know Linux

11:57.120 --> 12:05.280
nowadays is definitely not big and professional. However in this email there are no mention of open

12:05.280 --> 12:10.720
source. There's no mention of any request for contributions. I'm starting this project that's it.

12:12.720 --> 12:18.960
What he says at the bottom is any suggestions are welcome but I won't promise I will implement them.

12:19.600 --> 12:24.320
What this means is Linus actually thinks he's going to write all the code for Linux. So this was his

12:24.320 --> 12:29.600
idea when Linux first started. I'm writing all the code. You're going to tell me what you want and I'll

12:29.600 --> 12:36.640
do it. That's going to scale really well as we all found out. He's asking for suggestions. All these

12:36.640 --> 12:41.760
doing is asking for suggestions and users. Nothing else. I produce the project you consume it.

12:43.600 --> 12:49.280
And obviously all these contributions in the shape of patches came flooding in. It was only

12:49.280 --> 12:54.240
sort of 10 patches in by the time. Linus realized that he wasn't going to be the one.

12:54.240 --> 12:59.760
The only contributed to this project they were going to be loads. Linus for bless his heart.

12:59.760 --> 13:04.000
He liked things like memory management. He does not care about things like networking,

13:04.000 --> 13:09.120
things like storage, things that are really essential for a modern computer actually to run.

13:09.120 --> 13:14.640
So he realized very early on that a lot of these patches were in areas he didn't care about

13:14.640 --> 13:18.320
but they were done by people who knew what they were doing and they would really help his project

13:19.280 --> 13:25.040
and indeed they did because within a year of that first email the Linux kernel had got to the

13:25.040 --> 13:30.640
point where it could self host the GNU operating system. So that's going from zero to a fully

13:30.640 --> 13:34.880
self-hosting operating system. I'm not going to say it's a good fully self-hosting operating system

13:34.880 --> 13:42.480
but it was fully self-hosting within a year. And obviously as far as Linus Torvals was concerned I mean

13:42.480 --> 13:47.360
his initial thought was I'm going to be the technical guy the one writing all the code.

13:47.360 --> 13:54.480
Now all he is is an open source catheter. He's the one hurting the patches. So just from this first

13:54.480 --> 13:59.200
email within the first few years I mean Linus still tried to keep his hand in. He's still tried

13:59.200 --> 14:04.160
to write patches. He's still nowadays even in the Linux kernel tries to write his own patches.

14:04.160 --> 14:08.960
If you look at the number of patches authored by Linus there are still a few in the Linux kernel.

14:08.960 --> 14:13.520
All of us try to do this. All of us who claim to be kernel developers don't write patches.

14:13.520 --> 14:18.480
You're virtually equivalent of not breathing in the kernel community. They certify you as dead.

14:18.480 --> 14:24.080
But pretty much Linus's day job is managing the patches. He's become organically an open source

14:24.080 --> 14:30.000
catheter. Or actually as we now call him the benevolent taketer.

14:31.040 --> 14:35.760
But the key point that I want to make to you the audience is that this community just formed

14:35.760 --> 14:40.880
naturally. We didn't need a foundation, we didn't need funding, we didn't need anything else.

14:40.960 --> 14:46.080
All we used was the communication tools at the university's disposal. Remember 1991,

14:46.080 --> 14:50.800
this almost predates the main internet. So most people at home weren't connected.

14:50.800 --> 14:54.880
So any students at universities were. So it's no coincidence that the initial

14:54.880 --> 15:00.400
contributors to Linus were all very young students who just joined university or all very

15:00.400 --> 15:02.960
young people who just got a computer and were getting online.

15:03.840 --> 15:11.200
And the other point is that the Linux community formed, even though everybody had slightly

15:11.200 --> 15:16.000
different interests. So I became a storage maintainer because storage was my interest.

15:16.000 --> 15:19.600
They've mellow became the network maintainer because networking was his interest.

15:19.600 --> 15:23.600
Lots of people are interested, lots of file systems, we have lots of file systems,

15:24.320 --> 15:29.440
other pieces of Linux, memory management, all that. They were all done by people who had an

15:29.440 --> 15:34.960
interest in that area. And so the combination of all of these interests is what got the

15:34.960 --> 15:39.440
kernel to be self-hosting. I mean Linus likes to think that he could have done it on his own,

15:39.440 --> 15:42.960
but if you can't write a disk driver, you're not really going to have anywhere to store

15:42.960 --> 15:47.360
your kernel code that you're actually writing once your system is self-hosting. Oh dear.

15:48.800 --> 15:55.040
And the greatest power of open source I think is this power of natural community formation.

15:55.520 --> 16:00.160
It's not a thing that's unique to open source. It's a fairly human quality.

16:00.160 --> 16:05.600
If you look at what happens day-to-day in human society, we naturally create communities.

16:05.600 --> 16:11.840
So natural community creation is a human quality, but it's a great strength of open source

16:11.840 --> 16:15.280
that we harness this human quality and make it actually work for us.

16:17.360 --> 16:21.680
So what I'd like to do next is talk a bit about community-found information.

16:21.760 --> 16:25.200
Since this is the heart of how open source actually works,

16:25.200 --> 16:29.120
I'd like to discuss how it actually facilitates things.

16:30.640 --> 16:35.040
So as I said, open source participants self-select for interest in the project.

16:35.040 --> 16:38.800
So you already start with a body of people who are interested in your project.

16:38.800 --> 16:44.880
And the 99.99999999% of the world who doesn't care about it is off doing something else

16:44.880 --> 16:46.480
and not bothering you, which is always good.

16:46.560 --> 16:55.600
Communities are formed when common goals emerge often from competing interests.

16:55.600 --> 17:02.480
Now, the last phrase from competing interests is somewhat, it's not entirely controversial,

17:02.480 --> 17:06.480
but I can tell you there are lots of people who manage communities who tell you

17:06.480 --> 17:11.840
it's much easier if everybody thinks the same way because it's not as much work for a community manager

17:12.800 --> 17:18.320
but the true secret to forming communities is actually forming them from competing interests.

17:18.320 --> 17:23.680
It's the competition of interest that actually stimulates the ideas that drive the community.

17:23.680 --> 17:28.800
This is a really important point when you get on to trying to do something like outperforming

17:28.800 --> 17:32.160
the entire world in terms of producing an operating system.

17:32.160 --> 17:37.120
If you can't move faster than everybody else who tried this before, you're going to be left in the dust.

17:38.080 --> 17:44.800
And obviously common goals emerging from competing interest relies on negotiation and compromise

17:44.800 --> 17:50.560
between participants. If everybody has a completely fixed, clashing view of what should be done,

17:50.560 --> 17:54.320
nothing gets done because you spend all your time arguing about it.

17:54.320 --> 18:00.080
So it's this natural ability of human beings to negotiate and compromise and accommodate

18:00.080 --> 18:05.920
that actually facilitates the emergence of common viewpoints for what would be a sea of clashing interest.

18:07.760 --> 18:12.960
And obviously it needs a willingness to work together, but this is another thing that opens

18:12.960 --> 18:18.480
force has. Interested people already came to your project. They already come with some form of

18:18.480 --> 18:23.440
willingness to actually help you do this. So this willingness is provided naturally. It's not like

18:23.440 --> 18:28.720
in the industry where you go, oh you've put me on project X. Why am I in project X? Can I

18:28.720 --> 18:33.040
can I be in project Y? Please let me go in project Y and when the management eventually goes

18:33.040 --> 18:37.120
unless you could help us on project X you're going to be on report and eventually you're

18:37.120 --> 18:42.160
going to be resigning. So it's the stick not the carrot, right? So in open source we don't have

18:42.160 --> 18:46.320
any of those projects because of the self selection for interest, any of those problems.

18:47.360 --> 18:53.040
Now here's another thing in that equitable power balance is important for this. What do I mean by this?

18:53.040 --> 18:57.680
Everybody who comes to a project has some sort of power to affect change within that project

18:57.680 --> 19:03.760
do things within the project. Now human societies if you look at them naturally form hierarchically.

19:03.760 --> 19:08.480
Usually there's a leader at the top say King Donald or somebody else like that and then there are

19:08.480 --> 19:14.400
people beneath them who actually do what they want to do. So even I think in the early days of

19:14.400 --> 19:19.040
Linux, Linux Toolviles was thinking he'd be the guy at the top, the King and he'd be telling

19:19.040 --> 19:25.520
everybody else what to do. And in reality, successful communities don't work that way. They work

19:25.600 --> 19:31.680
by actually having a load of empowered people do what they want to do. So empowering people to do

19:31.680 --> 19:37.520
what they want to do actually to bring out their naturally selfish motivation is a key requirement.

19:37.520 --> 19:42.720
And in order to get this to work, it means that everybody has to be empowered and if everybody's

19:42.720 --> 19:48.960
empowered, nobody has the controlling power at the top. So nobody is King, everybody is effectively

19:49.120 --> 19:56.640
acting like climate potentials. As to get all of this to work is the diversity of viewpoints.

19:56.640 --> 20:00.960
If you don't have a diversity of viewpoints, you don't have the competing interests that you're going

20:00.960 --> 20:06.560
to make all this tick. Now obviously diversity thanks to what's been going on in America is a

20:06.560 --> 20:13.280
dirty word nowadays. So what I want to do if Donald Trump happens to be listening is to emphasize

20:13.360 --> 20:19.040
that when I say diversity, I mean diversity of thought. People who think differently. This is not

20:19.040 --> 20:25.920
not DEI. So hopefully he's not listening now. And the point here is that people who are different

20:25.920 --> 20:31.840
from you often think differently. So diversity of thought is often found in diversity of

20:31.840 --> 20:37.360
appearance and everything else. So although I can claim when the Republicans are listening that

20:37.360 --> 20:42.320
this has nothing to do with DEI, there is actually a strong link. If you're recruiting from

20:42.400 --> 20:46.720
diverse communities, communities who are diverse and different backgrounds from you,

20:46.720 --> 20:52.080
you're obviously recruiting diversity of thought as well. So it actually becomes a very important

20:52.080 --> 20:57.680
characteristic of the project. But the point is that project seek out diversity for a rational

20:57.680 --> 21:03.200
reason. They need diversity of thought. And it accidentally comes with diversity of community and

21:03.200 --> 21:11.840
you know, being different, being different colors, different races, different orientations. They all

21:11.920 --> 21:17.760
come to it naturally. And obviously the more diverse the inputs are to the project,

21:17.760 --> 21:23.200
the more thoroughly the community is capable of exploring the project space. Because people who think

21:23.200 --> 21:28.400
differently from you explore in different areas than you're actually looking in to find your solutions.

21:29.680 --> 21:36.000
This is very similar when I was kid, my PhD was in computational physics. So we had this problem

21:36.000 --> 21:41.360
of finding the global maximum, not the local maximum of the wave equations. And the point is that

21:41.360 --> 21:46.400
if you look at a photography of a mountain escape, you can get a U-shaped valley. And if I only walk

21:46.400 --> 21:50.240
a small way into the valley, I think, oh, this must be the global minimum because I walk up the

21:50.240 --> 21:55.760
outside. I don't see that if I walked outside the mountain and along the plane, I'd come to a cliff

21:55.760 --> 22:01.280
and there's the sea because I haven't explored far enough. This business of exploring far enough is

22:01.280 --> 22:06.800
key to finding the optimal solutions to whatever problem you have. And it's actually also what goes

22:06.800 --> 22:11.920
into artificial intelligence. Most of what artificial intelligence is doing is an optimization

22:11.920 --> 22:18.000
for theory trying to find a global maximum in a space of millions of dimensions. So this is my

22:18.000 --> 22:26.400
link to AI. So now I've ticked all the boxes. And robust exploration leads to the best and most

22:26.400 --> 22:32.000
durable solutions. This is why you want to recruit a community of diverse interests because

22:32.000 --> 22:36.640
if a solution does emerge, it will be the robot and most robust and the best one you can

22:36.640 --> 22:45.600
actually have. However, simply obtaining diverse inputs is often not enough to form a community.

22:46.960 --> 22:52.400
The community must also reconcile diverse inputs into code. If all a community does,

22:52.400 --> 22:56.560
it's turn up and say, well, I think this and I think that and you think the other and nobody

22:56.560 --> 23:02.960
ever agrees what the best way is to proceed forwards, nothing will ever get done. So reconciliation

23:03.040 --> 23:09.280
of viewpoints is also key. You need to go off and explore the diverse spaces but it needs to be pulled

23:09.280 --> 23:13.760
back together in the end because if you don't do this, you'll just disagree and have a schism.

23:13.760 --> 23:20.000
And we've had many famous disagreements and schisms and open source based on high diversity of

23:20.000 --> 23:26.880
input. So reconciliation also has to happen. And if it doesn't happen, you won't get the good code

23:26.880 --> 23:35.200
that you're expecting. And this reconciliation is often facilitated by a leader. Effectively,

23:35.200 --> 23:40.640
the cat heard of the project or in the case of Linux, the benevolent dictator. But the job of the

23:40.640 --> 23:46.560
leader is not to tell you what to do. The job of the leader is to help everybody who has the diverse

23:46.560 --> 23:52.880
inputs see how they could actually combine these inputs from this problem exploration into building

23:52.880 --> 23:58.240
the best solution based on what everybody is found. Because everybody goes off and finds different

23:58.240 --> 24:02.720
things. And they all think that the different things they find are the most important for solving

24:02.720 --> 24:07.920
the project, the problem. But the leader is the one who comes along and says, okay, you three different

24:07.920 --> 24:12.080
people have found three different things, but they're three different aspects of the same problem.

24:12.080 --> 24:16.960
Here's what it is. And if you all worked together on it, you'd actually find that you could

24:16.960 --> 24:20.880
reconcile all of these inputs and produce the code that's going to solve the problem.

24:23.280 --> 24:29.280
Doing this correctly is what results in enormous synergy. Synergy is the process of taking a group

24:29.280 --> 24:34.080
of individuals and actually getting them to work more efficiently than the individuals would have

24:34.080 --> 24:39.520
done when working on the project. And if you look, compare open source efficiency to industrial

24:39.520 --> 24:45.440
efficiency, what you actually see is most even productive engineers in industry are usually working

24:45.440 --> 24:51.200
at about half their potential capacity. Right? In open source, we can easily double this,

24:51.280 --> 24:56.000
sometimes we can triple this. And it's the reason the velocity of open source project is

24:56.000 --> 25:02.400
so much greater than the velocity of projects in proprietary industries. And it's why open source

25:02.400 --> 25:08.560
is moves a lot faster than traditional programming and why industry is really keen to embrace

25:08.560 --> 25:13.200
the model. They're not interested in you. They're not interested in the community. They're

25:13.200 --> 25:18.000
interested in the productivity. And naturally so, because industry has a profit and therefore

25:18.080 --> 25:23.520
productivity-based motive. And again, understanding motivations is key to getting people to

25:23.520 --> 25:30.800
working together with people. And obviously one of the problems is if you do this wrongly it produces

25:30.800 --> 25:36.080
dysfunction. So if the leader is unable to reconcile the viewpoints, chances are you'll actually

25:36.080 --> 25:42.080
get a skism in the community. This would be a dysfunctional community. And I mean, I don't necessarily

25:42.160 --> 25:48.560
disagree that having two completely separate desktops for Linux was a bad idea, because I know

25:48.560 --> 25:54.160
some people passionately like gnome and some people passionately like KDE, but it indicates there was a

25:54.160 --> 26:02.160
failure to work on a single thing somewhere in the project. So let's talk a bit about community

26:02.160 --> 26:11.280
dysfunction. So often community dysfunction results from the failure of exploration. So if you don't

26:11.360 --> 26:15.920
have enough diverse inputs to begin with, you haven't explored the project problem space.

26:15.920 --> 26:20.080
The problem you've actually solved isn't the problem you have because you found that little

26:20.080 --> 26:26.000
local minimum, you didn't go all the way to the sea and see the great horizons. So this is a lack

26:26.000 --> 26:33.440
of diverse input, often leads to failure of failure of exploration. Fixed idea dominance is another one.

26:33.440 --> 26:38.960
If you elect a leader first before working out what the problem is, often the person you've

26:39.040 --> 26:44.160
elected has a very fixed idea of what you're supposed to do to solve whatever it is you're trying

26:44.160 --> 26:51.280
to do. And this can be a huge problem because if all the leader is doing is measuring everything

26:51.280 --> 26:57.760
that comes to them based on the one fixed idea they have, you're going to get a project that

26:57.760 --> 27:03.840
basically reflects everything they think of and nothing the community thinks of. So effectively

27:03.840 --> 27:09.040
you're shackling yourselves that the views of single person and it works for a while. It can work

27:09.040 --> 27:13.440
for a while for a lot of communities. Often you don't notice the dysfunction. But eventually if the

27:13.440 --> 27:18.560
project gets big enough, you'll notice the dysfunction. I mean the good thing about dysfunctional

27:18.560 --> 27:22.960
projects that look like this is often they just don't get big enough. They fail to attract

27:22.960 --> 27:27.600
a sufficient community and they die naturally and nobody ever actually sees what's going on.

27:27.680 --> 27:36.720
Inability to reconcile inputs is also a significant problem. So let's say you don't have

27:36.720 --> 27:41.760
you have a diversity of input and you don't have a leader with a fixed idea and so they're trying

27:41.760 --> 27:49.680
to help the project negotiate to find the best solution to the problem and the negotiation just

27:49.680 --> 27:54.720
doesn't produce results. So you go round and round and circles but you never agree. This is a failure

27:54.720 --> 28:01.040
of negotiation. It's often caused by ineffective leadership. One of the objectives of a good leader is

28:01.040 --> 28:06.960
actually to help communities resolve their negotiation problems. So a good leader, if you have

28:06.960 --> 28:13.360
a negotiation failure, often the leader is being ineffective. Sometimes it's just because all of the

28:13.360 --> 28:19.520
people who have the diverse views also have those in direct diverse views very entrenched. Because

28:19.520 --> 28:25.440
remember negotiation is not good enough. Negotiation doesn't mean getting everybody to see my

28:25.440 --> 28:30.880
point of view. It means getting the entire community to agree on what the best point of view was

28:30.880 --> 28:36.960
and that's not necessarily mine. So if I have entrenched views and I'm trying even as a participant

28:36.960 --> 28:43.280
to force them on everybody else, I'm going to drag everybody away from the compromise. So even

28:43.280 --> 28:47.680
as a participant in the community, you must be willing to embrace the ideas of others,

28:47.680 --> 28:52.960
potentially because they can be better than you. And the final one that I didn't really think

28:52.960 --> 28:57.360
about, this didn't really come into Linux, but it is starting to be a significant problem in the

28:57.360 --> 29:03.360
modern world is what's called a wind-lews mentality. What this means is you define a problem

29:03.360 --> 29:08.080
in terms of opposites. It's what you see going on in the United States today. If you're not with

29:08.080 --> 29:15.280
me, you're against me. If my opponent wins, anything, I have lost. And this actually produces

29:15.280 --> 29:21.120
a failure of negotiation. In the American Congress, it's a failure of bipartisanship. A lot of the

29:21.120 --> 29:26.400
bills that actually went through in Joe Biden's last year got killed, not because Republicans

29:26.400 --> 29:31.440
Democrats didn't support them. A lot of Republicans Democrats did. The bills were negotiated

29:31.440 --> 29:36.400
so that they had considerable bipartisans support. It was a right-wing fringe of Republicans who

29:36.400 --> 29:41.200
came along and said, you can't give the Democrats all that. That means they've won and therefore

29:41.280 --> 29:46.800
we've lost. So a lot of bills in Congress were killed because of this, but the wind-lews mentality

29:46.800 --> 29:52.560
will also kill negotiation within your project. So you need people who are able to accommodate

29:52.560 --> 29:58.000
them to see what accommodations they can get and to actually accommodate themselves to the views of others.

30:00.080 --> 30:05.360
Okay, so a lot of this is actually people problems. People are a problem. Working with others,

30:05.360 --> 30:10.560
negotiation is actually a learned behavior. It's what a lot of people learn on the school playground.

30:11.200 --> 30:17.200
And this is a good thing because that's why human beings actually form communities. Because as

30:17.200 --> 30:21.840
toddlers, we all learn to negotiate with other toddlers, you know, if I kick this football through

30:21.840 --> 30:26.640
the window, will you take the blame for it, something like that, but we all learn this behavior.

30:26.640 --> 30:30.880
Now here's the problem. A lot of people who work in open source are clever people.

30:31.600 --> 30:37.760
Unfortunately, in the playground, clever people don't learn to negotiate. They often learn to manipulate,

30:37.840 --> 30:44.000
right? So I can remember as a kid, you know, if I give you the my suites, will you go and

30:44.000 --> 30:47.840
take the blame for this football, I've kicked you the window. That's not a negotiation, that's

30:47.840 --> 30:55.520
a manipulation. The other thing I might say is, ooh, you know, I saw you do X yesterday, which is

30:55.520 --> 30:59.600
way worse than me kicking the football through the window. If you don't take the blame for this,

30:59.600 --> 31:04.160
I'm going to tell a headmaster you did X yesterday. Are you going to take the blame for this? That's

31:04.240 --> 31:10.720
threat-based manipulation. A lot of us learned to do this. Now obviously, manipulation is not all bad.

31:11.440 --> 31:17.680
Politics itself is the art of manipulation by incentive. So the guy offered sweets to take the blame

31:17.680 --> 31:24.000
for the football, that's an incentive-based negotiation. He gets something out of it, I get something out of it.

31:24.960 --> 31:30.640
Nobody entirely loses in this thing. The one where I did threat-based negotiation, you know, I'll

31:30.640 --> 31:35.680
tell on you if you don't take the blame for this. That's actually a manipulation by express or

31:35.680 --> 31:43.520
implied threats. But the point is that politicians see achievable compromises, often before the

31:43.520 --> 31:48.400
parties who are going to be the subject of the compromise do this. So you're offering them something

31:48.400 --> 31:53.200
that perhaps they're willing to take, but they didn't think themselves that actually I am willing

31:53.200 --> 31:58.480
to take this. Perhaps that is a negotiation I should have offered. So this is often what a leader can do

31:58.560 --> 32:05.360
is to achieve the compromises that other people don't see. So manipulation by incentive is often

32:05.360 --> 32:11.280
a quality that a leader has. And obviously if you can see the potential for compromise,

32:11.280 --> 32:18.880
you can persuade others to adopt these compromises. Now manipulation by express or implied threat

32:18.880 --> 32:24.880
is actually very corrosive. This is the one that is picked up by a lot of people. Passive aggression

32:24.960 --> 32:31.200
is one of the most inimical things to community formation. But it's unfortunately one of the ways

32:31.200 --> 32:36.400
that a lot of people learn to get their own way in the playground and later on in life. And if you

32:36.400 --> 32:41.200
want to be a community leader, you have to know how to cope with this. Passive aggression often

32:41.200 --> 32:46.240
tends to fracture a community. If you look at a bad community or a community with a bad leader,

32:46.240 --> 32:53.840
you often find passive aggression sitting somewhere at the basis of this. So often what you see

32:53.840 --> 33:00.000
is in terms of bad behavior and a community, you should have a code of conduct. The big problem

33:00.000 --> 33:06.880
is that codes of conduct don't help with passive aggression. So codes of conduct regulate behavior,

33:06.880 --> 33:11.600
you think passive aggression is a type of behavior. They don't give negotiating positions,

33:11.600 --> 33:15.600
so they don't really help you with the tasks you have to do as community formation.

33:16.880 --> 33:21.280
They don't help you to see another person's viewpoint, which is one of the key things for community

33:21.360 --> 33:28.080
formation. But they are effective against direct threats. If you find anybody issuing direct threats

33:28.080 --> 33:33.120
in your community, you can use the code of conduct to regulate it. The main problem is that passive

33:33.120 --> 33:37.840
aggressive people do not issue direct threats. The threats they issue are always indirect.

33:39.520 --> 33:46.640
So codes of conduct are often ineffective against implied threats. So let's give an example.

33:47.200 --> 33:51.600
If I have a patch that somebody else in the community doesn't like because it competes with their

33:51.600 --> 33:57.440
patch, and they come to me directly or write an email saying, if you push this patch, I'll break

33:57.440 --> 34:02.080
your kneecaps. That's a direct threat. I can go, I'm calling the code of conduct people on you,

34:02.080 --> 34:08.000
you've succeeded direct threat against me and I can have you expelled from the community. But a clever

34:08.000 --> 34:13.920
passive aggressive person wouldn't do that. What they'd say is something like, a number of

34:13.920 --> 34:19.920
us in this community have reviewed this patch. We think your patch would, in the long run,

34:19.920 --> 34:24.800
act decrease the consensus in the community, and therefore is a bad thing. And therefore, as a group,

34:24.800 --> 34:29.600
we urge you to withdraw it, and obviously there would be fracture and dissent in the community if you

34:29.600 --> 34:34.800
didn't. It doesn't sound like there's a threat anywhere in that statement. But in fact, it's

34:34.800 --> 34:40.000
loaded with threats. First threat is, everybody is ganging up on you. A number of us in the

34:40.000 --> 34:44.880
community, usually passive aggressive people always imply they're talking on behalf of majority.

34:44.880 --> 34:49.360
Right, this is number one. Number two, we've reviewed your patch and we don't think it's very good.

34:49.360 --> 34:55.120
So what I'm trying to do is they're trying to lower my self esteem, my confidence, my own patch.

34:55.120 --> 35:00.240
People whose confidence can be lowered will often not push the patch as hard as they should.

35:00.240 --> 35:03.920
This is what passive aggressive people are doing. We haven't even got to the threat yet,

35:03.920 --> 35:08.720
which is, okay, so if you keep pushing it, the rest of the community is really going to take

35:08.720 --> 35:12.480
unbridge against this. Again, haven't said what the community's going to do,

35:12.480 --> 35:15.280
they're not, are they going to come around and fire upon my house? They're just going to write

35:15.280 --> 35:21.200
nasty letters, doesn't say. It's an implied threat. It's not a direct threat. But the whole combination

35:21.200 --> 35:28.080
of that sentence is to do a passive aggressive attack on me and on my patch, to get me to

35:28.080 --> 35:33.920
doubt my ability to push my patch and to get me to withdraw it. And nothing that a code of conduct

35:33.920 --> 35:42.240
says about regulating behavior would help me combat this. Another problem with communities

35:42.240 --> 35:47.840
is they often divide themselves into insiders versus outsiders. An outsider is a drive-by

35:47.840 --> 35:53.600
contributors. An open source, we get a huge number of drive-by contributors. Basically,

35:53.600 --> 35:58.160
because lots of people turn up with just one bug in this project. If you fix this one bug,

35:58.720 --> 36:06.720
I'm fine. I'll go away and I'll just happily use your project and never contribute again.

36:06.720 --> 36:11.360
This is a drive-by contribution. I actually have done a lot of talks about drive-by

36:11.360 --> 36:16.880
contributions because I'm a fairly prolific drive-by contributor because I use open source

36:16.880 --> 36:21.840
for pretty much everything I do. When you use something often, you find things that are wrong with it

36:21.840 --> 36:26.800
and being obviously a good open source programmer, you want to fix it. And once you fix it,

36:26.800 --> 36:32.480
you want to get it upstream, makes me a drive-by contributor. Dividing a community into

36:32.480 --> 36:37.600
insiders and outsiders implicitly discriminates against drive-by contributors and this is always

36:37.600 --> 36:43.200
bad. Partly because drive-by contributors, in my case, are often your users, they often have a

36:43.200 --> 36:49.680
valid point and the patches are often not that bad. And secondly, because communities always need to

36:49.680 --> 36:55.200
grow. And the only way you're going to grow organically as a community is as outsiders become

36:55.200 --> 37:00.080
insiders. They become your core contributors. They're originally, they want to just get this one

37:00.080 --> 37:04.240
thing done. But because you are so welcoming, kind to them, they're quite like the community and

37:04.240 --> 37:10.800
they stuck around and eventually became core contributors, community leaders, and so on. So encouraging

37:10.800 --> 37:16.880
drive-outsideers to become insiders is key, but just because an outside of declines to become an

37:16.880 --> 37:24.080
insider is not a reason to discriminate against them. So let's go briefly over the origin trap

37:24.080 --> 37:30.400
because it's also becoming a key thing in open source. In acquiring into the origins of a patch instead

37:30.400 --> 37:36.320
of its contents is a slippery slope. So this is the question of who produced the patch rather than

37:36.320 --> 37:42.880
technically what does the patch do and is it good enough to go in? Not accepting patches for people

37:42.880 --> 37:49.440
convicted of crimes seems like a not unreasonable thing to do, right? Looks good. So we could do this.

37:49.760 --> 37:56.160
What about they're just indicted? Federal government has accused them of a crime. They say they're

37:56.160 --> 38:01.120
innocent, but they could not be. We could possibly not accept their patch because of that. What about

38:01.120 --> 38:06.560
millisusfected? Let's see Joe blogs down the road to specs this person of doing that. Let's not

38:06.560 --> 38:12.640
accept patches from them. And then after that it will be people who disagree with the key goal.

38:12.640 --> 38:19.280
So I'm a leader of the project. You disagree with goal number five on my manifesto I just published

38:19.360 --> 38:23.600
therefore we're not going to accept patches with you because obviously all patches you submitted

38:23.600 --> 38:29.680
would be subverting the goals of the project. You're a bad person to do business with. And then finally

38:29.680 --> 38:35.360
we get into not accepting patches because you have the wrong political affiliation. I'm a liberal

38:35.360 --> 38:40.080
project. You're a conservative right winger. We're not accepting your patches. So alternatively

38:40.080 --> 38:44.800
this is a conservative project. You're too liberal. We're not accepting your patches. And what you see

38:44.880 --> 38:51.920
here is we got from something that was ostensibly easily justifiable down to something which is

38:51.920 --> 38:57.040
basically destructive behavior. This is the slippery slope, the origin trap of patches.

38:58.480 --> 39:04.000
So the key for a community leader is don't do this. Never ever discriminate on origin if you can.

39:04.560 --> 39:09.600
If you must and sometimes you must because a community insists on it. Sometimes people have done

39:09.600 --> 39:15.200
something so bad. Damage the community so much. The community wants them ousted and you have to do

39:15.200 --> 39:20.960
this. But always use an objective and externally vetted standard if you have to do this. If you

39:20.960 --> 39:25.520
don't do that you will find yourself on the slippery slope again and eventually when you get to the

39:25.520 --> 39:31.200
bottom you'll see your community destroyed. Community leadership is really important.

39:32.240 --> 39:39.440
In all communities it's often called maintainers, cause, committers, whatever. But it's often seen

39:39.440 --> 39:47.360
as a powerful position within the project. But remember what I said about distribution of

39:47.360 --> 39:53.120
power within a project. Good projects distribute power. Therefore good leaders also distribute and

39:53.120 --> 39:58.240
dissipate their own power. If you get into community leadership for the power of it you're

39:58.240 --> 40:07.200
so facto going to be a bad leader. Don't bother. And actually tell the truth. Often good leaders

40:07.200 --> 40:12.720
are incentive based manipulators. So they're people who instead of going the passive aggressive

40:12.720 --> 40:19.360
route actually went the incentive based manipulation route. Clever people, as I said. They do

40:19.360 --> 40:24.880
often seek diversity by listening to all sides. They don't rely on their own view solely. They talk

40:24.880 --> 40:32.400
to other people. They facilitate negotiation by suggesting compromises. This is an aspect of incentive

40:32.480 --> 40:38.480
based manipulation. And they base the compromises they get on what they understand to be the

40:38.480 --> 40:43.840
selfish motivations of all the others. So understanding everybody else's self-if motivation

40:43.840 --> 40:52.240
is also a very key requirement for a leader of an open source community. They encourage others

40:52.240 --> 40:58.400
to share the leadership burden. So if you see somebody encouraging another person through a

40:58.400 --> 41:03.920
view patch or encouraging another person to change a patch or even make them a sort of subcommitter

41:03.920 --> 41:09.120
allow them to build a tree, help you get things in, do the testing. This is the way good leaders

41:09.120 --> 41:14.800
function in the project. They're easy to work with because they reduce the friction and going

41:14.800 --> 41:20.000
from producing the patch to getting the code committed. That's the job of a good community leader.

41:20.960 --> 41:27.840
Good leadership reduces the work and burn out within a community. So it's not necessarily an

41:27.840 --> 41:32.240
absolute truth, but it's a reasonable truth that a good community doesn't really suffer from

41:32.240 --> 41:38.720
burnout, even though you hear a lot about it. Bad leaders do the opposite. They act to increase

41:38.720 --> 41:44.960
their own power. They make themselves the bottleneck and a lot of the projects. They become a

41:44.960 --> 41:49.200
single point of inspection commit-off and they believe they have to do all the work. This

41:49.200 --> 41:54.400
seizing all the work to themselves is equivalent to seizing the power, but it effectively results

41:54.400 --> 41:59.200
in micromanagement and all sorts of other projects. They often have fixed an immutable

41:59.200 --> 42:04.240
visions of where the project is going. They can delay contributions because it conflicts with

42:04.240 --> 42:08.240
the patch that they've not even produced yet. It just sits in their mind. So we won't accept

42:08.240 --> 42:14.000
these five patches because I want to work on that area. They belittle other contributors who

42:14.000 --> 42:19.760
might have become good community leaders because if their goal is to increase their power,

42:19.840 --> 42:24.720
they often sense the threat other people may become and they move to eliminate that threat

42:24.720 --> 42:31.760
before it presents itself. Good community leaders actually sense when others also might be

42:31.760 --> 42:37.440
good leaders and act to encourage them. And obviously they often create a passive aggressive echo

42:37.440 --> 42:42.160
chamber. So usually the project becomes populated by people who think the same as the bad

42:42.240 --> 42:50.000
leader and echo their views. And the corollary of this is that because they take so much of the

42:50.000 --> 42:54.640
power to themselves because they take so much of the commanding, the trolls of themselves, they're

42:54.640 --> 43:00.960
often overworked and burned out. So if you see people complaining about burn out in their jobs,

43:00.960 --> 43:06.160
it's not an absolute indication their bad leaders, but it's definitely a signal that may be a

43:06.160 --> 43:13.680
leadership problem somewhere in the project. So how to become a good leader? This is basically

43:13.680 --> 43:18.720
the wrap up of my talk. Obviously you've got to learn to see all sides of an argument. Leaders

43:18.720 --> 43:26.480
who only see one view are single-minded and useless as community leaders. It's a fact that most

43:26.480 --> 43:32.720
people think they can already do it. So everybody in this room probably thinks this and it's a truth

43:32.720 --> 43:38.240
that very few of you actually have this ability. So this is a learned ability you need to practice

43:38.240 --> 43:45.280
and you need to practice very hard. So how do you do it? When I was a kid debating was a thing

43:45.280 --> 43:50.000
that we did in school. So you used to get these debate societies where the teacher would sort of get

43:50.000 --> 43:55.680
to pick out two pupils and give them a topic to debate and being the teacher, it was often a topic

43:55.680 --> 44:01.600
you didn't agree with. So everybody in this debating club got to debate topics they didn't like

44:01.680 --> 44:06.160
and it was always seen as a really annoying thing because if I only had the topic I liked I could

44:06.160 --> 44:13.040
have argued so much better for it but being a competitive lot we debated and discussed among ourselves

44:13.040 --> 44:18.720
and we actually found some good arguments even if we didn't like the topic. So this learning

44:18.720 --> 44:26.560
to debate on popular topics is key and if you're arguing with a friend you can actually do this simply

44:26.560 --> 44:36.320
by if you know the friend well enough, stop, reverse the viewpoints so you both become advocates

44:36.320 --> 44:41.440
for the others view and then try and have the argument over again. This is a very effective way

44:41.440 --> 44:46.640
of allowing you to see other people's point of view and very effective way of doing devil's advocacy.

44:46.640 --> 44:51.600
It only really works with good friends but try at some time and see how you get along it's actually

44:51.600 --> 44:59.520
a good exercise to do. If you learn to argue well for a cause you don't necessarily support what

44:59.520 --> 45:05.200
you're actually doing is developing the ability to see all sides of a problem. This is how you

45:05.200 --> 45:10.800
actually get the ability to see all sides of a problem as a good community leader so it's something

45:10.800 --> 45:17.040
that everybody should practice and obviously it's most difficult to do most people have the most

45:17.040 --> 45:21.360
problem with this when they're arguing against their own positions. So one of the things you can

45:21.360 --> 45:26.640
actually do as a committer is try and argue against your own patch. Always look at your own patches

45:26.640 --> 45:30.960
and think you know if I were looking at this and it didn't come from me what would I find that

45:30.960 --> 45:35.200
was wrong with it because this is also helping you to see the other side of the argument.

45:37.040 --> 45:43.920
So learn to use this ability to see the motivations of others and also because you can see potentially

45:44.000 --> 45:49.360
what the compromises are now. You can actually offer a person who has a different motivation,

45:49.360 --> 45:53.120
the compromise that they didn't see but you as the project leader actually did.

45:55.520 --> 46:02.080
You promote negotiation and compromise this way in your community and you make suggestions that give

46:02.080 --> 46:09.120
others effective negotiating positions. So your object is not to tell everybody what the conclusion

46:09.120 --> 46:14.800
is going to be. It's to give everybody the ability to reach this conclusion on their own because

46:14.800 --> 46:19.760
a community that actually comes to its own conclusion without being told to is a community that's

46:19.760 --> 46:26.720
developing effectively and well. And you possibly even learn to be an incentive based manipulator

46:26.720 --> 46:32.000
although if you've understood everything I've said about manipulators you may not want to admit this.

46:32.000 --> 46:38.400
So most people who are incentive based manipulators don't admit this. I'm sort of I wouldn't say

46:38.400 --> 46:43.440
a recovering incentive based manipulator but it took me a long time to admit that actually the

46:43.440 --> 46:48.560
politics of how communities and companies work what I'm really good at and it's now actually what

46:48.560 --> 46:54.800
I get paid for. So it can work for you in the end and obviously you need to deal with passive

46:54.800 --> 47:01.840
aggressive people and often in email. If you're a good community leader don't have you've already given

47:01.840 --> 47:06.000
away your power you don't have the power to muzzle the pig you actually have to persuade the

47:06.480 --> 47:12.480
pig which is a lot more difficult than it sounds. If somebody is being passive aggressive in email

47:13.040 --> 47:16.560
only respond to the technical content. Obviously if they're being directly aggressive and

47:16.560 --> 47:22.240
vote the code of conduct is a no-brainer. Ignore any passive aggression direct towards yourself.

47:22.240 --> 47:27.840
This is vitally important. Passive aggressive people seek responses to their aggression so if they're

47:27.840 --> 47:32.320
seeking a response to their aggression and you don't do anything they usually move on to a different

47:32.400 --> 47:39.280
target. But eventually this signals to them if you respond it signals to them which passive

47:39.280 --> 47:43.360
aggressive what button they've pushed that's actually likely to motivate you and they'll do it again

47:43.360 --> 47:49.840
in future. So never ever respond as an individual to passive aggressive overchairs in an email

47:49.840 --> 47:55.120
always only respond to the technical content otherwise you're going to find yourself manipulated.

47:55.120 --> 47:59.840
Providing no signal on a passive aggressive person can actually eventually encourage them just to

47:59.920 --> 48:04.000
engage normally because if they think they're standard negotiating technique doesn't work they're

48:04.000 --> 48:08.560
going to eventually and this can take a long time with some people try something else.

48:10.320 --> 48:15.520
Sometimes ignoring passive aggression can be really hard. Everybody has a button which once

48:15.520 --> 48:21.680
pushed really lights a fire under you. I do you do everybody does. So there'll always be times

48:21.680 --> 48:27.680
when however hard you try you don't achieve this advice that I've said but it doesn't it shouldn't

48:27.760 --> 48:34.240
stop you from trying the next time. Also you need to pay attention to the economics of engaging

48:34.240 --> 48:38.880
with passive aggressive people. So what do I mean by this? A passive aggressive person has an

48:38.880 --> 48:45.200
object to get something done and as a as a good or round a person you might be able to see the value

48:45.200 --> 48:50.000
of that something if it were done to the project. This is the value of actually getting that

48:50.000 --> 48:56.400
patch up stream. You set against that the cost to you of actually engaging and trying to make

48:56.480 --> 49:01.280
this passive aggressive person part of the community because it is a cost to most people who

49:01.280 --> 49:06.480
have to engage with them. If the cost balance turns out to be positive the patch will be worth

49:06.480 --> 49:10.880
more than the aggro of actually persuading them to engage properly with the community. Probably

49:10.880 --> 49:16.880
accept it but if it's costing you way more than the patch is worth let's say it's just a spelling

49:16.880 --> 49:22.320
mistake fix. Chances are you want to think about easing this person out of your community

49:22.400 --> 49:30.480
towards another let's say less well uh first community. Now if you see passive aggression

49:30.480 --> 49:35.360
directed towards others the best thing is to do nothing as long as nothing gets done there's no

49:35.360 --> 49:41.840
signal that's fine. If the person it's directed to responds you can think about intervening.

49:41.840 --> 49:47.760
So in the example I gave where you say the community thought that this patch you produced was

49:47.760 --> 49:52.640
really bad and that the approach you're on is wrong. If as a leader I pipe up and say actually

49:52.640 --> 49:57.200
I read that patch and I thought it was pretty good. You are deflecting the passive aggression towards

49:57.200 --> 50:04.080
somebody else. This can often be good and then always be willing to be wrong and always admit being

50:04.080 --> 50:10.000
wrong when you are and so we get the conclusions which are harnessing selfishness is essential to

50:10.000 --> 50:16.240
maximum engineering productivity. You have to do this. Understanding selfish motivations is vital

50:16.240 --> 50:21.920
for helping contributions and also vital for becoming community leaders. So I hope you enjoyed the

50:21.920 --> 50:26.480
talk. It was actually produced with impress that makes me a web developer because I wrote a tool

50:26.480 --> 50:32.640
in HTML 5 and CSS. Unfortunately my handsome partnership system is down at the moment

50:32.640 --> 50:37.680
owing to a data center failure in Los Angeles. When I get it back up which will be a couple of weeks

50:37.680 --> 50:55.840
the slides will be at this path and I'll say thank you and cool for questions.

50:55.840 --> 51:01.680
We have a limited amount of time so just raise your hand if you have any questions I will go back

51:01.680 --> 51:10.000
to your seats. Any questions at all?

51:23.280 --> 51:26.560
Okay then let's wrap it up. Thank you very much.

