[[!meta title="What I'd like to see in Emacs"]]
[[!meta copyright="Copyright © 2022 Richard M. Stallman"]]
[[!inline pages="internal(2022/info/rms-nav)" raw="yes"]]
<!-- Initially generated with emacsconf-generate-talk-page and then left alone for manual editing -->
<!-- You can manually edit this file to update the abstract, add links, etc. --->
# What I'd like to see in Emacs
Richard M. Stallman
[[!inline pages="internal(2022/info/rms-before)" raw="yes"]]
We will play [Richard Stallman's 2014 TEDx video: "Free Sofware, Free Society"](https://www.fsf.org/blogs/rms/20140407-geneva-tedx-talk-free-software-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. Slides and subtitles in multiple languages are available at the link above. - EmacsConf organizers
Reactions:
- [Why do we hack?](http://curious.galthub.com/blog/2022-12-04/)
# 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 / .. / <transcriber lost the thread
about here [lyrics available at
<https://stallman.org/doggerel.html#IveBeenAnsweringMyEmail>]
- 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.
- 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](<https://texmacs.org>)? 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 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 :D
- I still would love to see GNU/Hurd completed in my lifetime
- Emacs 30 support for interoperation between libreoffice suite confirmed?? PogChamp
[[!inline pages="internal(2022/info/rms-after)" raw="yes"]]
[[!inline pages="internal(2022/info/rms-nav)" raw="yes"]]
[[!taglink CATEGORY:]]