1 00:00:03,937 --> 00:00:07,837 Yep right hello again, 2 00:00:10,917 --> 00:00:16,617 let's talk about i'm sure most of you have seen this picture at some point we're 3 00:00:16,617 --> 00:00:20,157 going to talk about laser pointers broken but you know who i'm talking about 4 00:00:20,157 --> 00:00:24,877 that guy what does he do who is he Why is he doing it? 5 00:00:25,637 --> 00:00:30,217 So we're talking about maintainers. What is a maintainer anyway? 6 00:00:31,097 --> 00:00:36,697 Chances are the maintainer of a certain project is the original author of the project. 7 00:00:36,937 --> 00:00:40,797 It's often the case, doesn't have to be the case, but let's assume it is. 8 00:00:41,797 --> 00:00:46,877 Then they are also likely the lead developer of the project. 9 00:00:47,217 --> 00:00:52,217 And also what in a corporate world one would call a software architect. 10 00:00:53,657 --> 00:01:00,017 Then when the project has some form of UI, chances are they are also the designer 11 00:01:00,017 --> 00:01:04,277 or the UI designer, the UX designer of that project. 12 00:01:04,337 --> 00:01:09,357 Whether that's a good idea or not is up for debate, but more often than not, that's the case. 13 00:01:11,075 --> 00:01:17,855 They are also likely the one who takes care of CI and CD infrastructure and 14 00:01:17,855 --> 00:01:26,195 are a sysadmin for the website of the project or any auxiliary build and promotion infrastructure. 15 00:01:27,255 --> 00:01:32,355 Then chances are they're going to take care of packaging for various app stores 16 00:01:32,355 --> 00:01:36,855 or package managers, distributions and so on. 17 00:01:38,035 --> 00:01:41,695 One, already mentioned, system administrator for various things. 18 00:01:42,715 --> 00:01:49,395 They're also the one who set out the guidelines for what's happening with the 19 00:01:49,395 --> 00:01:52,715 project and the product. So in a way, they are a product manager. 20 00:01:53,235 --> 00:01:57,595 And some people like to say the most important thing a maintainer can say is 21 00:01:57,595 --> 00:02:01,555 no to contributions that don't fit the vision of the project. 22 00:02:02,635 --> 00:02:07,355 They're also likely the one doing bug triage and bug fixing primarily, 23 00:02:07,735 --> 00:02:12,755 dealing with user support, questions, complaints, and everything. 24 00:02:13,335 --> 00:02:20,355 And once you have a certain community around you, of which about a third is 25 00:02:20,355 --> 00:02:26,055 reserved for sleep and most or a lot of maintainers don't only do that in their 26 00:02:26,055 --> 00:02:27,655 free time, which is very limited. 27 00:02:27,715 --> 00:02:30,255 And so things can get rather slow. 28 00:02:31,675 --> 00:02:37,515 There's also risk of bus factor, because if there's one guy or one person taking 29 00:02:37,515 --> 00:02:42,235 care of everything, if that person, something happens to them, 30 00:02:42,255 --> 00:02:45,755 doesn't have to be a bus, then that project is in trouble. 31 00:02:47,175 --> 00:02:50,815 And then there's the saying, jack of all trades, master of none. 32 00:02:50,995 --> 00:02:56,335 And when you have to take care of all of these things, then you are very quickly 33 00:02:56,335 --> 00:02:59,615 a jack of all trades, but not necessarily a master of anything. 34 00:03:01,555 --> 00:03:09,875 And with all of that, it's very, very likely that the person is at risk of burnout. 35 00:03:12,174 --> 00:03:16,274 And once you're at the point where you kind of burned out of the project and 36 00:03:16,274 --> 00:03:20,014 people keep coming to you with things to do and suggestions and complaints, 37 00:03:20,294 --> 00:03:26,174 you develop a sort of siege mentality where you block off any attempt at challenging 38 00:03:26,174 --> 00:03:32,474 the status quo and just refuse to do anything differently, even if it's a reasonable request. 39 00:03:33,114 --> 00:03:40,534 So a single maintainer project can quite quickly devolve to a dictatorship over that project. 40 00:03:42,174 --> 00:03:48,674 So, how do we do things in KDE? Most KDE projects don't have a formal maintainer. 41 00:03:48,854 --> 00:03:53,454 For frameworks, we even explicitly remove that information from the metadata 42 00:03:53,454 --> 00:03:55,634 files because quite often it was wrong anyway. 43 00:03:57,574 --> 00:04:02,094 And quite often we have something that Nates likes to describe as a council 44 00:04:02,094 --> 00:04:08,354 of elders, which is a couple of senior developers that do a lot of the things 45 00:04:08,354 --> 00:04:11,734 that the maintainer is supposed to do and make decisions about the project. 46 00:04:12,874 --> 00:04:17,214 Then we have a sysadmin team that takes care of CI infrastructure, 47 00:04:17,894 --> 00:04:23,214 website infrastructure, build infrastructure, email, a ton of things. 48 00:04:24,294 --> 00:04:31,114 We also have people looking after websites. We have a bug squad that takes care of bug triage. 49 00:04:31,554 --> 00:04:35,354 We have a visual design group. We have a promo team. 50 00:04:35,654 --> 00:04:41,934 We have KDEV taking care of a lot of legal and financial matters that nobody wants to deal with. 51 00:04:42,514 --> 00:04:45,534 We have people dedicated to doing user support. 52 00:04:45,874 --> 00:04:50,994 We have translators because no single maintainer can translate for all languages. 53 00:04:52,634 --> 00:04:58,354 We have distributions that take care of packaging and some form of user support. 54 00:04:59,134 --> 00:05:06,034 And generally, we have a community. And I think that's what makes KDE not unique, but special. 55 00:05:09,212 --> 00:05:15,872 Is this all fine and dandy and perfect? No, there's some unique risks and challenges to that. 56 00:05:16,512 --> 00:05:22,092 One of them is fragmentation of the community. If you have individual groups 57 00:05:22,092 --> 00:05:25,912 or people taking care of things, then things can get quite fragmented. 58 00:05:25,932 --> 00:05:29,372 And if those groups don't talk to each other, there will be conflict. 59 00:05:31,152 --> 00:05:36,072 Then there's overhead to it. If Plasma needs to wait for SysAdmin or SysAdmin 60 00:05:36,072 --> 00:05:41,192 needs to wait for Plasma or anyone waiting on anything introduces a lot of communication 61 00:05:41,192 --> 00:05:45,372 overhead and delays and generally not pleasant experiences. 62 00:05:47,512 --> 00:05:53,292 And when you are able to focus on only one thing, you may or may not become 63 00:05:53,292 --> 00:05:59,172 master of that thing, but you only become master of one thing and don't even 64 00:05:59,172 --> 00:06:01,072 get close to being a jack-of-all-trades. 65 00:06:03,092 --> 00:06:07,432 Then not only does the community fragment, the knowledge in the community fragments 66 00:06:07,432 --> 00:06:13,112 because very few people outside of Ben know how to run our infrastructure which 67 00:06:13,112 --> 00:06:14,932 is causing bus factor issues, 68 00:06:15,892 --> 00:06:19,272 and there can also be a lack of ownership 69 00:06:19,272 --> 00:06:24,972 about some parts of the code that a community so if somebody writes something 70 00:06:24,972 --> 00:06:30,712 then disappears and then nobody feels like they should be careful care for something 71 00:06:30,712 --> 00:06:35,252 that thing can rot and if then somebody comes and wants to do something about 72 00:06:35,252 --> 00:06:38,192 it but no one's around to review and merge patches for it, 73 00:06:38,852 --> 00:06:41,852 that can cause a lot of frustration and issues for new-time people. 74 00:06:43,812 --> 00:06:46,672 Let's think about all of those. And with that, I'm done. 75 00:06:48,832 --> 00:06:49,572 Thank you.