1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
+++
title = """
My "whys" for Emacs
"""
author = ["Michał Sapka"]
date = 2023-12-26T22:12:00+01:00
categories = ["emacs"]
draft = false
weight = 3001
image_dir = "cool-emacs"
image_max_width = 480
primary_menu = "cool-emacs-appendix"
abstract = "My reasons for using Emacs"
aliases = ["/emacs/whys-of-emacs/"]
[menu]
[menu.cool-emacs-appendix]
weight = 3001
identifier = "my-whys-for-emacs"
+++
I have used many editors over the years.
I've started with Notepad, then moved to Notepad++, Sublime Text, IntelliJ, and VS Code.
Heck, I even Nova at some point.
But only two really stayed with me for longer - the first being Vim, the second Emacs.
Choosing Vim[^fn:1] seems like the logical option[^fn:2].
It's an extremely popular editor with a huge community.
But first: I **strongly** believe, that everyone working with computer, owe to themselves to spend some quality time with both, Vim, and Emacs.
Vim is amazing.
Modal editing is second to none when it comes to natural text processing.
They keybindings are close to perfect.
It requires some time to get used to, but let's not overstate that.
You can get semi-fluent in Vim in 2 weeks.
And then there's Emacs.
I've tried it for a year.
I like it, but something felt off[^fn:3].
Then, for a few months I have returned to using Neovim.
But here I am.
Using Emacs once again.
Why is that?
## License {#license}
VSCode is released under non-free license[^fn:4], and therefore the code you can see is not necessary what you run.
In fact we know this, as VSCode spies on users[^fn:5], so it's an instant No for me.
[Codium](https://vscodium.com/) exists as _libre_ version of VSCode, so it's an option.
However, it is not the same program as VSCode as incompatibilities exist, and the presence of plugins is limited[^fn:6].
Any advancement of Codium is to the benefit of VSCode, and I hove problems with this.
IntelliJ is completely closed-source, so it's also a no-go for me.
Emacs[^fn:7] is released on GPL[^fn:8]
Vim is released under custom _libre_ license[^fn:9].
Neovim is released under Apache license[^fn:10]
This means that the software is truly free.
I can see the entirety of codebase, not just the Lite version (like with VSCode).
I can redistribute it, I can copy, and share it without any limitations.
I can fork it, I can change it.
I can do almost whatever the hell I want it - as this was the basis of FSF.
This may be not important to you, but it is for me.
I believe _libre_ software is a necessity.
Some people prefer _proprietary_ programs - some even don't see problems with _software as a service_.
But only _libre_ software allows for betterment of our _craft_.
Only by being able to freely modify and share software are we able to make the _craft_ better for future generations[^fn:11].
I am paying for free software without any second thoughts by donating to some foundations.
Yes, I make my living creating _properties_ software, but I try to give back.
I refuse to _choose_ non-free software.
I am forced to use some, but whenever there is a choice, I will choose _free_.
This leaves Vim and Emacs as two the two _important_ and _libre_ editors.
And with this, I have quickly removed almost all competition.
Now, how did I choose between those two?
## Different visions of computing {#different-visions-of-computing}
Vim and Emacs represent two, vastly different visions of computing.
Vim is a precompiled program with plugin capabilities.
This is the vision of computing that has won.
You get a binary (or, worse, a webpage) which makes your program do its thing.
You can _expand_ it using different plugins and configuration, but the _program_ is an unmovable object[^fn:12]
Emacs is different.
We've got a very small _core_ written in C.
It handles basic functionalities, but by itself is close to useless.
But then we've got Lisp.
Almost all user-facing functionalities are written in Emacs specific dialect Lisp.
And Lisp is the keyword here.
All of the codebase is exposed to the user, ready to be not only read (as with Vim) but also modified during runtime.
You can _change_ Emacs at a whim.
VSCode tries the same, as it's a JavaScript-backed browser dressed as an editor.
Emacs therefore can be though as a Lisp-backed virtual machine dressed as an editor.
But the former was already rejected on the basis of being non-free (and I don't to run more Chromes that it's absolutely necessary), so it leaves me with Emacs.
I am not a Lisp programmer, but I started learning it.
For now I like it more than JavaScript.
## Community {#community}
I am not a people person, but people are what drive me.
And this another aspect which drives me to Emacs.
There are folks who are happy with all-batteries-included distributions, like Doom Emacs.
But there's a huge community of personalization maniacs.
People change every possible aspect of Emacs, because the program allows it.
Lisp is right there, and Emacs seems to be the last standing in the good fight to preserve _Literate Coding_ with _Literate Configuration_ people share.
To name just a few, who are my personal inspiration:
- [Alex Maestas](https://se30.xyz/conf.html)
- [Pavel Korytov](https://sqrtminusone.xyz/configs/readme/)
- [Protesilaos Stavrou](https://protesilaos.com/emacs/dotemacs)
- [Derek Taylor](https://gitlab.com/dwt1/dotfiles/-/blob/master/.config/emacs/config.org?ref_type=heads)
- [Sacha Chua](https://sachachua.com/dotemacs/index.html)
But at the same time the community is _small_ and I have a thing for smaller communities.
There are Vim users everywhere, but it's not that easy to find an Emacsian[^fn:13].
But when you do, there are huge chances you've met someone at least interesting.
All Emacs users who I've ever meet in real life became my mentors to some degree.
Also, what is **very** important to mention: despite popular joke, there is very little hate in the Emacs community.
People into Vim tend to tell mean joke about Emacs users[^fn:14] - and part of this joke is that the feeling is mutual.
It couldn't be further from the truth.
We all have great respect for other _libre_ editors and their users.
In fact, a lot of us move between Emacs and Vim on a daily basis.
Maybe this is partly due to age[^fn:15]?
Emacs users tend to be, well, older.
Some have their configs evolving since the 90s!
They've already got a lot to show, so they don't need to be mean spirited?
I have no idea, but what I know is that they are a lovely bunch!
## Stability {#stability}
Lastly, stability.
I use [BSD](/bsd/) because it doesn't change for the sake of change.
No SystemD will ruin a perfectly good workflow.
Emacs is the same.
It's badge of honor - very rarely were there any bigger breaking changes.
When I used NeoVim, every few weeks something broke due to unfortunate update.
In Emacs on the other hand?
Not even once has something broke not from my own volition.
Emacs comes with multiple competing solutions for the same problem, as people may rely on one of those.
If a new one comes along, the old ones are not replaced.
This increases the confusion of a new user, but it's very much appreciated.
## Summary {#summary}
Emacs is the only empowering, libre and limitless editor I know.
It has an amazing community which values I share, and I want to participate in.
Also, it does not require constant maintenance because someone changed something.
Using Emacs _sparks joy_.
[^fn:1]: I don't distinguish between Vim and Neovim here.
[^fn:2]: amongst specific crowd at least.
But since you are here, it's quite possible that you are one of us.
[^fn:3]: mostly keybindings. I am now armed with Evil mode, the best replication of Vim in any editor.
[^fn:4]: <https://code.visualstudio.com/license>
[^fn:5]: "The software may collect information about you and your use of the software, and send that to Microsoft"[^fn:4]
[^fn:6]: <https://ruky.me/2022/06/11/im-switching-form-vs-code-to-vs-codium/>
[^fn:7]: I refer to "GNU Emacs" as "Emacs".
[^fn:8]: <https://www.gnu.org/philosophy/free-sw.html>
[^fn:9]: <https://github.com/vim/vim/blob/master/LICENSE>
[^fn:10]: <https://github.com/neovim/neovim/blob/master/LICENSE.txt>
[^fn:11]: I will need to write a dedicated article about it at some point, as all that would only mud this one.
[^fn:12]: I know you can modify the source code, but then you are running a fork and not the original program.
[^fn:13]: this also applies my other love, [BSD](/bsd/)
[^fn:14]: sadly, this was one of the biggest reasons I stopped following certain hyperactive Vim evangelist.
Let him become nameless.
[^fn:15]: there is a very funny movie about this <https://www.youtube.com/watch?v=urcL86UpqZc>
|