posts: Add #ilovefs post about GNU Emacs.
authorrekado <rekado@elephly.net>
Sun, 14 Feb 2016 20:51:41 +0000 (21:51 +0100)
committerrekado <rekado@elephly.net>
Sun, 14 Feb 2016 20:52:02 +0000 (21:52 +0100)
posts/2016-02-14-ilovefs-emacs.skr [new file with mode: 0644]

diff --git a/posts/2016-02-14-ilovefs-emacs.skr b/posts/2016-02-14-ilovefs-emacs.skr
new file mode 100644 (file)
index 0000000..c6c0da1
--- /dev/null
@@ -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!]))