summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--posts/2016-02-14-ilovefs-emacs.skr176
1 files changed, 176 insertions, 0 deletions
diff --git a/posts/2016-02-14-ilovefs-emacs.skr b/posts/2016-02-14-ilovefs-emacs.skr
new file mode 100644
index 0000000..c6c0da1
--- /dev/null
+++ b/posts/2016-02-14-ilovefs-emacs.skr
@@ -0,0 +1,176 @@
+(post
+ :title "#ilovefs: Why GNU Emacs?"
+ :date (string->date* "2016-02-14 00: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 wel; 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!]))