summaryrefslogblamecommitdiffstats
path: root/2022/talks/rms.md
blob: a78c1d993b8fe38bda0abcb7cc3a75fc720e8b08 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                               




                                                                                                     
                               
 


                                                            
                                                                                                                                                                                                                                                                                                                                                                       
 





                                                                        
                                                                    
                                                       


                                                                   





                                                                       
                                                                  
                                                     
                        




                                                                    
                                                                     





                                                                        
                                                              








                                                                        
                                                                    
                                                                 
                                                               




                                                                        
                                                             
                                                                       
                                                                       


                                                                      
                                                                       


                                                                       
                                                                       





                                                                      
                                                                       




                                                                       
                                                                      


                                                                        
                                                                    
                                         
                                 


                                                                       
                                                                     



                                                                       
                                                               

                                                                         
                                                                       






                                                                        
                                                                     












                                                                        
                                                                    





                                                                        
                                                                    
                                                                      
                                                                    


                                                                    


                                                                     







                                                                         

                                                                      








                                                                        
                                                                    
                                                                     
                                                                   
                                                                  
                                                                        


                                                                        
                                                                       













                                                                        
                                                                  
                                                                    
                                                                      

                                                                      
                                                                      
                                                                      
                                                                    




















                                                                        
                                                                   

                                                                        
                                                                  
                                                                    
                                                                   
                                                                    
                                                                   






                                                                     
                                                                
                                                                        
                                                               










                                                                        
                                                                     




                                                                       
                                                                     

                                                                         
                                                                

                                                                     
                                                                     


                                                                        
                                                                    
                                           
                                                                     
                                                                   

                                                                       
                                                                       
                                                                      

                                                                       
                                                                

                                                                        
                                                                       

                                                               
                                                                  
                                                                       
                                                                     


                                                                        
                                                                       
                                                           
                                                                   



                                                                        
                                                                    
                                                                     
                                                                  



                                                                       
                                                                      






                                                                        
                                                                   
                                                                        
                                                                    
                                               
                                                                       

                                             





                                                                                                                                                                                                                                                                  



































                                                                                    
 


                                                                                      
                                                                                               
 



                                                           
[[!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 played [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. - 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 / .. / <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 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 :D

- 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?](http://curious.galthub.com/blog/2022-12-04/)
- [RMS On What He Wants and Doesn’t Want in Emacs](https://irreal.org/blog/?p=11013)
- <https://www.reddit.com/r/emacs/comments/zktblg/emacsconf_2022_what_id_like_to_see_in_emacs/>

[[!inline pages="internal(2022/info/rms-after)" raw="yes"]]

[[!inline pages="internal(2022/info/rms-nav)" raw="yes"]]

[[!taglink CATEGORY:]]