The last few months have been full of activity for Common Lisp and Emacs, two venerable software projects with niche open source communities. Common Lisp is a programming language that belongs to the Lisp family of languages. Lisp was invented in 1958. It is the second oldest programming language still in use today. Only Fortran is older, by one year. Lisp has been hailed as one of the greatest programming languages of all times. Unlike mainstream programming languages like Java and Python which are used widely in the IT industry worldwide, Lisp is used by academics and a niche group of programmers who specialize in algorithms, symbolic computation and functional programming. It is known for its distinctive use of parentheses and steep learning curve. Common Lisp is one of the popular dialects of Lisp. Scheme, Clojure, Emacs Lisp, Racket, etc. are a few other popular dialects of Lisp.
In the last few months, the Lisp community saw a new release of Steel Bank Common Lisp, the most popular compiler for Common Lisp. SBCL version 2.0.11 was released on November 29, 2020. GNU Emacs which is a very popular editor among Lisp programmers and which itself is written in Emacs Lisp, another dialect of Lisp, had its version 27.1 released on August 10, 2020. Despite all the activity around Lisp, it has been a particularly tough programming language for beginners to learn and become proficient at. For example, beginners to Common Lisp face the hurdle of learning a number of additional skills that they have to pick up along the way.
While one can learn Python with any text editor and a terminal, learning Common Lisp requires one to learn a number of additional skills. One has to learn GNU Emacs, the editor used by most Common Lisp programmers. One has to learn an additional software package for GNU Emacs known as SLIME. SLIME, which stands for Superior Lisp Interaction Mode for Emacs, provides an interactive programming experience to Common Lisp programmers. It allows the programmer to load and evaluate arbitrary portions of their code and watch it running without leaving the GNU Emacs editor.
Time and again, the Lisp community has published tutorials and packages that make the journey of beginner to Common Lisp easier. Portacle is a noteworthy project in this area. It allows a new Common Lisp programmer to download a software package, install it and get a readymade Common Lisp development environment that contains GNU Emacs, SLIME and a couple of other helpful packages pre-packaged and pre-configured. On December 16, 2020, Susam Pal, an experienced open source developer, published his own solution to the problem of making Common Lisp easier to learn for beginners.
Open source involves software for which the original source code is made freely available and may be redistributed or modified. The users and other programmers can study how the software works and modify it to work differently if they so desire. Many open source developers contribute to open source in their free time as hobby. Like a guitar aficionado may record a few songs as a hobby and share it with their friends or other fellow musicians, an open source developer develops software as a hobby and shares it with the open source community.
Susam Pal has been an open source software developer since 2006. He has contributed to open source projects like Apache Nutch, Open Source Vulnerability Database (OSVDB), etc. in 2006-2008. Since then, he has authored a number of new open source projects such as MathBin, Uncap, TeXMe, etc. which are used by thousands of software developers, teachers and students across the world. Susam Pal has also contributed to the Lisp ecosystem in 2018 by enhancing Slimv which is a SLIME-like package for Vim, another editor tool for programmers. His contributions improved Slimv to work better on macOS as well as to better support Clojure, another dialect of Lisp.
When Susam Pal looked at the problem of the steep learning curve associated with learning Common Lisp, he decided to provide a simpler alternative to Portacle. He thought that Portacle hides away the customizations done to GNU Emacs to turn into a Common Lisp development environment. While this is great for ease of use, it also impedes one’s understanding and knowledge of one’s own development environment. To overcome this problem, Susam Pal published a new project named Emacs4CL.
Emacs4CL, which stands for Emacs for Common Lisp, is a small Emacs Lisp package consisting of Emacs Lisp code that turns GNU Emacs into a Common Lisp development environment. Emacs Lisp is a dialect of Lisp used to configure and customize GNU Emacs. Most Emacs Lisp packages have hundreds or thousands of lines of code to add new functionality to Emacs. What is unique about Emacs4CL is that it contains only 35 lines of Emacs Lisp code as of December 2020. Someone completely new to Common Lisp and Emacs can take this package, copy it to their system, load GNU Emacs with it and Emacs4CL takes care of automatically installing SLIME and a few other packages to set up GNU Emacs for Common Lisp programming.
The description of Emacs4CL states, “This repository provides a good middle ground between configuring Emacs manually by installing SLIME, Paredit, etc. yourself with M-x package-install commands and installing Portacle. It promotes a do-it-yourself approach to automate customizing Emacs for Common Lisp programming.” Since Emacs4CL is only 35 lines of code, it is easy for someone new to this ecosystem to read every line of code and understand how it works, what packages it installs and what customizations it adds to GNU Emacs. If they don’t like something in the code, they can change it to suit their preferences.
When Emacs4CL was announced in Common Lisp community, it received overwhelmingly positive feedback. On Hacker News, it was upvoted 77 times with largely positive reviews of the package. One community member said, “This is, in my opinion, the best way to introduce people to light .emacs configuration.” On the Reddit Emacs community, it was selected as the “package of the day” on December 16, 2020. Most users found it very easy to set up and use Emacs4CL. One user said, “The line-by-line explanation is very handy, thank you for that. I find that one of the hard balances with using Emacs is whether to fully understand everything you put into your conf-files or just accepting some degree of copy-paste.”
The GitHub repository for the package garnered over 100 stars on the day of announcement. GitHub is an online platform for open source software creation and distribution. Each star denotes a token of appreciation awarded by open source developers and users to an open source software project. With more users taking a liking to Emacs4CL, this might now become a new way for novices to begin learning Common Lisp.
Reference Links —–
Emacs4CL is available online here: https://github.com/susam/emacs4cl