EmacsConf 2019

EmacsConf logo

I attended the EmacsConf 2019 on 2nd November. It was offered as a video stream that anyone can watch over the internet, with audience conversations over IRC. The conference was powered entirely by free software tools. RMS and some FSF members were also among the audience.

More details about any of the talks mentioned here can be found in the notes.

Updates

There was an Emacs community update and an Emacs development update. Both were very interesting. The community is sure taking notice of Spacemacs. Maybe Doom Emacs is not that popular yet. I am excited about the new built-in features of Emacs 27 - tab bar and ligatures. I was surprised that Emacs being one of the most popular free software projects still suffers from a lack of core developers. Maybe there are a lot of people willing to write Elisp but not many interested in contributing to the C core.

The Hackable Text Editor

The core of emacs is written in C with Elisp offered as an extension language. All of the Elisp source code that is running on your Emacs is available easily through Emacs itself. Elisp is designed to be an easy-to-use minimalistic language that non-programmers can use to create small improvements in their workflow.

Software Freedom

One of the speakers called Emacs the mother of all free software. When RMS started the free software movement, one of the first tools he built was Emacs, using which all other free software was developed, starting with glibc. A lot of free software development is done on 40+ years old Emacs even to this day.

Though most of the talks were about people doing cool things with Emacs, I was more emotionally touched by these two talks - “GNU Emacs as software freedom in practice” by an FSF member Greg Farough and “How to record executable notes with eev - and how to play them back” by Eduardo Ochs. These two talks emphasized the freedom that Emacs gives to its users, whether they are programmers or not. Both the speakers use Emacs the way it is meant to be used. They truly used Elisp as an extension language. I highly recommend watching the talks after they’re posted. This got me thinking. Though I am primarily a programmer and use Emacs for almost all text editing, I barely programmed anything in Emacs - the programmable text editor. This is mostly because I think that my newbie elisp scripts are not as good as the ones already available as Elisp packages, so I refrain from writing elisp at all. I realized that this is not how Emacs is meant to be used.

Emacs is all about taking the free software editor built by the community, making it your own through customization and contributing your improvements back to the community if you can.

Future of Emacs

The most controversial talk and the one that generated the most conversation at the conference was a talk titled “Emacs: The Editor for the Next Forty Years” by Perry E. Metzger. It was quite a ranty talk by an Emacs user of over 20+ years. He mentioned that MacOS has better Emacs-everywhere keybindings as compared to mainstream GNU/Linux distributions that come with Gnome and KDE. I have to agree on this particular thing. But having used Emacs on MacOS myself, I had way too many segfaults and bad GUI experience. This was a much worse user experience in my opinion. My problems can be easily dismissed as user faults, well so can his. One might simply say that he could’ve used StumpWM or something that has better Emacs keybindings (I picked up StumpWM from B. Slade’s talk at the same conference). The speaker goes on to recommend gradually replacing parts of Emacs with better languages that can stand the test of time, using a concept from philosophy called the Ship of Theseus. The core of Emacs can be changed from C - a dangerous language according to the speaker - to a relatively safer language like Rust. Elisp is not such a great language either with all the functions staying in the global scope. Maybe a better Lisp would do well as a replacement. I have to agree on both. The speaker says that we should put in the effort to design a programming language specificially for the use case of Emacs and not settle for a general purpose language. Also, the new language should interoperate with elisp since there’s too much of it to replace without decades of work (e.g. org-mode has 120k lines of elisp). The importance of concurrency and parallelism in the new language is also stressed.

Miscellaneous

Most of the talks were about how people were using Emacs in their daily life and about the cool applications they built on top of Emacs.

As an Orgzly user, I found a self-hosted web-based solution called Organice interesting.

The craziest hack I saw is making an object-oriented spreadsheet program in Elisp, putting sheet music in it and rendering the audio using a Scheme program.

Almost all presenters used org-mode to make their presentations, with some people presenting it within Emacs and others using exported PDFs.

Just like the Quake-inspired terminals Guake and Yakuake, there’s one called Equake that launches a drop-down eshell. You can also use the Racket shell called Rash, which is crazy powerful. Equake has good integration with StumpWM.

I was aware of the existence of Yasnippet, but never really used it much. I am more motivated to use this important productivity tool after watching the talk “Don’t wait! Write your own (yas)snippet” by Tony Aldon.

Accessibility

There was a talk by Parham Doustdar, a blind developer who uses Emacs as his daily driver. There were some interesting insights on how neglecting accessibility in applications seriously impacts the productivity of vision-impaired users. Some features can be completely inaccessible. Though the W3C is doing some work to improve accessibility in browsers, most HTML is rendered by client-side JavaScript these days which makes life even more difficult for blind users.

Replacing Shell Scripts?

One of the talks was about trying to automate tasks using Elisp as a replacement for shell scripts (Emacs as my Go To Script Language - Howard Abrams). The idea is interesting but probably wouldn’t entice a Perl hacker to try and use Elisp. I have done this myself in the past but the speaker went a bit further in building a framework for doing ad-hoc text processing and piping using Emacs. The hard reality is that text processing using macros or Elisp is very slow as compared to using a Python or Perl script.

Language Server Protocol

I’ve always imagined non-IDE editors like Emacs to be ideal for programming in scripting languages. I tried using Emacs for Scala or Java earlier, but always end up switching back to IntelliJ. I think the new LSP implementation for Java is a game-changer. Though I am not a big fan of Java, it is the open-source language that competes with Microsoft C# and has a lot of Apache projects written in it. Being able to use Emacs for Java programming with all the features of an IDE is definitely a big win for free software. Kotlin doesn’t have LSP support yet. Maybe it’s a conflict of interest for JetBrains.

The conference had an excellent live-coding demonstration of LSP by Torstein Krause Johansen in his presentation titled “How Emacs became my awesome Java editing environment”.

Evil mode

I was kinda disappointed that only one user used EViL mode. I expected that there were at least one talk on Evil mode itself. There was one talk by Zaiste about Doom Emacs but the title was too click-baity and showed no code. Maybe I should do a talk focussed on evil-mode in the next EmacsConf.

Diversity

The conference seemed to have a good racial mix of speakers. There was a blind speaker too. I am happy to see some representation from non-programmers among the speakers. The conference can do better in terms of gender diversity.

Conclusion

The conference was totally worth losing a night’s sleep over. I had to stay up till 5 am due to timezone differences. I am now more motivated to write some Elisp myself and customize Emacs to my specific needs.