So we’re after EmacsConf 2015. The conference was great. The talks were interesting, people were nice, and the IRC discussion was inspiring. (In fact, it inspired me to ad-lib a lightning talk on Emacs Calc.) Also, I decided to announce a certain project.
Last year, I wrote my first book (which is most probably not very interesting to most readers, since it is a monograph/lecture notes on theory of hyperconvex metric spaces – an interesting, though a bit abstract concept between mathematical analysis and topology), and I have to say that I liked the experience a lot. This year, I finished another book, this time with a coauthor, which is an introductory text on LaTeX (aimed mostly at students who wish to write a thesis, and written in Polish). Again, putting it together was a lot of fun. So, I decided to write a book on Emacs. The idea was to write something you could start reading after the built-in tutorial.
A few weeks after I started writing, Mickey Petersen announced his Mastering Emacs book. This convinced me that my project was largely obsolete, especially that I cannot compete with Mickey. (After his book came out, it turned out that I wasn’t entirely right: I intended to have a few chapters on selected packages like mu4e for email, Dired for file management, Emms for playing music, and a few others. Basically, what you use to live in Emacs, not only edit text. That is not covered by Mickey’s book, so I might to reconsider this part in the future.) I didn’t really want to drop the whole project, especially since I really wanted to do a part on extending Emacs. So, I decided to focus on that part alone.
In other words, I’m intending to write an intermediate-level book on Emacs Lisp. There is, of course, Robert J. Chassell’s Introduction to Programming in Emacs Lisp, which is really great and well-suited towards beginners, but after that there is a huge gap. Of course, you may read the Emacs Lisp Reference, but it’s not really very beginner-friendly.
So, my plan is to write something to read after the Elisp Intro. The idea is to first have a few general chapters, and then – in the second part – a few chapters in which we develop some Elisp program from scratch to a functional thing, with extensible comments and explanations.
A few ideas for the first part are: basics of functional programming (lambdas, funcall/apply, mapping, reducing), dynamic and lexical binding, debugging, testing, and editing Emacs Lisp (most probably using abo-abo’s Lispy). In fact, the chapters on functional programming, binding and debugging are already mostly written.
As for the second part, there are (of course) a few must-haves, like writing modes (currently, I have a simple example of a minor mode written, and I’m still waiting for inspiration for a major mode), the interactive
form and a few tricks with it, regexen and searching, operating on code (I already have a chapter on counting SLOC). I’m still thinking whether to include a simple metacircular evaluator, which I have mostly ready – but it is not a small project, and might be too big to fit in the book.
I have to say that I’m a little afraid of the community’s reaction, since I’m not really a very advanced Emacs user/Elisp programmer. Still, inspired by Sacha Chua’s “share-as-you-learn” approach, I think this project does indeed make sense.
I haven’t decided yet what form will the book take. Will it be an ebook only or a paper one, too? (I like ebooks a lot, but the popular ebook formats are not best suited for technical texts. OTOH, I’d really like to have a physical book, too.) Will it be self-published or will I go to a publishing house? (I’m strongly leaning towards self-publishing.) Most importantly, what the licensing will be? Currently, I’m leaning towards one of the Creative Commons licenses (most probably CC-BY-ND).
So, if you have any thoughts on this project, please let me know in the comments or by email. I’m not sure whether I’m going to push the WiP to GitHub or somewhere, but sending previews to a few interested people would be great. Also, if some folks are interested, I guess I might set up a mailing list.
CategoryBlog, CategoryEnglish, CategoryEmacs, CategoryEmacsBook