WEBVTT 00:00.799 --> 00:00:02.734 Hello, I'm Bastien Guerry, 00:00:02.734 --> 00:00:04.701 and I'm happy to be here. 00:00:04.701 --> 00:00:07.734 I've been the Org-mode maintainer 00:00:07.734 --> 00:00:09.501 for the last 10 years, 00:00:09.501 --> 00:00:11.368 and I would like to ask the question 00:00:11.368 --> 00:00:14.034 how to help GNU Emacs maintainers in general. 00:14.400 --> 00:00:15.519 By GNU Emacs, I mean 00:00:15.519 --> 00:00:18.080 the whole GNU Emacs ecosystem, 00:00:18.080 --> 00:00:19.520 including packages, 00:00:19.520 --> 00:00:21.039 not just the core GNU Emacs 00:00:21.039 --> 00:00:24.880 that we all love. 00:00:24.880 --> 00:00:28.268 After a decade of dealing with 00:00:28.268 --> 00:00:29.368 the Org community, 00:00:29.368 --> 00:00:32.934 my view of what a maintainer is changed. 00:00:32.934 --> 00:00:35.101 I'd like to share some ideas with you 00:00:35.101 --> 00:00:37.234 as I think they could be useful 00:00:37.234 --> 00:00:39.201 to help Emacs maintainers in general. 00:00:39.201 --> 00:00:41.968 And hopefully, these ideas also apply 00:00:41.968 --> 00:00:43.601 to other free software projects, 00:00:43.601 --> 00:00:45.901 at least those where contributors 00:00:45.901 --> 00:00:47.568 are all volunteers. 00:00:47.568 --> 00:00:51.368 First of all, what is a free software maintainer? 00:00:51.368 --> 00:00:54.601 - Obviously this is some rich dude 00:00:54.601 --> 00:00:56.268 with a lot of free time 00:00:56.268 --> 00:00:58.968 - Acting both as a supersmart hacker 00:00:58.968 --> 00:01:02.401 and a super-patient community manager 00:01:02.401 --> 00:01:05.101 - Someone who acts as the central hotline 00:01:05.101 --> 00:01:06.901 for users and contributors 00:01:06.901 --> 00:01:09.568 - Who knows how to write many emails, 00:01:09.568 --> 00:01:11.468 probably at the same time 00:01:11.468 --> 00:01:14.101 - Who does not hesitate 00:01:14.101 --> 00:01:16.934 to publicly scold annoying users 00:01:16.934 --> 00:01:19.801 - and someone narcissistic enough 00:01:19.801 --> 00:01:22.668 to seek credits for community efforts 00:01:22.668 --> 00:01:26.034 - But really looking for a job 00:01:26.034 --> 00:01:27.768 in some big IT company 00:01:27.768 --> 00:01:32.234 Right? Well... no. That was a joke. 00:01:32.234 --> 00:01:34.601 But maybe you did smile 00:01:34.601 --> 00:01:36.634 and that's probably 00:01:36.634 --> 00:01:39.401 because there is some truth to it. 00:01:39.401 --> 00:01:43.834 Why? Because our culture encourages 00:01:43.834 --> 00:01:45.634 free software users and casual contributors 00:01:45.634 --> 00:01:47.868 to think about maintainers this way. 00:01:47.868 --> 00:01:51.568 Don't we continue to use the expression 00:01:51.568 --> 00:01:54.001 "Benevolent Dictator For Life"? 00:01:54.001 --> 00:01:56.434 This is what I'd call 00:01:56.434 --> 00:01:58.068 the "Spiderman syndrome": 00:01:58.068 --> 00:02:01.268 maintenance is perceived in terms of 00:02:01.268 --> 00:02:04.168 great power and great responsibility. 00:02:04.168 --> 00:02:07.268 But I believe our culture of superheroes 00:02:07.268 --> 00:02:09.101 is not helpful here: 00:02:09.101 --> 00:02:11.301 it does not reflect the truth, 00:02:11.301 --> 00:02:14.134 it does not set the right expectations, 00:02:14.134 --> 00:02:16.334 and it prevents contributors 00:02:16.334 --> 00:02:17.601 to properly understand 00:02:17.601 --> 00:02:19.601 how to help maintainers. 00:02:19.601 --> 00:02:21.334 So let's start again. 00:02:21.334 --> 00:02:24.968 Instead of asking what a maintainer is, 00:02:24.968 --> 00:02:27.068 let me take the list of 00:02:27.068 --> 00:02:30.001 what I do as the Org maintainer. 00:02:30.001 --> 00:02:31.034 Here is my TODO-list: 00:02:31.034 --> 00:02:33.934 - First of all, I take care of 00:02:33.934 --> 00:02:35.201 the orgmode.org website. 00:02:35.201 --> 00:02:37.401 - I also take care of the 00:02:37.401 --> 00:02:41.434 org-contrib NonGNU ELPA package. 00:02:41.434 --> 00:02:44.034 - I do gardening on the 00:02:44.034 --> 00:02:46.168 community-driven documentation, Worg. 00:02:46.168 --> 00:02:48.401 - I do add contributors to Worg. 00:02:48.401 --> 00:02:51.134 - I read emails on emacs-orgmode@, 00:02:51.134 --> 00:02:54.134 emacs-devel@ and bug-gnu-emacs@. 00:02:54.134 --> 00:02:56.868 - I contribute to email moderation 00:02:56.868 --> 00:02:59.801 of the emacs-orgmode@ list 00:02:59.801 --> 00:03:02.468 with a bunch of other contributors. 00:03:02.468 --> 00:03:05.134 - I reply to private emails 00:03:05.134 --> 00:03:06.834 asking me for help about org-mode. 00:03:06.834 --> 00:03:10.168 - I coordinate with GNU Emacs maintainers 00:03:10.168 --> 00:03:12.934 and thanks to them for Emacs/Org integration. 00:03:12.934 --> 00:03:16.034 - I contribute with public emails 00:03:16.034 --> 00:03:17.801 on the Org mailing list. 00:03:17.801 --> 00:03:20.501 - I release new versions of Org-mode. 00:03:20.501 --> 00:03:22.634 - and sometimes, sometimes, 00:03:22.634 --> 00:03:24.601 I contribute with code. 00:03:24.601 --> 00:03:27.168 Do you see a pattern here? 00:03:27.168 --> 00:03:30.468 Yes. I bet the last three tasks 00:03:30.468 --> 00:03:31.801 is what most people have in mind 00:03:31.801 --> 00:03:34.201 when they think of a maintainer: 00:03:34.201 --> 00:03:35.534 it's all about hacking 00:03:35.534 --> 00:03:37.734 and being an efficient hotline. 00:03:37.734 --> 00:03:39.734 But in fact, these tasks 00:03:39.734 --> 00:03:41.601 are only a superficial part 00:03:41.601 --> 00:03:43.201 of what I do as a maintainer. 00:03:43.201 --> 00:03:47.001 Some would consider that these core tasks 00:03:47.001 --> 00:03:48.501 are the /interesting/ ones, 00:03:48.501 --> 00:03:51.634 while the others are the /boring/ ones. 00:03:51.634 --> 00:03:53.901 I don't see it that way: 00:03:53.901 --> 00:03:56.534 some tasks are about the product, 00:03:56.534 --> 00:03:58.801 others are about the project. 00:03:58.801 --> 00:04:00.834 Without a good product, 00:04:00.834 --> 00:04:02.168 there is little chance 00:04:02.168 --> 00:04:03.401 you will have a good project, 00:04:03.401 --> 00:04:07.534 but maintaining a project requires thinking 00:04:07.534 --> 00:04:09.301 in terms of infrastructure, 00:04:09.301 --> 00:04:11.068 not in terms of bugs, 00:04:11.068 --> 00:04:13.334 thinking in terms of resources 00:04:13.334 --> 00:04:16.701 that enable both users and contributors, 00:04:16.701 --> 00:04:18.401 not in terms of commits. 00:04:18.401 --> 00:04:21.001 So let me try to define again 00:04:21.001 --> 00:04:23.334 what a free software maintainer is 00:04:23.334 --> 00:04:24.434 or should be. 00:04:24.434 --> 00:04:26.234 A free software maintainer 00:04:26.234 --> 00:04:28.368 is someone who cares about 00:04:28.368 --> 00:04:30.968 enabling users and contributors 00:04:30.968 --> 00:04:32.768 so that they collectively 00:04:32.768 --> 00:04:34.201 take care of the project. 00:04:34.201 --> 00:04:36.734 See another pattern here? 00:04:36.734 --> 00:04:40.301 That's all about the /project/, 00:04:40.301 --> 00:04:41.501 versus the product. 00:04:41.501 --> 00:04:43.634 It's about /taking care of it/, 00:04:43.634 --> 00:04:46.934 versus being a direct hotline for users, 00:04:46.934 --> 00:04:49.901 caring about the project infrastructure 00:04:49.901 --> 00:04:52.134 and about empowering users 00:04:52.134 --> 00:04:54.234 with tools and incentives 00:04:54.234 --> 00:04:55.268 so that they care too. 00:04:55.268 --> 00:04:58.434 How can you help such a maintainer? 00:04:58.434 --> 00:05:00.901 By focusing on the project 00:05:00.901 --> 00:05:03.901 and becoming an enabler yourself. 00:05:03.901 --> 00:05:06.934 Let's pause and summarize: 00:05:06.934 --> 00:05:08.801 our culture wants heroes 00:05:08.801 --> 00:05:12.434 and this leads us to expect maintainers 00:05:12.434 --> 00:05:15.234 to be superhackers and superactive hotlines. 00:05:15.234 --> 00:05:19.568 This is the HOT mindset of maintenance, 00:05:19.568 --> 00:05:23.368 where the maintainers are Headmasters Of Tweaks 00:05:23.368 --> 00:05:26.901 and soon becomes the Headmaster Of Troubles. 00:05:26.901 --> 00:05:29.501 To resist this HOT mindset, 00:05:29.501 --> 00:05:33.201 I suggest to redefine maintenance as ACDC: 00:05:33.201 --> 00:05:36.534 *Asynchronous Collective Distributed Care*: 00:05:36.534 --> 00:05:38.968 - /Asynchronous/ because time management 00:05:38.968 --> 00:05:40.168 is a private matter 00:05:40.168 --> 00:05:41.968 and we are all volunteers. 00:05:41.968 --> 00:05:44.168 - /Collective/ because, well, 00:05:44.168 --> 00:05:45.634 no man is an island. 00:05:45.634 --> 00:05:49.201 - /Distributed/: because the more power 00:05:49.201 --> 00:05:51.601 to the "edges", the more resilient 00:05:51.601 --> 00:05:53.534 the system and the project is. 00:05:53.534 --> 00:05:56.368 - /Care/ because this is all about care: 00:05:56.368 --> 00:05:58.501 with each other as users 00:05:58.501 --> 00:06:00.134 or as contributors, 00:06:00.134 --> 00:06:02.101 with the project's infrastructure 00:06:02.101 --> 00:06:05.301 (servers, websites, bug trackers, etc.) 00:06:05.301 --> 00:06:08.701 and care about having a useful product. 00:06:08.701 --> 00:06:13.901 /Enabling/ users and contributors means 00:06:13.901 --> 00:06:16.468 encouraging them to take ownership, 00:06:16.468 --> 00:06:19.801 which is more than just delegating tasks. 00:06:19.801 --> 00:06:22.068 Let your users and contributors know 00:06:22.068 --> 00:06:23.901 that they need to tap into 00:06:23.901 --> 00:06:26.434 the collective attention pool with care: 00:06:26.434 --> 00:06:28.801 the more autonomous they are, the better. 00:06:28.801 --> 00:06:33.801 So, with this ACDC definition in mind, 00:06:33.801 --> 00:06:37.534 how can /you/ help Emacs maintainers? 00:06:37.534 --> 00:06:41.268 - First of all, by *becoming a maintainer 00:06:41.268 --> 00:06:44.334 for your own project*, however small. 00:06:44.334 --> 00:06:47.001 Think in terms of project (vs product). 00:06:47.001 --> 00:06:49.034 Empower users and contributors. 00:06:49.034 --> 00:06:50.668 This will help you understand 00:06:50.668 --> 00:06:54.068 how to help other maintainers. 00:06:54.068 --> 00:06:56.501 ("More power to the edges!") 00:06:56.501 --> 00:07:00.001 - *Volunteer as a contributor steward 00:07:00.001 --> 00:07:02.201 for another project*: you don't need to 00:07:02.201 --> 00:07:03.868 be a supersmart hacker 00:07:03.868 --> 00:07:05.634 to help others to contribute. 00:07:05.634 --> 00:07:07.701 (For Org-mode, we are lucky to have 00:07:07.701 --> 00:07:10.901 two great contributor stewards.) 00:07:10.901 --> 00:07:12.868 - *Learn how to teach*, 00:07:12.868 --> 00:07:16.468 because pedagogical skills are invaluable. 00:07:16.468 --> 00:07:18.301 (Taking the time to explain 00:07:18.301 --> 00:07:20.868 how to write a bug report or a patch 00:07:20.868 --> 00:07:23.834 is invaluable and this is a core part 00:07:23.834 --> 00:07:25.401 of the Org culture.) 00:07:25.401 --> 00:07:27.801 - *Test and enhance the project's 00:07:27.801 --> 00:07:30.001 contribution process*. (For Org-mode, 00:07:30.001 --> 00:07:33.268 you would read and suggest contributions to 00:07:33.268 --> 00:07:35.634 the org-contribute pages on Worg.) 00:07:35.634 --> 00:07:38.601 - *Take care of the project's calls for help*. 00:07:38.601 --> 00:07:40.968 (For Org-mode, this would be this list 07:40.560 --> 00:07:43.599 that we have on updates.orgmode.org 07:43.599 --> 00:07:47.234 For Emacs, this would be =etc/TODO= file.) 00:07:47.234 --> 00:07:50.834 If the calls for help are not explicit enough, 00:07:50.834 --> 00:07:52.834 try to contribute some. 00:07:52.834 --> 00:07:56.701 - *Encourage users from outside the project 00:07:56.701 --> 00:07:58.434 to contribute to the core forum*. 00:07:58.434 --> 00:08:01.434 (For Org-mode, there are many hacks and fixes 00:08:01.434 --> 00:08:03.901 being shared on reddit and stackoverflow: 00:08:03.901 --> 00:08:05.401 and that's fine, but we we should not 00:08:05.401 --> 00:08:07.401 wait for months before having this 00:08:07.401 --> 00:08:08.801 shared on the list.) 00:08:08.801 --> 00:08:11.434 - *Let the core forum know about 00:08:11.434 --> 00:08:13.701 what happens in this outside world* 00:08:13.701 --> 00:08:16.601 by sharing important information yourself. 00:08:16.601 --> 00:08:19.868 - *Propose your help for non-code tasks*: 00:08:19.868 --> 00:08:21.368 maintain a website, 00:08:21.368 --> 00:08:23.734 enhance the (community-driven) documentation, 00:08:23.734 --> 00:08:26.101 help with bug triage, etc. 00:08:26.101 --> 00:08:29.568 - *If you expect someone else to fix your bug, 00:08:29.568 --> 00:08:33.234 try fixing someone else's bug too*: 00:08:33.234 --> 00:08:36.234 that's how you'll learn Emacs Lisp 00:08:36.234 --> 00:08:37.668 and that's how you'll concretely 00:08:37.668 --> 00:08:40.501 train your empathy, your sense of taking care. 00:08:40.501 --> 00:08:42.068 That is so critical. 00:08:42.068 --> 00:08:44.101 - *Don't expect the maintainer 00:08:44.101 --> 00:08:45.168 to be a hotline*, 00:08:45.168 --> 00:08:46.801 especially a private one. 00:08:46.801 --> 00:08:49.234 Address yourself to the community. 00:08:49.234 --> 00:08:51.968 - and last but not least, 00:08:51.968 --> 00:08:53.120 *complete this list*. 00:08:53.120 --> 00:08:54.959 I'm trying to open a conversation here, 00:08:54.959 --> 00:08:57.168 so don't be shy. 00:08:57.168 --> 00:09:01.760 That's it. Is it hard? Yes, this is hard, 00:09:01.760 --> 00:09:04.640 and that's because helping maintainers 00:09:04.640 --> 00:09:07.760 by becoming such a enabler 00:09:07.760 --> 00:09:09.839 in this ACDC mindset 00:09:09.839 --> 00:09:12.080 is not immediately rewarding, 00:09:12.080 --> 00:09:15.168 whereas fixing a bug clearly, clearly is. 00:09:15.168 --> 00:09:17.701 But if you start thinking of the project 00:09:17.701 --> 00:09:19.301 as something that enables you 00:09:19.301 --> 00:09:21.440 to do amazing things, and I believe 00:09:21.440 --> 00:09:23.434 Org is this kind of project, 00:09:23.434 --> 00:09:25.034 and if you start thinking 00:09:25.034 --> 00:09:26.634 of the maintenance as something 00:09:26.634 --> 00:09:28.934 that enables more contributions, 00:09:28.934 --> 00:09:31.734 you will see how important and rewarding 00:09:31.734 --> 00:09:35.668 it is to become such an enabler. 00:09:35.668 --> 00:09:39.701 So, definitely grateful to all enablers 00:09:39.701 --> 00:09:41.401 that we have in Org's community! 00:09:41.401 --> 00:09:43.734 And to everyone who maintains 00:09:43.734 --> 00:09:45.701 a culture of teaching and learning 00:09:45.701 --> 00:09:49.068 through polite and respectful interactions 00:09:49.068 --> 00:09:50.801 on the mailing list and elsewhere: 00:09:50.801 --> 00:09:55.001 we always need more "power to the edges". 00:09:55.001 --> 00:09:57.168 And I'm also very grateful 00:09:57.168 --> 00:09:59.034 to the EmacsConf 2021 organizers, 00:09:59.034 --> 00:10:02.568 because that's really taking care 00:10:02.568 --> 00:10:03.568 of the community! Thanks very much. 00:10:03.568 --> 00:10:04.000 [captions by sachac]