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