]> njoseph.me Git - blog.git/blame - content/posts/emacsconf-2019.md
emacsconf 2019: Add LSP support talk
[blog.git] / content / posts / emacsconf-2019.md
CommitLineData
ed914293
JN
1---
2title: "EmacsConf 2019"
3date: 2019-11-03T15:40:09+05:30
921d2ea1 4lastmod: 2019-11-04T15:40:09+05:30
ed914293
JN
5tags : [ "free-software", "emacs" ]
6categories : [ "conferences" ]
7layout: post
8type: "post"
9highlight: false
10---
11
12![EmacsConf logo](https://emacsconf.org/s/emacsconf-logo1-256.png)
13
14I attended the [EmacsConf 2019](https://emacsconf.org/2019/ "EmacsConf 2019") on
152nd November. It was offered as a video stream that anyone can watch over the
16internet, with audience conversations over IRC. The conference was powered
17entirely by free software tools. RMS and some FSF members were also among the
18audience.
19
b63a9897
JN
20More details about any of the talks mentioned here can be found in the
21[notes](https://pads.ccc.de/fPYMhovcNN "notes").
22
23## Updates
24
25There was an Emacs community update and an Emacs development update. Both were
26very interesting. The community is sure taking notice of Spacemacs. Maybe Doom
27Emacs is not that popular yet. I am excited about the new built-in features of
28Emacs 27 - tab bar and ligatures. I was surprised that Emacs being one of the
29most popular free software projects still suffers from a lack of core
30developers. Maybe there are a lot of people willing to write Elisp but not many
31interested in contributing to the C core.
32
33## The Hackable Text Editor
ed914293
JN
34
35The core of emacs is written in C with Elisp offered as an extension language.
b63a9897 36All of the Elisp source code that is running on your Emacs is available easily
ed914293
JN
37through Emacs itself. Elisp is designed to be an easy-to-use minimalistic
38language that non-programmers can use to create small improvements in their
39workflow.
40
b63a9897
JN
41## Software Freedom
42
43One of the speakers called Emacs the mother of all free software. When RMS
44started the free software movement, one of the first tools he built was Emacs,
45using which all other free software was developed, starting with glibc. A lot of
46free software development is done on 40+ years old Emacs even to this day.
47
48Though most of the talks were about people doing cool things with Emacs, I was
49more emotionally touched by these two talks - "GNU Emacs as software freedom in
50practice" by an FSF member Greg Farough and "How to record executable notes with
51eev - and how to play them back" by Eduardo Ochs. These two talks emphasized
52the freedom that Emacs gives to its users, whether they are programmers or not.
53Both the speakers use Emacs the way it is meant to be used. They truly used
54Elisp as an extension language. I highly recommend watching the talks after
55they're posted. This got me thinking. Though I am primarily a programmer and use
56Emacs for almost all text editing, I barely programmed anything in Emacs - the
57programmable text editor. This is mostly because I think that my newbie elisp
58scripts are not as good as the ones already available as Elisp packages, so I
59refrain from writing elisp at all. I realized that this is not how Emacs is
60meant to be used.
61
62Emacs is all about taking the free software editor built by the community,
63making it your own through customization and contributing your improvements back
64to the community if you can.
65
66## Future of Emacs
67
ed914293
JN
68The most controversial talk and the one that generated the most conversation at
69the conference was a talk titled "Emacs: The Editor for the Next Forty Years" by
70Perry E. Metzger. It was quite a ranty talk by an Emacs user of over 20+ years.
71He mentioned that MacOS has better Emacs-everywhere keybindings as compared to
72mainstream GNU/Linux distributions that come with Gnome and KDE. I have to agree
73on this particular thing. But having used Emacs on MacOS myself, I had way too
74many segfaults and bad GUI experience. This was a much worse user experience in
75my opinion. My problems can be easily dismissed as user faults, well so can his.
76One might simply say that he could've used StumpWM or something that has better
77Emacs keybindings (I picked up StumpWM from B. Slade's talk at the same
78conference). The speaker goes on to recommend gradually replacing parts of Emacs
79with better languages that can stand the test of time, using a concept from
80philosophy called the Ship of Theseus. The core of Emacs can be changed from C -
81a dangerous language according to the speaker - to a relatively safer language
82like Rust. Elisp is not such a great language either with all the functions
83staying in the global scope. Maybe a better Lisp would do well as a replacement.
84I have to agree on both. The speaker says that we should put in the effort to
85design a programming language specificially for the use case of Emacs and not
86settle for a general purpose language. Also, the new language should
87interoperate with elisp since there's too much of it to replace without decades
88of work (e.g. org-mode has 120k lines of elisp). The importance of concurrency
89and parallelism in the new language is also stressed.
90
3010a505 91## Miscellaneous
b63a9897
JN
92
93Most of the talks were about how people were using Emacs in their daily life and
94about the cool applications they built on top of Emacs.
95
96As an
97[Orgzly](https://njoseph.me/blog/posts/replacing-cloud-based-to-do-apps-with-orgzly-and-syncthing/
98"Replacing cloud-based To-Do apps with Orgzly and Syncthing") user, I found a
99self-hosted web-based solution called [Organice](https://organice.200ok.ch/
100"Organice") interesting.
101
102The craziest hack I saw is making an object-oriented spreadsheet program in
103Elisp, putting sheet music in it and rendering the audio using a Scheme program.
104
105Almost all presenters used org-mode to make their presentations, with some
106people presenting it within Emacs and others using exported PDFs.
107
108Just like the Quake-inspired terminals Guake and Yakuake, there's one called
109[Equake](https://gitlab.com/emacsomancer/equake) that launches a drop-down eshell.
3010a505 110You can also use the racket shell called Rash, which is crazy powerful. This has
b63a9897
JN
111very good integration with StumpWM.
112
3010a505
JN
113### Accessibility
114
b63a9897
JN
115There was a talk by Parham Doustdar, a blind developer who uses Emacs as his
116daily driver. There were some interesting insights on how neglecting
117accessibility in applications seriously impacts the productivity of
118vision-impaired users. Some features can be completely inaccessible. Though the
119W3C is doing some work to improve accessibility in browsers, most HTML is
120rendered by client-side JavaScript these days which makes life even more
121difficult for blind users.
3010a505
JN
122
123### Replacing Shell Scripts?
124
125One of the talks was about trying to automate tasks using Elisp as a replacement
126for shell scripts (Emacs as my Go To Script Language - Howard Abrams). The idea
127is interesting but probably wouldn't entice a Perl hacker to try and use Elisp.
128I have done this myself in the past but the speaker went a bit further in
129building a framework for doing ad-hoc text processing and piping using Emacs.
130The hard reality is that text processing using macros or Elisp is very slow as
131compared to using a Python or Perl script.
132
921d2ea1
JN
133### Language Server Protocol
134
135I've always imagined non-IDE editors like Emacs to be ideal for programming in
136scripting languages. I tried using Emacs for Scala or Java earlier, but always
137end up switching back to IntelliJ. I think the new LSP implementation for Java
138is a game-changer. Though I am not a big fan of Java, it is the open-source
139language that competes with Microsoft C# and has a lot of Apache projects
140written in it. Being able to use Emacs for Java programming with all the
141features of an IDE is definitely a big win for free software. Kotlin doesn't
142have LSP support yet. Maybe it's a conflict of interest for JetBrains.
143
144The conference had an excellent live-coding demonstration of LSP by Torstein
145Krause Johansen in his presentation titled "How Emacs became my awesome Java
146editing environment".