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