Back to the schedule
Previous: Emacs News Highlights
Next: Idea to Novel Superstructure: Emacs for Writing

An Emacs Developer Story: From User to Package Maintainer

Leo Vivier

Download video, 24:15, 296MB
Download subtitles

In light of the new development philosophy for Org-mode, I would like to present my developer story from discovering Org-mode in 2014 to becoming a maintainer for a big package in 2020. The goal is to show the logical progression between interest, gaining skills, becoming an expert, authoring, contributing and maintaining, in hope that it would bolster people to do the same.

As someone who majored in a non CS-related degree, I feel that my story has a potential to grasp the attention of many attendees, since I basically started from the bottom of the ladder. Most people should be able to relate to one step on that ladder, which should hopefully encourage them to reach for the next step.

My init files, which show the organic growth of my configuration: https://github.com/zaeph/.emacs.d

Org-roam, the package which I am maintaining https://github.com/org-roam/org-roam

Questions

how did the freedom of Emacs help you on your way?

(was missed and unanswered) no, he said he got into free software development via emacs

What's the most recent Emacs package or tool you've discovered that you've added to your repertoire?

Beacon https://github.com/Malabarba/beacon

Please show off your three-piece suit before you end your talk. (Requires fixing your frozen camera. If this is not possible, please post suit selfies at an easily accessible location.)

Have you read "Dirk Gently's Holistic Detective Agency"? (Recommended!)

What is your advice to start learning elisp language ? Any particular good ressource or any other tip ?

  • (info "An Introduction to Programming in Emacs Lisp") correction: (info "(eintr)")
  • Read code, write code, read documentation, repeat. Eventually you'll go from customizing Emacs to writing your own packages. Emacs makes it easy to learn about the bits you're interested in, you can get far with taking small steps.
  • Mastering Emacs https://www.masteringemacs.org/

Any recommendation for good packaging guides or places to start? I get a bit overwhelmed by some things e.g. the choice of different test frameworks

Notes

Transcript

(Amin: Alrighty, Leo Vivier, take it away.) Leo Vivier: Okay, well, thank you. I'm in. So you've just had a little roundup of the news, and we're going to get started now with some presentations. We're starting with user developer stories. I was extremely interested in this section because I wanted to get a chance, basically, to tell you a little more about who I am and how I got from basically being a user of Emacs to being nowadays a package maintainer, and maybe more in the future. I don't know.

So, just for the organizers, I'm planning to speak for 15 minutes, and I'll have five more minutes of questions at the end. As I told you before, if you want to have questions, you know you can use the pad, and I'll be reading the questions from there. Okay.

So hi there, as Amin introduced me before, my name is Leo Vivier. I'm a freelance software engineer in France, and I have been using Emacs now for i believe close to eight years. I can't believe it's been so long. But yes, it's been a journey because, in a way, nothing made me go for Emacs. You know I'm an-- sorry, I was about to say Emacs major, but no, I'm an English major. I went to university to study English literature and linguistics, and I just got started in Emacs because I was looking for ways to take better notes. I was looking for ways to [Applause] structure the way I was learning, structure the way I was taking notes. I stumbled one day upon this weird piece of software which was called Emacs, and I've been trapped forever since, basically, because eight years ago, when I discovered Emacs I just couldn't let go. There was just something very interesting about the way you configured your setup, and I just wanted to dive deeper and deeper.

So the title is of this talk exactly is how I went from user to package maintainer, and the package now that I'm maintaining is called org-roam. I'm not the only one doing this. I'm helped with many lovely people working on org-roam. I got started as a maintainer only this year, so that means that for the eight years I've been an Emacs user, seven of those years were spent merely being a user trying to be a sponge for knowledge, trying to learn as much as I could. I believe it would be interesting for me to share my story because I believe that I'm far from being the only user who can make the jump to being a maintainer.

A lot of you have a lot of knowledge when it comes to Emacs. Some of you are at different steps in your journey. Some of you, for instance, are just starting to copy stuff out of StackExchange into your Emacs configuration. let's say you want to do something very particular and you haven't found a way to do so. You go on StackExchange. You find something that's interesting. You add it to your Emacs configuration. You barely understand anything that's going on. You know that it's supposed to be Emacs Lisp. "I hardly know Emacs and I know even less what is Lisp supposed to be." But you paste it in and it does what you want it to do, and you say "Great, I'll move on to my work now." So that's how I got started. I had a very spartan setup for Emacs, which a lot of you must know... The first time you launch Emacs, you have this feeling that you're jumping 20 years back in time, as far as the user interface is concerned. But as you get to spend more time with Emacs... Some would call it Stockholm syndrome insofar as you can't see how spartan the entire thing is, but it actually is a lovely prison so to speak.

