What I'd like to see in Emacs
Richard M. Stallman
For context, we will first play Richard Stallman's 2014 TEDx talk called "Free Software, Free Society." The TEDx talk is licensed under the Creative Commons Attribution - No Derivative Works 3.0 license. Afterwards, Richard Stallman will discuss what he believes will be good ways to improve Emacs. The EmacsConf talk will be under the Creative Commons Attribution - ShareAlike license. There will be a moderated Q&A, so please put your questions in the Etherpad or IRC.
The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.
Format: 18-min talk followed by moderated Mumble Q&A (#emacsconf-dev)
Etherpad: https://pad.emacsconf.org/2022-rms
Discuss on IRC: #emacsconf-dev
Status: TO_CAPTION_QA
Sunday, Dec 4 2022, ~9:15 AM - 9:35 AM MST (US/Mountain)
Sunday, Dec 4 2022, ~8:15 AM - 8:35 AM PST (US/Pacific)
Sunday, Dec 4 2022, ~4:15 PM - 4:35 PM UTC
Sunday, Dec 4 2022, ~5:15 PM - 5:35 PM CET (Europe/Paris)
Sunday, Dec 4 2022, ~6:15 PM - 6:35 PM EET (Europe/Athens)
Sunday, Dec 4 2022, ~9:45 PM - 10:05 PM IST (Asia/Kolkata)
Monday, Dec 5 2022, ~12:15 AM - 12:35 AM +08 (Asia/Singapore)
Monday, Dec 5 2022, ~1:15 AM - 1:35 AM JST (Asia/Tokyo)
Talk
00:00.000 GNU Emacs and its purpose 02:33.640 Lisp as the extension language 03:46.280 JavaScript versus freedom 06:14.640 Updating "An Introduction to Emacs Lisp Programming" 07:23.407 More memorable package names 08:31.807 Simplifying the command interface 10:23.620 Modularity 11:22.220 Editing formatted text 12:55.460 Not the equivalent of a modern web browser 15:31.300 Getting involved
Q&A
00:56.800 Pragmatically, how are people that buy into these ideals, and especially those that build the software, meant to live/thrive, short of renouncing many of the luxuries of modern life, as many have been struggling to reconcile both, it appears? Wouldn't it be smarter and more productive longer-term to solve that problem too? 03:24.600 I have been admiring your work for free software for many years now. I am a bit concerned about what will happen to the GNU project when you retire (not soon, I hope!!). Have you planned how to manage the GNU project in the long run? 04:52.520 In response to your aversion to JavaScript support in Emacs: In the same way that to revolt against the nonfree spirit in software development one has to develop software, and that to fight nonfree compilers one has to write a free compiler - can you fairly consider rejection of JavaScript as a tool conducive to improving the state of free JavaScript? A server can send back any MIME type to execute on your machine, JS was just the most convenient. 07:27.000 With all the recent additions and optimizations to Emacs Lisp (lexical scoping, native compilation etc.) would you deem Emacs Lisp suitable for general purpose programming outside Emacs (i.e. scripting, running web servers). If not, why? 08:44.760 Could you give a few examples of the medium-sized jobs necessary for WYSIWYG-editor support in Emacs? 09:33.480 Should GNU (or someone else) define a safe-subset of HTML/CSS/JS to make web browsers simpler and safer (e.g. by preventing JS from contacting servers)? 10:57.440 How can we ensure the continuity of an understanding of the more arcane parts of the [Emacs] source code, and increase their evolvability, notably with regards to display, single-threading limitations, etc.? 13:50.480 Are there any problems or disadvantages using the GNU AGPL for non-networked software like Emacs packages? 14:50.280 Is there a list of Emacs issues which can be solved by programmers with different levels? For example my level is A, I know basic elisp and C. How can I help? 16:36.840 What roadblocks kept some of the other efforts from being used with Emacs? 17:36.240 What do you use emacs for beyond editing? 17:55.120 Song about e-mail 18:49.556 Emacs is used by a small population relative to the population that could benefit from it. Do you have any thoughts on how to expand the user base more broadly even among software developers? 20:05.760 Would a namespace system similar to Common Lisp packages but without :USE work in Emacs? Modern CL implementations have package local nicknames to create package local prefixes. 22:42.440 With Emacs 29 adding more (awesome) features into vanilla Emacs, how should we ensure vanilla Emacs does not get bloated with many similar features? (example: ido/icomplete, vc/magit) 24:26.920 Do you recommend reaching out in [high] schools for volunteers instead of universities because they are more prone to value the objectives of freedom? 25:35.040 What was the thought process behind making Emacs Lisp dynamically scoped when you first created it? What advantages did it provide over the alternative? 27:18.766 It's hard to pick up Emacs if you do not speak English. Can something be done to address that? 29:28.840 Do you use Org or Org mode, and if so, to what extent? 33:54.480 What do you have in mind for more modular Emacs development? 35:19.040 Reframing the school question 36:18.640 In light of that critique of JavaScript not being about the language per se but rather the "culture of blindly getting and running packages/libraries", what's so different with what's currently done by the vast majority of Emacs/Elisp users to just install packages blindly? 37:48.800 Do you still intend to merge your patch to the "shorthands" feature to the master branch? 38:54.880 Do you think the freedom e.g., we have in Emacs, becomes a hurdle for some people to pursue more important things in the world? I used to do a lot of Emacs programming, but I recently try to stay away from tinkering on Emacs. 40:27.920 Question about software freedom: how does it apply to software that are art/media experiences, like videogames? In your view, Is the creator of a videogame obliged to release it under a free license? 43:35.915 Have you seen Haketilo? It seems similar to LibreJS. 45:45.568 Do you have any suggestions for helping propective contributers streamline the copyright assignment needed to contribute to Emacs (and other FSF software projects)? 47:09.800 Can complexity induced by company-funded free/libre code become a problem, when the company pulls out, leaving the code potentially unmaintainable? 49:31.280 What do you think of Hyperbole or EEV instead of org mode, or other things for the stuff that org mode does "second brain / knowledge base", or GTD 'getting things done' etc... among other things in Emacs or other Emacs packages 52:06.251 Are there plans to bring modal editing (eg. evil-mode, viper) to Emacs core and did your opinion on modal editing change over the years? 53:03.000 What is your opinion on the current state of large machine learning/AI models? 54:14.302 I thought it was a virtue to separate the content from the style orappearance of information. Part of being free is also to view information in the format that you want. Does your WYSIWYG idea erode this virtue and lead to more thinking -- perhaps undue thinking about style over substance? 55:38.840 Do you ever dabble in retro-computing, e.g. logging into TOPS10/20 systems SDF, etc? 56:38.196 Do you know Gemini? 58:04.480 stallmansupport.org
Description
We played Richard Stallman's 2014 TEDx video: "Free Sofware, Free Society" for context before his talk for EmacsConf 2022. The 2014 TEDx video is 14 minutes long, and is licensed under the Creative Commons Attribution-No Derivative Works 3.0 license. - EmacsConf organizers
Discussion
Notes
- https://stallman.org/
- https://stallmansupport.org/ (regarding reports of attacks against him)
- "Free Software": A similar point of view related to contributing to gated web forums: https://karl-voit.at/2020/10/23/avoid-web-forums/
- "Everything other than an Lispy language would be wrong for GNU Emacs" (paraphrased)
- RMS wants an update to "An Introduction to Programming in Emacs Lisp" to cover changes to Emacs such as lexical binding.
- Names of packages should help you remember what this package does. Omit pure word-plays. Stick to names that people will remember.
- RMS wants to edit formatted documents within Emacs using WYSIWYG (like with LibreOffice)
- RMS wants to get back to the situation where browsers decided how a web page is rendered. Less browser features that allow to control the look by the web page providers.
- RMS doesn't want to use packages that are not actually part of Emacs (e.g., Magit). RMS is using VC and not git.
- RMS: "Happy hacking"
Questions and answers
- Q: Pragmatically, how are people that buy into these ideals, and
especially those that build the software, meant to live/thrive,
short of renouncing many of the luxuries of modern life, as many
have been struggling to reconcile both it appears. Wouldn't it be
smarter and more productive longer-term to solve that problem too?
- A: (answered on stream, will be copied later)
- Q: I have been admiring your work for free software for many years
now. I am a bit concerned about what will happen to the GNU project
when you retire (not soon, I hope!!). Have you planned how to manage
the GNU project in the long run?
- A: (answering on stream, will be copied later)
- RMS: haven't found a way yet. We'll have to try again.
- Q: In response to your aversion to JavaScript support in Emacs: In
the same way that to revolt against the nonfree spirit in software
development one has to develop software, and that to fight nonfree
compilers one has to write a free compiler - can you fairly consider
rejection of JavaScript as a tool conducive to improving the state
of free JavaScript? A server can send back any MIME type to execute
on your machine, JS was just the most convenient.
- A: The issue is different in kind. We already have free JS support. Free browsers contain it. The issue is the programs that are going to run. If JS would allow you to inspect the code before runing it, it wouldn't be problematic. The problem is that they end up in your browser and the user has no idea what's happening. Websites are mistreating users. The important thing about it is the danger it creates.
- Q: With all the recent additions and optimizations to Emacs Lisp
(lexical scoping, native compilation etc.) would you deem Emacs Lisp
suitable for general purpose programming outside Emacs (i.e.
scripting, running web servers). If not, why?
- A: Nothing wrong with this in principle, but it would be a distraction. I'd rather we didn't do it. If we had 1K programmers ready to do this and every other thing, no problem. We don't. There are many other platforms that can accommodate programs. I'd rather use emacs to do its work and leaving other languages to theirs.
- Q: Would a namespace system similar to Common Lisp packages but
without :USE work in Emacs? Modern CL implementations have package
local nicknames to create package local prefixes.
- A: Basically, yes, but it has issues. [rest will be copied from stream later...] A naming convention would be much simpler to get right.
- Q: With Emacs 29 adding more (awesome) features into vanilla emacs,
how should we ensure vanilla emacs does not get bloated with many
similar features? (example : ido/icomplete, vc/magit)
- A:To some extent we can't, because users do things differently. I have never used Magit because I didn't want to use anything not part of Emacs. I was unable to get into contact with the Magit developer regarding integration of it within Emacs. I do not use git as my main vc system. I think when packages have very different approaches about how to handle things (like vc versus magit) their approaches are not redundant.
- Q: What do you have in mind for more modular Emacs development?
- A: There is no specific feature, but a way of thinking about modularity when you write each package because you'll find that when interacting with other packages you'll identify hooks that may be there or may be missing. You could add a fairly general hook so that instead of a rigid connection to other parts of emacs you could use a general purpose hook that could do a lot of things including the thing you need it to do.
- Q: Could you give a few examples of the medium-sized jobs necessary
for WYSIWYG-editor support in Emacs?
- A: I can't really, but I would appreciate it if people started putting that together. If you look at LIbreOffice then you could choose a subset of very important ones that will give everyone a start.
- Q:Is there an up-do-date document where people can see what is and
isn't on the roadmap, and why? i.e. a live version of talks like
this or email threads on emacs-devel?
- A: Not that I'm aware of.
- etc/TODO
- Q: Should GNU (or someone else) define a safe-subset of HTML/CSS/JS
to make web browsers simpler and safer (e.g. by preventing JS from
contacting servers)?
- A: This would be an interesting thing to explore, but I don't know if it can be done. Browser profiling is facilitated by javascript. So, there is a collection of benchmarks and results are different. So it allows the browser to gain information without employing cookies.
- Q: How can we ensure the continuity of an understanding of the more
arcane parts of the [Emacs] source code, and increase their
evolvability, notably with regards to display, single-threading
limitations, etc.?
- A: Single threading is a very specific thing. The furthest that I've bothered to think about it is to enable multiple LISP programs to run in parallel. My machine doesn't allow me to run multiple threads in a single program, so it never mattered to me. Basically, dev of the displaycode without threads is more feasible. However, changes in the buffer data structure would be required and that will be the hard part. Representing a buffer with a certain display needs to be worked out first. You have to decide the data structure thinking about how display can handle it efficiently. Think about that at that stage. The editing and data structure is the part to figure out.
- Q: Do you recommend reaching out in [high] schools for volunteers instead of universities because they are more prone to value the objectives of freedom?
- Do you recommend reaching out in schools for volunteers for both
advocacy and for development instead of unversities because they are
more prone to value the objectives of freedom?
- A: Reaching out for what? To teach about freedom or to find more developers? Can you elaborate? Questioner:
- A: my entrypoint in school was LaTex.
- Q: There was an effort called guile-emacs a while back, and there
was some effort to get guile to be able to compile and run
emacs-lisp, you mentioned there were still some challenges related
to guile, what road blocks kept some of these other efforts from
being used with Emacs?
- A: We never finished the problem of reconciling guile-emacs data types with Emacs Lisp data types (such as handling nil/#f/() interoperation [and string/buffer handling]).
- Q: Are there any problems or disadvantages using the GNU AGPL for
non-networked software like Emacs packages?
- A: I figured the community would be happier if the radical change did not happen in the license itself.
- Q: Is there a list of Emacs issues which can be solved by
programmers with different levels? For example my level is A, I know
basic elisp and C. How can i help?
- A: I don't know of one. I tend to think that people who know only a basic knowledge. Looking at bugs and thinking about how they could debug them, you could alert the developers. In the process you'll learn more about how programs are written and how to understand them.
- Q: What do you use emacs for beyond editing? Nice song
- A: I use it for reading and writing email; this is what I do most of the day. (Sings)
- "I've been answering my email,
- all the god-damned day / .. / ]
- Q:With features like org-mode and enriched-mode, it seems like Emacs is getting closer to the goal of WSIWYG. Are there specific ways in which you see these as falling short?
- Q: Do you use Org/Org-mode, and if so to what extent?
- A: No. Originally, it was an outlining mode that I never tried to use. The documentation was not easy for nme to grasp because I had no use for it. Then others developed other ways to use the org syntax. I was not interested in using the org syntax. The process was daunting. It was not easy to separate other modules used with org mode. Org mode could become an advance-- not saying that it isn't useful-- if extended to do it, we could use a replacement for texinfo. Texinfo's syntax was arcane and was based on TeX. It could become a better way to write GNU manuals. Probably more people know that syntax and if it could be extended then it could be a superior way to write the manuals. But we need to be able to generate all of the outputs that we can generate now. HTML, info files, info browsers like the one inside emacs, and generating input to TeX. This is not a gigantic job. It is two or three medium-sized jobs.
- Q:Emacs is used by a small population relative to the population
that could benefit from it. Do you have any thoughts on how to
expand the user base more broadly even among software developers?
- A: No. Basically, the fact is that vscode has an advantage-- which comes from Microsoft, which is putting it together as a part of evil proprietary software... Users don't understand that issue. I wish I could come up with a way to show them what's at stake and why. The TEDX talk is the closest thing.
- Q: It's hard to pick up Emacs if you do not speak English, can
something be done to address that?
- A: What do you actually suggest? Manuals? Messages that Emacs displays? Command names? The easiest thing would be to deal wiht the messages. It's hard to adapt it to Emacs because there is no fixed set of messages. It could be done. It's not a terribly hard process. Maybe differrent command names or an alternative to meta-x. If you typed this other thing, it would only complete over the other names in the native language. Working out the details would take a great deal of thought. Docstrings: you could write another set of them and write a set of help commands.
- Q: What was the thought process behind making emacs lisp dynamically
scoped when you first created it? What advantages did it provide
over the alternative?
- A: It was simple. I did know how to implement it to build a simple and small Lisp interpreter and being small was crucial to bootstrap it on the hardware of that time. Things have changed though, these days Eight Megabytes And Constantly Swapping is an obsolete statement
- Q: In light of that critique of JavaScript not being about the
language per se but rather the "culture of blindly getting and
running packages/libraries", what's so different with what's
currently done by the vast majority of Emacs/Elisp users to just
install packages blindly?
- A: Well, they know they're installing a package and that makes all the difference. People could post various versions of a package that people can look at and identify which to use or whether one of them has horrible bugs. With JS there is no way to do this, and most of these programs are not free. You don't know which programs are being installed on your browser. These things don't happen with elisp packages -- at least not when they're in reputable package archives.
- Q: Do you think the freedom e.g., we have in Emacs, becomes a hurdle
for some people to pursue more important things in the world? I used
to do a lot of Emacs programming, but I recently try to stay away
from tinkering on Emacs.
- A: There may be more important things for you to do, but when
you look at all of the other distractions in the world it seems
unfair to criticize emacs. Look at video games which achieve
nothing but distraction. If you tinker with emacs code there is
a chance for you to discover something more important than how
to win a video game.
- Reply to Anwser: Sorry about the question. I do not intend to criticize Emacs. It is more like a reflection on this issue. The easiblity of jumping from anywhere in Emacs to the source code, to the add-on packages, to the rich documentation, to previous notes I have, becomes a strong pulling force for me to do more important things. I often found myself stay late in nights, and unable to have a good sleep. Emacs gives me tremendous amount of freedom, I definitely apprecitate it. On the other hand, I hate to stay in non-free software, so I elimintate every possibility to interact with them. This seems to be more effective to get work done, since I only do the most important things, let it go, and never thinking about the software. Don't get me wrong, I agree with your point of view that the most important thing GNU Emacs gives to the world is the freedom. I will do my part.
- A: There may be more important things for you to do, but when
you look at all of the other distractions in the world it seems
unfair to criticize emacs. Look at video games which achieve
nothing but distraction. If you tinker with emacs code there is
a chance for you to discover something more important than how
to win a video game.
- Q: Do you still intend to merge your patch to the "shorthands"
feature to the master branch?
- A: Yes, but some work on the docstrings is blocking it. s.el references other s.el functions in its docstrings and we'll want to alter the docstrings, too. A new docstring construct could fix that. We've added a lot alrady, one more would be fine.
- Q: Question about software freedom: how does it apply to software
that are art/media experiences, like videogames? In your view, Is
the creator of a videogame obliged to release it under a free
license?
- A:
- Q: And how would technologies like webassembly fit in with the
javascript issues?
- A: They don't change much. If the licensing situation is handled the same way as with regular JS using LibreJS-recognized license notices and complies with its license [like, by providing its sources], it would be fine.
- Q: Have you seen Haketilo https://haketilo.koszko.org/ It looks
kinda like librejs?
- A: Haketilo is design to allow people to get some of the benefit of free software. Potentially it offers a solution to the javascript problem, but it has a long way to go. If you want to do this, please do so.
- Q: Is writing a free software replacement to Github Copilot with
proper license attribution a good idea? (like Mozilla Common Voice)
- A: Maybe but remember that copilot is not a program, it is a service. It is a computation that someone else will do for you when you ask. What are the practical problems with doing that? Not sure. Of course the server operates by running programs, but there is still a difference. People who use copilot don't get any kind of copy of the program. They send it to the server. It might be a good idea.
- Q: Do you have any suggestions for helping propective contributers
streamline the copyright assignment needed to contribute to Emacs
(and other FSF software projects)? If working for a large
corporation, simply navigating the internal beaucracy to find the
correct person/people to talk to who even understands what you're
talking about without a "deer in the headlights look" can be very
difficult. This problem of gaining copyright assignment seems to be
a signifcant problem and ultimately splits people into two different
classifications, those who can contribute directly to FSF projects
(willing and able) and those who can't (willing but unable).
- A: The copyright assignment does not take long. The important thing is the employer disclaimer. If your job entails programming, we want to make sure that your employer does not say, "you've got no right to contribute that program" and the project is shafted. We are working on some simplifications to make it easier for companies to say yes to it, but fundamentally we need them to say yes.
- Q: What do you think of Hyperbole or EEV instead of org mode, or
other things for the stuff that org mode does "second brain /
knowledge base", or GTD 'getting things done' etc... among other
things in Emacs or other Emacs packages
- A: Well, I don't know that much about either of them. I don't know EEV. I know Hyperbole, but it was many years ago. So I can't have an educated opinion. Someone could study this, and there would be a lot to study. If these are fairly similar-- is either actually part of emacs? A: [Both are free software. ]
- A: We might want to compare them to determine which is the best possible add to emacs, but since I don't have specifics, I don't want to state a priority preference. I don't have one.
- Q: I thought it was a virtue to separate the content from the style
or appearance of information. Part of being free is also to view
information in the format that you want. Does your WYSIWYG idea
erode this virtue and lead to more thinking -- perhaps undue
thinking about style over substance? {seems like more freedom for
authors and less freedom for readers} (No the question is more about
the experience of creation.)
- A: I don't know actually. I know that in LibreOffice you can make named styles, and you can change styles... Is that enough? I am hardly a power user.
- Q: Do you ever dabble in retro-computing, e.g. logging into
TOPS10/20 systems SDF, etc?
- A: No, I decided it's a waste of time. It's tinkering that would not develop anything of any importance or use. And I know if I'm going to enjoy developing something... I could enjoy developing anything... I decided not to distract my attention from useful computing.
- Q: Do you know Gemini https://gemini.circumlunar.space/ ? (a
network of very simplified Markdown-like text files without images
and third-party content transmitted via an open/public/free protocol
which is not http(s)) If so, what do you think of it? (I'm dreaming
of a Gemini-web with interlinked Org mode syntax files)
- A: I don't remember and have no opinion. The lack of images will turn out to be a considerable drawback. The exclusion of images would be a big loss.
- Q: What is your opinion on the current state of large machine
learning/AI models? Even if the model is released under a free
license, it cannot be modified in a meaningful way without access to
vast quantities of training data, which isn't free. Even if it's
available, using the data requires datacenter-levels of computing
resources out of the reach of most users.
- A: I don't think that's true. You can modify it. You don't need the previously used training data. The trained neural network can be treated as source code. What else could it be?
- Q: Are there plans to bring modal editing (eg. evil-mode, viper) to
emacs core and did your opinion on modal editing change over the
years?
- A: I don't have a wish for that. Now it's not somehow morally anathema. It's not a non-free program. How to incorporate this into existing Emacs without doing any violence to its code is the question.
- Q: Can complexity induced by company-funded free/libre code become a
problem, when the company pulls out, leaving the code potentially
unmaintainable?
- A: It's a matter of community, the same applies for software developed by single individuals. Over-complicated programs suffer more.
- Q: Hi Richard, do you know about GNU
TeXmacs? If so, why doesn't it fit your
idea of a way to write rich documents with emacs-like keyboard-based
interfaces? (referring to "something like layout capabilities of
TeX and the editing capabilities of Emacs).
- A:
- Comment: If you've heard about attacks that others have been making on me I refer you to stallmansupport.org. https://stallmansupport.org/
Some comments from IRC:
- wasamasa : I admire the commitment and integrity. I'm just taking a step back and thinking if this should be expected, or a more pragmatic but still uncompromising approach would be warranted in the bigger scheme.
- emacs has so many great features and packages just in the latest years and my feeling is that they are very much inspired/cloned/reworked from the features that came out of sublime text/atom/vs code/other current popular editor
- That's what happens when you have the freedom to shape the tool as you want. Different people like different features and sometimes (pretty often actually) it just happens that they end up implementing features they liked in other tools they used before.
- it's important to state non-goals like fullblown webbrowser, javascript etc. because they are not obvious to newcomers and would add a lot of bloat
Some comments from YouTube:
One thing I learned for sure after watching this great talk is that Emacs is open to have all modern features that newer software like VS Code use as long as it doesn't deteriorate user's freedom and privacy.
Great talk! I appreciate the continued effort into all things GNU, ensuring our freedom to use these computers however we may choose. I will add that the bits about JavaScript and the explosion of complexity in browsers all being based in companies' unjust demand to directly dictate what is displayed on a users screen are very clearly true, and opens my mind up about how a truly free world is something we need to continue to fight for
The formatted text editing in WYSIWYG was something I did not think I would hear from RMS.
Looking at around 12:50, maybe it would be nice to have a nice Org-Mode template that did that which incorporated the correct header adjustments that could output in PDF or DOC forms for sharing. I keep a couple of headers around that I reuse, but tweaking them is monumental. It would be nice to have a "stock" selection of headers for specific tasks.
RMS is a wonderful human being. Without him we would live in a world of proprietary closed source software.
I would like to have "grammar sensitive selection and navigation" ... basically putting numbers at the "syntax terms" (like variable, method body, argument etc) .... But I'm not good/efficient enough at programming to do something by myself ... I think this would make a massive difference for coders and a nice feature to set apart from IDEs. But hey, a man can dream
I still would love to see GNU/Hurd completed in my lifetime
Emacs 30 support for interoperation between libreoffice suite confirmed?? PogChamp
Reactions: - https://news.ycombinator.com/item?id=33888981 - Why do we hack? - RMS On What He Wants and Doesn’t Want in Emacs - https://www.reddit.com/r/emacs/comments/zktblg/emacsconf_2022_what_id_like_to_see_in_emacs/
Transcript
[00:00:00.000] Hello! I'm going to talk about what I would like to see in GNU Emacs in the future, and what I would prefer not to find there. This is all within the context of GNU Emacs and its purpose. GNU Emacs is a part of the GNU operating system, and the purpose of the GNU operating system is not simply to do a good job technically, not simply to be good to use. Its main purpose, its overall purpose, is to give people freedom, and to help them value and defend that freedom. A GNU package, by being a convenient, well-written program, should contribute to that overall ethical and social goal, and not only to the usefulness of our software. This is true for GNU Emacs as much as it is for any other free program we’ve developed. In fact, GNU Emacs is the first GNU program that I released. I had written some other things before that, but didn't release them at that time. There was no particular use in doing so. So it was through GNU Emacs that I learned about various things such as software licenses and how to defend freedom. You're of course familiar with what GNU Emacs is today, thanks to the contributions of thousands of other people who came after me. What would I like? What would other people like? Lots of people come to Emacs familiar with VS Code, and they say, "Please make Emacs more like VS Code. Change everything that you did in the 1980s and 90s to be like that other thing." That wouldn't be feasible even if we wanted to. Our goal is not to be... not resembling VS Code. Any resemblance is coincidental.
[00:02:33.640] But in particular, we do not want to have extension languages other than Lisp. Emacs Lisp is the variant of Lisp that we've always supported, which has evolved along with Emacs. We can conceivably have Scheme as well, if we can sufficiently solve the problems, the technical problems of making Scheme and Emacs Lisp interoperate. We did some design work, I think that was with Tom Lord, whom the community will greatly miss. In the 1990s, there are challenges that remain; maybe it can be done. But a non-Lispy language would be a mistake. It would divert our development focus into areas that we don't need, languages that are less powerful, less beautiful, and less desirable for the purpose.
[00:03:46.280] However, the language that we above all shouldn't support is JavaScript. That's not because of the language itself. I don't know the JavaScript language, I've heard people say it's rather clumsy and not well designed, but I don't know this. In any case, it's not what my views are based on. There's something much worse about JavaScript, which is not the language itself, but how people use it. Namely, it's been adopted as a way for a network server to send a program to your machine without your even noticing, so that this program, written by you don't know who, will run on your computer and do you don't know what. And you're supposed to just trust all and sundry developers of software for the sites you visit, which very commonly do malicious things, often unknown to the people who are running the server itself. They paid someone else to design a website and they probably said, oh, make it fashionable and attractive. And they didn't insist, don't snoop on the visitors, even if they understood what the issue was. So these sites snoop. It's a serious problem. The problem comes not from the language JavaScript, but from the fact that browsers, by default, will pull in JavaScript code that gets sent to them and run it to do anything at all. Emacs is supposed to defend your freedom. It's supposed to help you to defend your freedom, and lead you to defend your freedom, which means it shouldn't lead you to throw your freedom away as soon as you visit a site that tries to send you a non-free program to run straight off of that other machine. So it's important not to lead users to do computing this way. So what are some good things that we would want instead of this?
[00:06:14.640] One thing we want is to update the "Introduction to Emacs Lisp Programming" by the late Bob Chassell. It's a book that makes it easy for even non-programmers to learn to write simple programs in Emacs Lisp. And from there, they can go on to do better. We made a pretty big change in Emacs Lisp a few years ago, implementing lexical scoping by default. Originally, Emacs Lisp used to be entirely dynamic scoping, like some of the earliest Lisp interpreters. This is a change that should have a careful job of updating for the introduction. I'm sure we've made it clear in the reference manual, but that's not what beginners read first. We need something to teach them in lexical scoping.
[00:07:23.407] Another thing we could use is to make it easier to understand the facilities that we have. For instance, I think every package that you might load into your Emacs and run should have a name that helps you remember what job it does. It doesn't have to be super long to tell you what job that package does. You can read the description to learn that. But once you've read the description, it should be memorable. When you see that name again, you should realize, oh, that's the package I could use to do "less" and so. We've had a tendency to give packages names for the sake of pure wordplay or lack of obvious meaning, and I think we should add on, to those packages, names that people will remember.
[00:08:31.807] Also, there are ways we can simplify the command interface of Emacs. For instance, there are many different parameters users can specify that can have several values, and sometimes you do various kinds of editing in one session. That's normal in Emacs, and you might want different parameter settings for different kinds of editing. So you specify parameter value A, do some editing, you specify parameter value B, and do some editing, and you'd switch back and forth, so you want to switch back and forth between these parameters. I think we should aim ... People have added various commands to switch between the last two or n values of this parameter, and another command to switch between the last two or n values of this [other] parameter, and then that parameter, you know, and that parameter. I think we should be able to have a switch between the last n values command that works on various different parameters, and thus makes it easy to remember that there is this facility. Because right now the commands to do that are all ad-hoc, and if you don't use a toggling among the last n values of a given parameter, you won't know how to do it. It won't be obvious that there is a way, so you'd have to go to a suitable manual and study for a while to think of that. We could make this easily discoverable.
[00:10:23.620] There is another kind of modularity that's important, and that is modularity at the level of maintenance. This is something all programmers know about, of course, but in Emacs, various parts interact with other parts, and we've tried to make them modular in design by using lots of hooks, but we haven't gone as far as we could. With some effort, we could find calls from over here to over there that could be replaced by use of hooks, so that we could reduce the extent to which you need to know about one part of Emacs to maintain another part of Emacs, and I think that as we keep adding more facilities to Emacs, this kind of modularity will be an investment that pays off.
[00:11:22.220] There’s one big area of features that I would like to see in Emacs, and that's the ability to edit formatted documents in WYSIWYG, to be able to edit a letter or a scientific mathematical paper with formulas or a nicely laid out manual, looking at what it's really going to look like. Now we have free software to do this. For instance, I use LibreOffice some of the time. Sometimes it's faster than writing something to be formatted with a text formatter and then formatting it. But when I use LibreOffice, I always miss the commands and facilities, the editing facilities of Emacs. I'd like to have them both together, something with the text formatting capabilities of LibreOffice or even better of TeX, but the editing commands and facilities of Emacs. This would be a big job, but it can be made up of a lot of medium-sized jobs. If people start working on those medium-sized jobs, then in a number of years we'll have something absolutely amazing.
[00:12:55.460] But one thing I think we really shouldn't have is the equivalent of a modern web browser. The World Wide Web started out in the 1990s in a much simpler form, where a web page described its contents, and the web browser laid them out, and the user could parameterize how to lay out various kinds of situations. This was not only convenient for users who wanted to control things and understand things, it was also freedom-respecting because the layout was done by your browser. If you had a free browser, you were in control, even though the browser was complicated already. But starting around two decades ago, there was an explosion in the complexity of browsers as companies wanted to have more and more control over exactly what would appear on a user's screen. So they invented lots of features to control that, features where the user couldn't really customize how something would actually appear because the whole point was that the company could control that. And JavaScript was sort of the ultimate level of "the company controls everything." Because of this, going beyond the simple level of web page formatting features in Emacs is basically heading down a path that leads to subjugation. It's a path that we need to stay away from. It's a path to an unjust world of computing that you can easily see around you. Web browsers nowadays are designed to display ads that you may not want to see. They're designed for DRM. They're designed for companies to snoop on you in unobvious ways. And all of that we should protect ourselves from, protect our users from.
[00:15:31.300] So I hope that some of you will be enthusiastic about some of these changes, especially towards editing formatted text. If you want to get involved, we have a development discussion list called emacs-devel@gnu.org. You can join that. You can also, if you get interested in working on a package and you're not an experienced Emacs Lisp developer, it's a very good idea to look for an experienced developer to talk with. Make sure you can write programs in Emacs Lisp first. It's not useful to take up the expert’s time learning that. You can still learn it from the introduction. But after that, when it's a matter of how to design your favorite package, do have a discussion with developers. They'll give you design ideas that will help you make a package that we put into Emacs. Now it's time for questions.
Captioner: anush
Questions or comments? Please e-mail emacsconf-org-private@gnu.org
CATEGORY: