[[!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"]] # 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 - - (regarding reports of attacks against him) - "Free Software": A similar point of view related to contributing to gated 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.  - 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 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 ? (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. [[!inline pages="internal(2022/info/rms-after)" raw="yes"]] [[!inline pages="internal(2022/info/rms-nav)" raw="yes"]] [[!taglink CATEGORY:]]