We got a round of applause for Bruce, please.
Hello, everybody.
My name is Bruce Momjin.
I am from Philadelphia.
I am one of the Postgres Court team members,
and I'm going to talk for the next 30 minutes
about some of the nuts and bolts
of building open-source teams.
I know the previous talk was a little more
high-level.
This is definitely trend-travel activity here
because that's what I've done for a long time.
I'm basically a co-founder of the Postgres Internet
Development Group.
We have a dev room downstairs.
We had a big conference on Friday at local hotel.
We have a whole bunch of events coming up.
Paris, Stockholm, Malta.
We got one in Chicago.
We're going to be at scale in a couple months.
We have Ottawa and hopefully one in Singapore
coming up, so a whole bunch of stuff going on.
I travel a lot.
I've been a court team member since the community started
in 1996, and I've worked for three open-source companies.
I've been around the block, and I have some insights
into how we've built Postgres and some of the things
that work for us.
What I want to talk about first is motivation.
There's something a lot of people don't talk about.
We take it for granted that people are going to come to us,
but why do they come to us?
Why do they want to be involved in open-source?
What interests them?
Why are they even giving their time to us?
It's kind of a trench question.
Talk a little bit about open-source management
and how we manage the open-source project,
and then I'll talk a little bit about the development process.
Open-source motivations.
This is actually from a study done in 2002
published in the Register URL here right at the bottom.
By the way, these slides are actually on my website,
so if you want to go here, feel free to get the slides
and do whatever you want with them.
What they basically did a survey,
and they found that the major motivations
for people getting involved with open-source
were professional advancement, learning new skills.
That's probably what got me involved in new skills.
Practical need for the software.
Maybe they have a business need for the software to be enhanced.
There's a lot of people in the Postgres community like that.
Or their business wants the software to thrive.
Now, that's my employer, EDB,
wants Postgres to thrive so they pay me
to kind of do my crazy thing.
Mental stimulation is actually a valid reason to get involved.
I was actually one of my also reasons for getting involved.
I was always curious how a relational database worked
and Postgres was open-source so I could actually see it work.
It was exciting to me.
And finally, the belief in open-source,
the belief that open-source is a good
and therefore I want to invest in that.
So these are kind of the four big ones.
I'll tell you the real thing that nobody talks about
is if you go up to somebody who works in open-source
and you say, which one of these are you,
they may not even know.
And the weird part of it is that they all kind of work together.
Yeah, I love the mental stimulation aspect
and I actually kind of have a need for it
and I'm learning new skills and that might help me in my career.
And open-source stuff is cool and I like helping people.
Which one is it?
Well, it's kind of all of them kind of mushed together
and I may be able to give you percentages a little bit
but that's part of the beauty of it.
Usually, if I say somebody, go dig a ditch,
they're going to say, okay, how much are you going to give me
for digging the ditch?
They kind of know what's motivating them
because they just don't want to dig a ditch.
But for open-source software,
it's like multiple motivations all kind of working together
and flowing together.
And healthy open-source projects are able to have
all of those aspects working at the same time.
And if you focus on just one of them,
which I know some projects do,
you're really not taking advantage of the full spectrum
of ways of attracting developers.
I know this is kind of,
I've never heard anybody talk of it before,
but when you see it in writing,
you're like, yeah, I guess that does kind of make sense
because that's kind of how I got involved
and that's what motivates me.
So there's all this kind of stuff that doesn't really make sense
but actually it actually does.
I mentioned mental stimulation.
Programming is one of those unusual activities
that does not require any upfront money.
As long as you have a computer,
you can do as much programming as you want.
You're not paying per hour or paying per piece
or paying for wire or paying for fabrication
of some kind of equipment.
It's basically a malleable and a cost-free medium
that you can continue changing.
And that cost-free aspect actually helps people get involved
with Postgres particularly.
It's kind of a puzzle to solve some of the problems
we have to do so that some people like,
how many people like puzzles, right?
I mean, yeah, it's kind of fun, right?
Postgres has a ton of puzzles that are really hard
and a whole bunch of people would love to work together
to solve them.
That's one of the things that attracts people.
It kind of makes sense.
They wouldn't say it this way,
but when you look at the people
and they look at the way they talk
and you kind of like squint your eye a little bit,
you're like, yeah, that's really what's kind of,
you know, on the other parts as well
because they have a good-paying job
and they like helping people and they like open source
and it's helping their business.
There's a whole bunch of things all going at the same time.
They enjoy learning.
There's just a whole bunch of stuff.
And actually, this comes out of a book from,
I think, the 70s, the Mythical Man Month, right?
So, yeah, we're going way, way back here
in terms of understanding why programming is interesting.
But we're kind of, I feel, as open source people
and, of course, the postgres person,
we're kind of, there's a term in English,
you know, you're running on all cylinders.
All of you are, you have an engine
and all of the cylinders are working in the same way
in a uniform fashion for the same purpose.
And that's kind of what we have here
and that's kind of what we have here.
So what I'm saying is that to build open source projects,
you're not going to open with these things,
but be aware that these are aspects
and aspects that you're going to attract different people
who have different focuses
and different things that motivate them.
Okay?
Let's talk a little bit about management.
Obviously, managing an open source project
is incredibly complicated.
Having done it for so long
and having done it really when open source was much smaller,
obviously communication is a key aspect,
the ability to send free, in fact, you know,
email, we didn't have chat back then, really,
but the ability to send communication freely
across the globe and harness the capabilities
of people who are very far away from me
is incredibly important.
But you're all going to have issues
with just being able to communicate
potentially with email.
You may not meet the people that you're working with.
You have travel distance challenges.
You have time zone distance challenges.
When I was working on the port of Postgres to Windows,
I had one person in Stockholm
who's actually at the conference
and another person in Sydney, Australia.
So based on their availability,
I would wake up in the morning
and I would work with the person in Stockholm
because he would prefer to work in his evening time.
And then I would kind of go through the day
and then at night I would work with the person in Sydney
because that person liked to work in their daytime.
So I had this weird thing where I'd worked really hard
from like 7 to 9 in the morning
and like from 10 to midnight.
And the rest of the day was kind of like, yeah.
The culture's going to be different.
People are, different cultures are going to have different focuses.
One of the things I've tried to do is to make,
like sort of fit into the culture I'm visiting
or the people I'm working with.
Sometimes that's uncomfortable,
but I think it's important.
Language, obviously, that's a huge challenge.
You know, I'm speaking in English.
You're understanding English.
But I realize, A,
I'm not sure how successful I would have been
if I had to do everything in French or Flemish or German.
I don't know if I would have been capable
of being the communicator I am
if I had to go learn another language to be involved, right?
How can we bridge that gap?
I feel I'm very lucky and blessed to have,
to be able to speak in English
and you have to understand English,
but that's not everybody.
And how can we work with people
who have trouble learning languages
or just don't have the opportunity to learn languages?
And how can we show that we value their contributions
and we want them to be part of our community
and how to, that's,
I can have a whole talk just on that,
you can imagine.
Funding, I'll talk about that in a minute.
Communication, so I've gotten,
I'm pretty good at that.
One of the people, one of our community members said,
you know, for, early on they said
to do, to get new people in the community
we just need Bruce Momchin to tell them
because I used to call people just in the middle of the day
and talk to them about whatever they wanted to talk about
who are regular community members.
And I may be calling Germany,
I may be calling, you know,
the other side of the country, the United States,
but that personal contact
meant a lot.
I care about what you're doing,
I want to know you,
I don't necessarily want to know what you're doing
for the community, I want to know you as you.
And if you want to do something for the community,
that's fine, but that's not my focus, okay.
When I go to visit and I travel quite a bit,
maybe 30 some events a year,
I'm not there to tell you about our software.
I'm not here to tell you about my software either, right.
I am here to get to know you,
I am here to understand how we can help you
and how we can work together
in whatever you feel you want to work on.
But I don't have an agenda,
my employer fortunately doesn't have an agenda for me,
so I'm basically, my title is evangelist
and Postgres evangelist or open source evangelist,
whatever you want to call it,
I am not here to sell you to use anything,
I'm not even here to tell you to use Postgres, right.
I remember I was in, I was in,
Sri Lanka once and somebody held up his hand and said,
why would I use Postgres instead of MySQL?
This was like 20 years ago.
And I said, I don't know.
Maybe, I don't know.
It's not, I said, if you want to use it fine,
if you don't want to use it fine.
I'm not here to tell you,
I'm not here,
if you wonder why it has some features you might like,
yeah, I can talk about that,
but I'm not here to convince you.
I am here to get you involved if you want to be involved.
Instant messaging, I've actually found it to be really
almost better sometimes in the phone now,
because everyone's on, typically Telegram is huge.
If you're not using Telegram,
that's usually what I use for Europe, Russia.
A lot, Asia's a little harder.
You know, there's WeChat in China and
I'm not sure I do a whole lot of chatting with Japan or Korea.
I have a couple of Korean guys on Telegram,
now that I think of it.
Yeah, I mean Google Chat and we don't do too much with Facebook
or at least I don't, I'm sure some of my people do,
but being able to just chat somebody and say,
hey, did you look at this or how you're doing
or did this problem in your country cause you a problem
or how you're feeling or,
wow, that was an amazing email you sent
or I loved that patch you did.
These little things, it doesn't cost you anything.
I'm not sending them $100, I'm just talking to them
and I'm saying, you did a great job.
I was down there at the Postgres booth
just before I came up here.
I said, this booth looks great.
And I said, the dev room we have looks fantastic.
We got a Postgres banner out front of the building.
There's a banner right near the entrance to the room.
We've got people in blue vests that say elephant herder
on the back that are sort of helping people get into the room.
And I'm like, we look like a million bucks here.
I don't know what you guys are doing, this is great.
Didn't cost me anything, but they did a lot of work.
Somebody had to make those vests.
These people are volunteering their time.
Somebody had to bring the banners.
They got to put them in their car and bring them here.
Nothing worse than doing something
and have nobody care about it.
There's a lot of people who do stuff and nobody cares.
Nobody, even if people appreciate it,
nobody tells them they appreciate it.
It does not cost you anything to tell somebody
you appreciate what they do.
It doesn't diminish you.
It doesn't make you look foolish.
They're probably going to thank you
and it's going to mean a lot to them.
That's a key aspect of building any type of community,
particularly a community where nobody gets paid.
I mean, I know this sounds like obvious,
but a lot of people don't do it.
And that's my soapbox.
Yeah, I'm sorry about that.
I travel a lot and there's a lot of people
who help me get to where I am
and help me get fine things
and help me in the hotels and airports and stuff.
I say, thank you. Thank you for helping me.
Thank you for working on Sunday.
I know you'd rather be home.
I think it makes a big difference.
It's a mind change.
It's a mind change of what type of person you want to be.
It's not just an open source.
It's basically what type of person you want to be.
A grateful person who thanks others for helping them
or you just want to worry about yourself
and just get your thing done
and whatever happens to those other people who helped you.
Yeah, right?
A lot of people that way,
but you're not going to be a leader if you're that way.
That's not the type of leader.
In fact, there's a really interesting,
I go to a lot of leader conferences
and there's basically seven, six type of leaders.
There's like the innovative leader,
there's the managerial leader,
there's the sort of organizational leader,
and one of them is probably the most important for open source
is the servant leader.
The leader who is a servant to the people who report to them
and wants the best to happen to everyone who's reporting to them.
That's the type of leader you have to be an open source
because you have no money.
You have no control over these people.
They are helping you out of their own voluntary
and if they stop doing it, there's nothing you can do.
And a lot of management focuses on rewarding people
and paying them and stuff,
but honestly, servant leader for open source,
you can search for it.
There's a lot of talks about it.
It's actually really interesting.
One of the things I found in terms of conferences,
and this is a good example,
I travel about 90 days a year when COVID isn't happening
and I found that going to somebody's country
and spending time with them
and staying an extra day after the conference
and just hanging out with them
and doing whatever they want to do is gold.
The conference itself,
yeah, okay, people hear me talk
and I'm talking about Postgres features
and blah, blah, blah, blah, blah.
Okay, yeah, maybe I'm good at that
or maybe they can see my slides online
and it's not the same maybe,
but a lot of what I do is not just peeking to small groups
but spending time with individuals in their countries,
just doing whatever they want to do.
Hey, let's go to the park.
Let's go to the zoo.
Let's show me something interesting
and it's unbelievable some of the stuff I've seen
by just asking somebody, hey,
I'm here for an extra day after the conference.
If you want to do anything, let me know.
And you don't know what's going to happen to you.
And honestly, it's a little scary.
You'll notice I have shoes on
but they actually have high-top shoes
because a lot of times when I'm traveling,
I don't know what climb I'm going to be going up.
Particularly in Russia,
I seem to be ending up on the top of a mountain
or in a forest or covered in snow
or just places I never would have thought I'd go.
But again, I have to be flexible.
I can't be this sort of like, oh, I'm scared.
Anyway, it's actually kind of crazy
and that investment, that investment pays back.
It really does.
One of the issues I've had is, yeah,
email's nice, talking to somebody on chat is better.
Talking to somebody by voice is better than that.
Going to them is the best, right?
So I'll tell you a story and surely you're here or you left?
Surely you're here? No.
So I have the shoes right there.
So in 2000, I want to say three,
I sure used to work for Oskon.
I went to Oskon in San Diego.
I fly out there.
I didn't travel very much at that point.
So I fly out to San Diego and it was in a hotel right on the water
and I had a tutorial and a talk.
So I gave my tutorial, it was probably like 40 people there
and then I gave my talk the next day
and there's like 30 people there.
And I'm like, okay, so I talked to like 70 people
and I'm on the plane flying home and I'm like,
I was a waste of time.
So I sent an email, thousands of people see it.
I just flew across the country,
spent like four days, five days,
like to talk to 70 people.
I'm telling my wife, we're not doing the same one.
It's 2003.
I think I've traveled like 1200 days since then,
but anyway, the stats are on my website.
What I found out is the next week when I was looking
at the Postgres email list, there was a lot of activity
that wasn't there the week that I left.
Before Oskon, the week after Oskon,
I had a lot more activity after the week
and what I realized was the people I had lunch with
at Oskon were now the people who were actively working in Postgres.
I don't know how it happened.
I don't know what magic words I said.
Who knows?
But the point is it wasn't unbelievable
and sure it was the people in my talk.
I think it was the people I talked to at lunch.
I talked to them.
I got to know them.
I talked about, I guess I must have said something
about Postgres or they asked me something about Postgres.
I talked about, and all of a sudden we were going.
And I don't know, Magnus Haagender,
who was actually one of the core team members as well,
he's here, and I went to a conference early on,
it was in 2004 in, it was in Denmark,
style Copenhagen.
Yeah, I have my clock right here.
I'm good.
Away to Copenhagen.
And again, it was a very early trip.
I remember flying.
It was a crazy flight out of JFK in the snow.
I remember arriving and I don't know.
I talked to the guy, it was Magnus.
I don't know.
I don't even know what Magnus meant.
I didn't know that Magnus was a name
because I'm from the United States.
So I'm talking to him and he's talking to me about stuff
and okay, whatever.
And I talked to a bunch of other people.
And then I came back from Copenhagen,
all of a sudden Magnus is involved
and he's working an email with us.
I'm like, oh, this is great.
Little did I know, he would end up being
the president of Postgres Europe
and a core team member.
You don't know.
You don't know who you're going to talk to.
So I will tell you travel is time consuming.
There's only a few people in any one location
but if you can do it and you have the time
to invest in a long-term goal, it pays off tremendously.
Time zones, obviously we all work in multiple time zones.
I've always worked from home.
So I don't have it nine to five.
My days have always been very long.
So I work, you know, I kind of, you know,
I work in the morning and then I work kind of through the day
but I may take two hours off,
three hours off in the middle of the day
to go shopping or go visit somebody or go to church.
I don't know, whatever.
And I never really worried about it
because the work's always there, right?
And at night the people in Asia are awake, right?
And in the morning, so it's actually kind of a long term.
Having a cell phone is nice
because you can communicate when you're not home
but it is a 24-hour cycle, right?
There's something happening all the time
and that is a little hard to get used to.
Culture, show interest in other cultures.
Don't be the person who, oh, I don't do it that way
or oh, that's wrong that you do it that way.
We had a case where there was an inappropriate something
at a conference in Russia years ago
and I had to call somebody up in the middle of the night.
I called him at his 1 a.m. and he answered the phone
and I kind of talked to him about the issue
and he was able to resolve it by the time everyone got up
the next day, right?
So again, I had that, I already had personal contact
with that individual.
That individual had already sent his daughter to live with me
for a summer to learn English.
So I knew him and his family very well
and he answered my phone at 1 a.m.
I said there's concern about this event,
this thing that happened at the conference.
I got all the information I need.
I talked to the court committee and we handled it very cleanly.
But again, I had already invested in that relationship
long before I needed to call that person at 1 a.m.
to get an answer so that things didn't get out of hand.
It turned out they didn't understand.
This was part of the package they bought
and we're like what country has a package like that?
But whatever.
You have to be culturally understanding sometimes.
I spoke at a Russia conference in June
and people were saying don't do that.
Well, we don't discriminate against where somebody lives, right?
So how do I do that?
I start the talk and I said I want to say something
before I talk about my material.
I said I know it's a very hard time for people in Russia
but it's an even harder time for people in Ukraine
and the Ukrainians.
But I said I work for a project that does not have boundaries
between individuals.
We don't discriminate on where somebody lives
and it's in that spirit I'd like to talk to you today.
I said the one sad thing is that I have been in Russia many times
and I have and I said I'm sad to think it's going to be a long time
till I can come back and see you again in Russia.
And the feedback I got from them was they really appreciated me saying that.
I was able to talk about Ukraine.
I was able to talk about Russia at the same time
and I think in a balanced way.
And they appreciated somebody who was willing to talk about that.
So again, I spent a lot of time thinking about what am I going to say to them
and how am I going to make sure that I say the right words.
But they appreciated it and I continue to have a regular dialogue with them.
And we have a lot of developers in Russia still who continue to work on our project.
We don't discriminate against them basically.
Language can be an issue.
We do have some cases where we try and do per language.
Remember I talked about the language barrier.
We have a French email list.
We have a Spanish email list.
We have a Japanese email list.
A Chinese email list.
There's a whole bunch of per language lists to get people started.
We have per language, I believe it's telegram channels.
I know we have a big Russian telegram channel.
I don't remember what other languages we have.
I know we have Slack channels for particular languages.
We have obviously conferences all over the world.
Some of them are in native languages.
Some of them are in English.
Some of them are both or translated.
So when I go to Japan, there's typically a translator there.
When I go to Russia, often there's a translator in China as well.
So again, depending.
We have different documentation in different languages too.
Funding, we don't have any.
So just get over that.
Hopefully you'll find a company like mine
who is worried about the health of the community
as willing to invest in somebody as crazy as me
who just says these things and goes around and does whatever.
And the reason is because they're investing
so that if there's a problem,
he already knows everyone who can get the problem fixed real cleanly.
And that's again one of the investments.
In the development process, we try and involve everybody.
Find each person's motivation.
Remember, different people are motivated by different things.
So figure out what they're motivated in
and try and put them in a position where they're going to be strong.
I don't know how to put this, but none of us is perfect.
We all have problems, things we do wrong.
So I try and look at a person and say,
what is your strength and what are the weaknesses?
How can I put them in a place where your strengths are going to shine?
I kind of have somebody backstopping the weaknesses
so that it doesn't become a problem.
Reach out to individuals.
Again, that personal contact is important.
Harvest the strength of the team.
There's always somebody smaller than you.
I learned that early on.
There was a guy in Krasnoyarsk, Russia,
who was so smart early on,
not only could not answer his questions,
I didn't understand why you'd ask him a question.
So I'd say, I don't know the answer,
but why you're asking the question is like,
oh, okay, I understand it,
but now I at least understand why you asked the question.
Produce work that people are proud of.
I'm not always Mr. Sunshine sometimes.
If I'm embarrassed by something,
my community members will hear about it.
In fact, somebody just told me today,
I railed against how a website looked.
It was kind of stuck in an ugly years ago in Dallas.
You remembered where it was and what year it was,
and he said you didn't like the website
and you basically said you were going to,
you like yell at everybody and he said,
I don't care what you do to the website, do something.
Because we were stuck and we couldn't,
we were stuck trying to look for something perfect.
I said, just do something and that kind of got us over the hill.
Produce clean code.
Remember, we're not paying people to code,
so we better make it easy.
And finally, manage the team.
Lead by example, not from authority.
This is a big thing.
I didn't realize it myself,
but if the leadership,
the leadership really has an unspoken control
over how the project and how the team works.
If you have toxic leadership at the top,
you're not going to have a well run team at the bottom.
If you have a servant leadership at the top,
the people underneath you will be servants
to those below and so forth
and will continue promoting people up and up
into more powerful positions.
That is absolutely a key aspect.
I've been surprised at how well that works.
Except failure gracefully, when I make mistakes,
I'm like, I'm sorry.
And when I say, I'm sorry, and I say I made a mistake,
it opens the door for other people when they make mistakes
to also say I made a mistake.
Because if Bruce can say he was wrong about this thing
and basically take the lumps on it,
then, oh, I guess, look, it didn't hurt.
I guess I can do that too.
If I'm the type of person who ignores any mistake I make,
then that's how other people are going to do it.
So seek consensus.
The post-christ community does that a lot.
Okay, let me take some questions.
I'm going to have one question.
We have one minute for one question.
Who would like to be our one question in our one minute?
I see a hand, a lot.
It's Ilya.
She's going to give me an easy one, I'm sure.
Hi, Bruce.
Hey.
So here's my question.
How do you find balance?
I mean, you said you take calls at 1 a.m.,
you travel three months a year, blah, blah, blah.
You have wife, you have children.
How do you do that?
Right, so the question is how do you find balance?
Basically, you have to just accept your failures.
You have to accept that I'm not going to be everywhere,
that I'm not going to be able to fix every problem,
I'm not going to be able to do everything.
And you now rely on your leaders.
So for example, a great example, when I'm here at the conference,
I have no idea what's happening in the community.
No idea, because I trust all of our people who have been working
for years on this, so when I travel,
I don't even bother reading the community email list.
When I get back, I'll take a look at it,
and you know, nothing bad happens when I'm gone.
So what I've realized is not to be anxious about things,
to trust the people who are part of your organization,
to handle it, and by showing confidence in them,
they become confident.
If you show you're not confident then,
they will not be confident.
It's kind of natural.
Thank you.
Appreciate it.
Thank you.