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
|
(post
:title "#ilovefs: Why GNU Emacs?"
:date (string->date* "2016-02-14 22:00")
:tags '("gnu"
"planet-fsfe-en"
"free software"
"ilovefs"
"emacs")
(h2 [Why write about Emacs?])
(p [I don’t usually try to explain tools that I use to other people,
unless they made an explicit request as to how they could improve
their workflow. However, since ,(ref
"https://fsfe.org/campaigns/ilovefs/2016/" "today is “I love Free
Software” Day") I think I should seize this opportunity and
explain what draws me to ,(ref "http://gnu.org/software/emacs"
"GNU Emacs") and how I use it.])
(p [Sometimes people who use computers ask me why I would use
something as “bloated” as Emacs for text editing. Usually they
remark that Emacs is a hold-over from a by-gone era, much too
large compared to editors like “vi”, and that they are quite
content using a variant of vi or some Notepad-like editor. They
may have heard that you can play Tetris inside of Emacs and you
can tell that they have difficulties hiding the fact that they
are mildly disgusted by this abomination, a tool that seems to
ignorantly contradict the Unix philosophy of doing just one thing
and doing it well.])
(h2 [Embracing the operating system])
(p [I cannot help but notice that there’s a misunderstanding; at the
very least there’s an invalid assumption, namely that we agree on
terminology. I do not consider Emacs a mere “editor”. To some
this is folk wisdom, a now blunt blade used by the old warriors
in the ,(ref "https://en.wikipedia.org/wiki/Editor_war" "editor
wars") of ancient history:])
(blockquote
[Emacs is a great operating system, lacking only a decent editor.])
(p [I contest the second part (as Emacs has a multitude of decent
editor modes, even for fans of vi), but I do agree with the
hyperbolic first part: yes, an operating system indeed!])
(p [Maybe not quite in the sense of the GNU operating system, but
certainly in the sense that it is a platform to run applications.
In fact, it is a platform very much like a modern web browser
resembles an application platform more than it does a mere HTML
document viewer.])
(p [Just like a browser is used by many as a platform for running
applications operating on some HTML document, Emacs is a platform
for anything that can “reasonably” (this is up for
interpretation) be mapped to buffers of text. Applications in
browsers are written in JavaScript, applications in Emacs are
written in EmacsLisp (also called “elisp”).])
(h2 [The universal text environment])
(p [A text buffer in Emacs could hold the trail of a shell session
(,(code [shell-mode])), an email (,(code [message-mode])), a TODO
list (,(code [org-mode])), a directory listing (,(code [dired])),
a text file on disk, a chat session (,(code [ERC])), a web page
(,(code [eww])), the output produced by an external command, etc.
Just like a modern web browser represents an environment in which
a programming language can be used to manipulate and interact
with HTML documents, Emacs is an environment for text buffers
with a language that can be used to manipulate and interact with
text buffers.])
(p [If you have used your web browser (or have observed someone use
their web browser) to play games, listen to music, watch videos,
read and compose email, edit text (e.g. by contributing to the
Wikipedia), chat with friends (or chat about foes), read
documentation, installed an extension,(---)well, then the notion
of a generic tool as a platform should not be a foreign concept
to you. Emacs can be understood as such a generic tool providing
a text interface (one of which may be a file editor).])
(h2 [Living in Emacs])
(p [Emacs is my main user agent,(---)it acts as an assistant on my
behalf in all matters relating to text,(---), much like the
browser is the main user agent for documents and applications on
the web to many people. This is why I hardly remember when I
last closed Emacs. I do not start Emacs to edit a file; I’m
living in Emacs.])
(p [Not only am I’m writing this blog post in Emacs (obviously!), I’m
also keeping track of multiple conversations on IRC in separate
buffers; I’m ,(ref "http://www.djcbsoftware.nl/code/mu/mu4e.html"
"reading and composing email"); I manage my GNU Guix software
profiles with a dedicated Emacs mode; I deal with Git through a
,(ref "http://magit.vc/" "convenient two-dimensional text-based
user interface") rather than using the one-dimensional, terse
command line interface; when I view man pages I use ,(ref
"https://www.gnu.org/software/emacs/manual/html_mono/woman.html"
"woman"), which greatly enhances man page navigation; of course I
use Emacs as an Info documentation browser as well; my shell
sessions are in Emacs thanks to ,(code [shell-mode]),(---)I’m not
one of those who run Emacs in a shell session inside a terminal
emulator,(---); I view pretty PDF documents in Emacs buffers with
,(ref "https://github.com/politza/pdf-tools" "PDF tools"), and
even my complete personal organisation and calendar needs are
satisfied by an application running in Emacs (see ,(ref
"http://orgmode.org" "Org mode")).])
(h2 [There is no ,(em [one]) Emacs])
(p [What is crucial to understand is that Emacs is not one and the
same thing to any two Emacs users. It is malleable and
accessible thanks to being written in EmacsLisp. When ogres are
like onions, Emacs is probably like a giant cherry: a small solid
core (written in C) and a delicious mantle of sweet EmacsLisp
(analogies are not my strong suit). Since almost every
conceivable feature provided by Emacs is accessible through
EmacsLisp and can be tweaked, rewired, or fully replaced, Emacs
becomes what you want it to be.])
(p [I probably could not use an Emacs instance that has been shaped
by the habits of another hacker, and they probably also wouldn’t
be happy with my configuration. It’s like a tailor-made shirt in
that it fits you exactly (if you take some time to take your
measurements), yet it also fits like the most comfortable sweat
pants as it won’t punish you if you change your sporty habits and
gain weight.])
(h2 [What’s GNU? GNU’s Not Unix!])
(p [This leads me to the last point I wanted to address: the claim
that Emacs is bloated and ignores the Unix philosophy of doing
only one thing and doing it well. I don’t know what “bloated”
really means. Emacs does come with a lot of features but this
doesn’t make it bloated.])
(p [I think this claim is rooted in another misunderstanding. When
you have a terminal emulator open in which you run a shell
session (like bash), and you run a command like ,(code [ls]), you
would not consider the shell to be bloated to allow you to
interact seamlessly with external commands. Likewise you
probably don’t object to builtin commands that cannot easily be
expressed with external executables or that make the shell more
convenient to use.])
(p [Similarly, Emacs is the perfect glue between different text-based
applications. When I run a shell inside of Emacs, what Emacs
really does is spawn an external shell process and redirect input
and output to talk to it transparently. Or when I read email in
mu4e the mail directory and its indexing database are not part of
Emacs. Or when I read PDFs they are actually rendered by a
separate process. Since many of these features are provided by
optional extensions there really isn’t much to the claim that
Emacs is bloated.])
(p [However, it is true that Emacs does not blindly subscribe to the
Unix philosophy. One of its previous logos (my favourite) was an
,(ref "http://www.emacswiki.org/pics/static/KitchenSinkWhite.png"
"overflowing kitchen sink"), acknowledging the fact that Emacs
rather errs on the side of including more features rather than
fewer when it is convenient. The goal of the GNU project never
was to merely provide a free clone of proprietary Unices, but to
give users ,(ref "https://www.gnu.org/philosophy/free-sw.html"
"software freedom"). In the case of Emacs the boundary between
user and programmer is blurred as adapting the environment to
one’s needs is ,(ref
"https://www.gnu.org/software/emacs/emacs-paper.html" "already an
act of programming with a very low barrier to entry"). Emacs
provides ,(em [practical]) software freedom and that’s one of the
main reasons why over the course of many years my perception of
it has slowly shifted from a belittled tool only old-fashioned
people use to the centre-piece of most of my daily computing
activities.])
(p [Yay for GNU Emacs, yay for free software!]))
|