# An Emacs Developer Story: From User to Package Maintainer
Leo Vivier
[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.webm" size="296MB" subtitles="/2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt" duration="24:15"]]
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>
<!-- from the pad --->
# 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
- See <https://github.com/alphapapa/emacs-package-dev-handbook>
- Old but still relevant: <https://www.youtube.com/watch?v=QRBcm6jFJ3Q>
- Things that a new major mode could hook into:
# Notes
- English Major from France and freelance software engineer
- zaeph is my new role-model for speaking the English language as a
second language
- Maintainer of org-roam: <https://github.com/org-roam/org-roam>
- Became interested in using plaintext for organisation after reading:
<http://doc.norang.ca/org-mode.html>
- accompanying video
<https://toobnix.org/videos/watch/1f997b3c-00dc-4f7d-b2ce-74538c194fa7>
- <http://doc.norang.ca/org-mode.html> Organize your life in plain
text
- Supercategory --- yeah I've had that use case :-)
- I really much like this format: insight on personal development
without screensharing but in person
- <https://www.gnu.org/software/emacs/manual/eintr.html> Beginner
guide to elisp
- edebug → awesome `(info "(elisp) Edebug")`
- I really like this pad. +1+1+1+1
- Guaranteed best dressed speaker, even before knowing what all the
others look like ;-)
- 3-piece suit color-coded to emacs and org-mode
- To newcomers: in my case emacs-devel and emacs-sources were amazing
resources for learning; the people were SO generous with their time,
to share comments and ideas to improve code.
<!-- transcript: 2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt -->
# 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)
<!-- /transcript -->