That's how I got started eight years ago. I just wanted to find a way to do my research properly. I wanted to have a tool that I could use to write my notes in plain text, because I was already fairly averse to Microsoft solutions when it came to taking notes. So yeah, I got started in Emacs. I read a little bit about what plain text was about. Just to be clear, at the time, yes, I was very good with computers, but I was not a computer science student. I had barely any experience with programming and coding, and I was even less of a hacker back then. It just goes to show you that at the beginning, I had close to no knowledge, whether it be about the free software world, whether it be about...

Sacha, do you want to say something? (Sacha: just confirming, you're not sharing anything on the screen at the moment, right?) No, I'm not sharing anything, I'm just presenting.

So when I started, I had no experience whatsoever. I was just a literature major trying to get better at taking notes. I stumbled upon LaTeX. As many people who stumble upon LaTeX know, you don't just stumble upon LaTeX, you embroil yourself in the turmoil of suffering, of late nights tweaking, so that your document is exactly in the perfect shape you want it to be.

Soon after, when I got started with Emacs and LaTeX, I discovered something that truly changed my life, and it was Org Mode. As you'll get a lot of presentations this afternoon about Org Mode, I won't be spending too much time on it. But Org Mode, for me, was a revelation. It's... There was something that, upon reading articles on how to use Org Mode, especially one of the key article that I'd read which really made a huge impact on me was the "Organize Your Life in Plain Text" one which i'm sure many of you must have stumbled upon in your Emacs journey... For me, when I stumbled upon this document, I was starting to get interested in Getting Things Done and all the nitty-gritty stuff about organization and self-organization. It just felt like everything was under my fingertips to make the perfect workflow. There was something incredibly satisfying about having a system that gave you so many options to configure your experience exactly how you wanted. You had this feeling that the people behind Org Mode had thought of everything, whichever small adjustment that you needed in workflow whether it be more states for your TODOs, whether it be, oh, I want my weeks to start on Monday and not on Saturday, oh, it's half past one and I need to... in the morning, I mean, and I need to make sure that the item that i'm marking as done is done for the day before and not for the current day. You see what I'm talking about. So many details that were already present in Org Mode. At first you're really impressed, because you think, wow, they thought of everything, but then you realize that it's just a matter of experience, just a matter of people contributing code, because the development of Org Mode, Emacs, and everything is just open to the public.

You know, it's like everything is being done with the garage door opened. You can just go on Org Mode on Savannah and see everything that is being developed. For me, the shift that occurred in my mind was when I was reading all the options, I was looking at all the variables that i could modify for Org Mode, and there came a time, maybe two to three years ago, where I thought, oh wow, maybe for the first time in a while, there is no option for me to do what I want to be doing with Org Mode. I believe at the time the the key issue that triggered this reflex for me was I wanted to do something with the agenda. I wanted to have a super category so, you know, in the... for those of you who know, in your agenda, you have the ability to have many files, and you have the ability to have categories. I wanted somehow to group my TODOs in smaller groups, or bigger groups, I should say, so that, for instance, I could have one group for my professional life, I could have a group for one work, the second work... I could have something for university and all this. I thought, yeah, I think I'd like this. After having spent so long working with Emacs and working with Org Mode, I had some ideas about what was within the realm of possibility and what wasn't. Here I thought to myself, this is definitely something that I can do. And so thus started my journey into the Org Mode libraries.

I won't go too much into details right now, because right now, the main objective that I have is just to show you how simple it is to become a maintainer, how to become more involved with the development. The libraries in Org Mode, they're written in Elisp, which is a very... It might seem like an obscure language, and it certainly is, but as soon as you get the logic of the language--and what i'm telling you is coming from someone who's never studied programming-- it made sense. Everything is so verbose when you get into the code. When you learn the rudiments of Elisp, you start getting to the code, and you start thinking, wow, okay that makes sense, and you start developing a logic for all this. So, equipped as I was with this new knowledge, I went on my project, i went into the Org agenda code, and I thought, okay, is there anything that I can use to do my bidding? Fast forward maybe two to three weeks of intense turmoil and many nights which were spent single-mindedly working on this project, two weeks after, I had something that was working, and I was pretty happy about it. That was a key landmark for me, because when that happened, it just felt like, okay, I can contribute something to Org Mode, and I can do something that would benefit as many people as possible. And to me, that was the click. That's when it occurred. That's when I went on my first project and I did something that felt useful to the community.

And nowadays, as I told you, I maintain packages, but really, nothing has changed. The only thing, maybe, that has changed that I've turned my mind onto other problems. Maybe I've got three more minutes and I'd like to finish by maybe something a little different.

I've told you my Emacs story and I hope I've stressed how little effort it took me to move from steps to steps on the ladder. The ladder implies a sense of hierarchy, but it really isn't. Whatever your step on the journey of Emacs is... Some of you might be at the step where you're really worried about learning Elisp because it feels like such a monumental task to be undertaking and you have no experience whatsoever, but the thing is, maybe you could try climbing this first step on the ladder. Maybe you could try, if you have any project, if you've been using Org Mode, maybe one day you thought, "oh, yes, I wish I could do this but I can't," or maybe do try to do this, maybe do try to change something in a major mode that you're using and which you feel might be better. I think Emacs, Org Mode, and all free software in general has this tendency to give you this idea that I can be a hacker in the sense of the term that you're modifying things to do your bidding. For me, I believe this to be a very healthy attitude towards software. As Amin said in the very beginning, we are doing this entire presentation-- sorry, this entire conference with free software. Just see all the things we've been able to do in free software. For me, Emacs was my gateway, so to speak, into how to contribute to free software, about the philosophy that surrounds it.

What I would like to do... I'll finish on this note and then I'll be taking your questions. Just try. You've read on Reddit that you need to go through the Elisp manual in Emacs. You might be scared, but just do it. Just give it a shot. Just give it maybe one afternoon. Try to read it. Try to see if this appeals to your mind. If you've been interested enough in my presentation right now, and if you're interested enough in any of the talks you're going to have during the entire conference, do give it a shot. I'm pretty sure you will like the journey on which you will be embarking upon. So

I believe I'm finishing one minute early, but I see quite a bit of questions already. I'm not sure. Sacha, should I just be reading the questions, or do you want to be feeding me the questions? (Amin: It's really up to you. it's completely up to you. If you've got the questions open and can take them or read them, by all means please.) Okay, well, I'm going to read them because I've got them on the side. I'm going to start with the one at the bottom.

"Do you feel that being a white male contributed to your experience?" Yeah. I mean, I do believe... There's an idea of privilege. I mean, I'm French. I live in... I'm lucky enough to be here at university, okay, and I'm fairly aware of the discrepancies that happen, even in France, according to this... So, yes, I believe my journey was heavily influenced by this. If you would like to specify the question, please do, but I don't have really all that much to ask on this.

"What is your advice to start learning Elisp language? Any particularly good resource or any other tips?" I finished um my presentation by telling you about the Elisp introduction which is built into Emacs. What I might do... I'm going to share my screen just to show you how this works. I will be sharing this window. I believe it's frozen on my end, so I can't see anything. i'm not sure if you can see me or if my camera is moving. Okay, so my Firefox is frozen. So i'll answer the question, but I won't be able to show you what I wanted to show you. There's a built-in guide inside Emacs to learn Elisp. Maybe the best chance that you have is just to go open these info pages. I'm sure someone will be kind enough to mention this to you in the #emacsconf channel on IRC but it's probably the best way to get started with Elisp. You know, we tend to get obsessed, with software and with programming, about what's the best way to get started. You see so many people who are heavily interested in getting started with programming but they never managed to get started because there's so much choice. My advice would be to just get started. Don't get so worried about the first step. Well, if I may still recommend the first step, even after saying this, do try to start with the built-in guides. I believe they're pretty pretty good.

There was another question. It's the last question that I can read and after that, you will have to read the questions for me because everything is frozen on my end. I hope I'm not frozen in a very bad position so please excuse me if my mouth is open or anything. (Amin: no, we just completely lost the video feed, so no worries.) Oh, splendid, so I won't have to make a fool out of myself.

So the last question I wanted to answer was "Have you read Dirk Gently's Holistic Detective Agency?" No, I haven't. I hope it's not a jab at the way i'm dressing for the conference, but yeah, I haven't read it. Was there any other question?

(Amin: I see one other question. "Any recommendation for good packaging guides or places to start? i get a bit overwhelmed by some things. For example, the choice of different test frameworks.") Right. Okay. So that's a very good question. I believe alphapapa is in the chat right now. As myself a new lisp developer for org-roam, i'd really recommend you to look into his package developers' guide because you have a list of all the softwares that are extremely useful to be using when you're getting started. If you're looking into a first step for how to develop elast package, i'd really advise you to look into edebug. It's one word, edebug, and you have a section in the manual for this, because for me, it was the key step to getting to develop good packages. It was understanding basically what the code did and having us something like a REPL (read-evaluate-print-loop) that allows you to step through the code and see exactly which states the variables are at which at this point in the program. That's really my biggest advice to you. Any other question? Thanks. Yeah, I see one or two more. So there's one.

They ask, "How did the freedom of Emacs help you on your way?" So the freedom of Emacs... I mentioned that Emacs, for me, was my gateway into free software and the freedom of Emacs was that you could maybe... First and foremost, compared to other software, was that you had behind Emacs, Elisp, which allows you to read the code, read whatever is going on in the background. Surely, if you go deep enough, you'll end up on C functions that you might not be able to read if you do not have the experience. But for Org Mode, which was my gateway into Emacs, most of it is written in Elisp, and all the commands have a very verbose name, like something simple as org go to next subtree or org go to a parent subtree. You know, things like this. It's so elegant. It's verbose. That's a sense of freedom insofar as you can go into the code and see, oh, okay, that's how it's implemented. I believe in a way that's the freedom and the liberty that is given to you to look into the code is something that invites you to do the same with your life. As someone who does a little bit of philosophy on the side, I believe it's a very healthy message to be gathering from a piece of software.

(Amin: Awesome, thank you. Let's see... So we have... I think I saw another question pop up.) I'm not sure how we're doing as far as time is concerned... I believe we have like one or two minutes more. (Amin: Yeah, actually, we're quite a bit ahead of the schedule, so if we take a little bit longer, we're fine. If you do have more questions, please do.) I'm just sorry that my video is not working anymore. (Amin: No problem. Someone was actually saying... What's the most recent... Actually, yeah well before that.

"Please show off your three-piece suit before you end your talk, which requires fixing your frozen camera. if this is not possible, please post suit selfies in an easily accessible location." Okay, I'll make sure to do this. But yes, I wanted to hype things up for the conference, so yes, I did get the three-piece suit out. I'm very glad you like it. By the way when you get a chance to see me live again, do appreciate that my tie has both the colors of Emacs purple and also Org Mode green. It took me a while to find this one, so I hope you will appreciate this.

(Amin: Awesome. Let's see. We have one other question. "What's the most recent Emacs package or tool that you've discovered that you've added to your repertoire?") Very interesting question. The thing is, when you've spent as long as I have on Emacs--and I know that I've only spent eight years and some of you might have spent maybe 10, 20, maybe even more years on Emacs-- but for me, I believe the the coolest neat trick that I found in Emacs was a mode which is called beacon-mode. It's something that allows you to show when you're jumping between buffers or when you're dropping between windows, it shows exactly where your point is in that buffer by making a slight ray of light which looks like a beacon, hence the name. It really helps you navigate buffers because it always shows in a very visual way where your point is. I'll get a chance to show this to you later today when i'll be presenting my other talks.

(Amin: AWesome. We have one question from Jonas, the maintainer from Magit. He asks, "When you touched your webcam, that blew a fuse at my place. How did you do that?") Well, I'm very sorry, Jonas, that it happened to you, but i'll make sure not to touch my webcam again. (Amin: Do we have any other questions?) I have to trust you on this one. I'm really sorry. Everything is frozen on my end. (Amin: No problem.)

Yeah I'm more talking to the audience, I guess. I hope my lack of slides didn't bother you. I really wanted to have this verbose time with people, to be able to... it's a message that i've been trying to share with as many people as possible. In france we do have an Emacs workshop that we have on a monthly basis. I've been learning a lot with those people and I felt like doing the same with Emacs conference would be good. That's why i'm really happy, and I'm really lucky to have had the chance to do this today. I hope some of you I've convinced you of climbing up a step on a ladder or making a step in a journey. (Amin: Absolutely. Thank you so much, Leo. I happen to completely agree with your not necessarily using a slide when it's not really needed and to help give some face-to-face time with the audience. Unfortunately your webcam cut out, but I mean before that.) Yes, I'll make sure to fix the problems later on, so don't worry about it. (Amin: Awesome. Alrighty. I guess we're wrapping up for your talk and getting ready for the next talk.) Sure. Well, thank you so much. I'll see you all later, I suppose! (Amin: Sounds good. Thank you again, Leo. Bye-bye)

Saturday, Nov 28 2020, ~ 9:40 AM - 10:00 AM EST
Saturday, Nov 28 2020, ~ 6:40 AM - 7:00 AM PST
Saturday, Nov 28 2020, ~ 2:40 PM - 3:00 PM UTC
Saturday, Nov 28 2020, ~ 3:40 PM - 4:00 PM CET
Saturday, Nov 28 2020, ~10:40 PM - 11:00 PM +08

Back to the schedule
Previous: Emacs News Highlights
Next: Idea to Novel Superstructure: Emacs for Writing