The Emacsen family, the design of an Emacs and the importance of Lisp

Fermin (he/him) - https://codeberg.org/sasanidas

Format: 19-min talk; Q&A: BigBlueButton conference room
Status: TO_INDEX_QA

Talk

00:00.000 Introduction 00:17.000 Why Lisp matters 01:26.640 Why Emacs Lisp was chosen 02:54.841 Other "Emacsen" 03:38.581 Why not Common Lisp? 06:39.120 Common Lisp is still not dead or is always dead 08:30.080 Lem is a nice Emacsen implementation 08:58.260 Why not just use GNU Emacs? 10:31.080 Why Lem 14:03.080 Similarities and differences 15:49.600 Demo

Duration: 18:28 minutes

Q&A

Listen to just the audio:
Duration: 1:08:14 minutes

Description

Help wanted: Q&A could be indexed with chapter markers

The Q&A session for this talk does not have chapter markers yet. Would you like to help? See help with chapter markers for more details. You can use the vidid="emacsen-qanda" if adding the markers to this wiki page, or e-mail your chapter notes to emacsconf-submit@gnu.org.

(If you want to work on this and you think it might take you a while, you can reserve this task by editing the page and adding volunteer="your-name date" or by e-mailing emacsconf-submit@gnu.org.)

This talk is about the design of an Emacs the Emacsen editors, GNU Emacs, Emacs Lisp and the extensibility of GNU Emacs (and Lem as an example of Common Lisp). I want to focus the talk about the understand of the concept of Emacs but with concrete examples (GNU Emacs and Lem), also highlight some historical Emacsen and how the family of editors is doing today.

About the speaker:

I'm Fermin MF, I'm a Software Engineer from Spain with interest in Emacsy editors.

Discussion

Questions and answers

  • Q: How large is the LEM community? How big is the chance of it surviving long term?
    • A:
  • Q:Are there any Lisp machine capabilities you are trying to revive that GNU Emacs lacks?  The typed objects capability in the editor as an example.
    • A:
  • Q: What about using Lem for things other than coding common lisp, dired magit "notes org mode dentoe org roam" emms pdf tools shell mode?
    • A:
  • Q:What about using this in conjunction with Nyxt the common lisp; web browser
    • A:
  • Q: What is the license of LEM?
    • A:
  • Q: Big question, I realize, but: How far is LEM from being able to run Elisp libraries, e.g. imagine if Magit could "just work" in LEM?
    • A:
  • Q: How are LEM buffers designed? Similar to Emacs? TextGrid with Properties? Or something other? I just tried again to give Emacs more interactivity & am thinking if there is a possible display future for the Emacsen.
  • Q: What are the things or experances that lem gives you that are nicer than Emacs? or make you happy using both?
    • A:
  • Q: (Forgive me if you answered this already.)  Do you think Lem will continue to have a lot of Japanese documentation, or is there a chance it will move entirely to English?  (IMHO having much of the docs in Japanese will hold back the project.)
    • A: 

Transcript

[00:00:00.000] Introduction

Hello, my name is Fermin. Today, I'm going to talk about the Emacsen family, the design of an Emacs, and the importance of Lisp. So we're going to talk about Lisp. I want to start from the end.

[00:00:17.000] Why Lisp matters

The first question I want to ask is why I think Lisp matters. When I'm talking about Lisp here, I'm talking about the idea of Lisp, so the family of languages that are Lisp. But given that there's no formal specification of Lisp, so the opinion might vary. I will expect that Lisp, most of the Lisp have these kind of features. The first one is homoiconic: the code is data, basically. They also have a REPL: read-eval-print loop. That is very powerful and can help in development. Also, I think a good Lisp should have a powerful macro system. I'm good with compile-time macros, but read-time is also interesting. There's a lot of Lisp that you can choose. There's the main three ones, of course, with Scheme, Common Lisp, and Clojure. Scheme by Guile, Common Lisp by Common Lisp, and Clojure by Clojure or ClojureScript.

[00:01:26.640] Why Emacs Lisp was chosen

So let's talk about Emacs Lisp. I didn't mention Emacs Lisp. I'm going to talk about why Emacs Lisp was chosen for an Emacs editor. We're going to explore this kind of design of the Emacs. And Emacs Lisp is the main language of it. Why? Given that there were a few alternatives at the time, why Emacs Lisp was chosen? So RMS, Richard Stallman, needed a Lisp, and there wasn't one available at the time. Keep in mind, this was the early 80s. Stallman was writing at that point the GCC, I think, and he was writing the core components of what is going to become GNU. He needed an editor. He wanted Lisp. He wanted Emacs. So he wrote Emacs Lisp. So at that time, the functionality was more important than "perfection." What I mean [by] "perfection" is: we programmers sometimes like to make everything good or very, very good when sometimes, indeed, it's more important that it works to do the task that it should. And it's not a bad language. It's not that bad. At that time, it was mostly nice. Today, it's good enough, I think.

[00:11:00.040] to [do] day-to-day programming in a very good experience. This is not like--I want to clarify this because some people bring some exploratory projects. This is not that one. This is finished. Well, finished in the way that you can use it. It's not, you know, have everything in place. So let's continue. It's written 100% in Common Lisp. I say this because Emacs is not 100% in Emacs Lisp. You have to modify the C code, I think, well, if you... You don't have to, but if you want to change the internals, you do. I think that given that Lem does not care about the implementation of the language itself-- so for example, Lem doesn't have to deal with how Common Lisp works, it just used the language, right? It's on top of the language. You can say that. Emacs Lisp is Emacs and Emacs Lisp, so you have to, you have both in the same place, which is, well, it's a double-edged sword, right? Then you have the both--similar to Emacs-- you have ncurses and SDL2 frontends. One is terminal-based and the other is graphical using the SDL2 library, which you can do a lot of crazy things. Of course, it's meant to program games and stuff, but Lem uses, and it works fairly well. You can program games if you want. Not that you need to or anything, but we have Tetris. So there's that. Also, separate front-end interface. So like I said, you have two, but you can create more. In the past, had an electron one, but it got abandoned for obvious reasons, I think. Sorry. This idea is taken from Neovim that had a lot of frontends. In fact, we don't have that many, but not that many people we have two. That works fairly well. We have superb development experience thanks to SLIME. So we have Micro, which is a SLIME version for Lem, basically. SLIME is awesome and Micro is also awesome. We have a very strong development experience that we don't have for a Lisp, which I think is very important. If you want someone to develop packages or to use your tool, your Emacs at least, you need to have a very good development experience, which enhance the extensions for the editor. So we have also Vim-like integration. This for me was mostly mandatory because I'm an evil-mode user, and I think it's really good. Because evil-mode is very good and the VMode, which it's called, even though it's more like Vim mode, it's called VMode. It's written by Fukamachi-san and it's really good. So yeah, that's the thing that I think Lem brings to the table and that's really interesting.

[00:14:03.080] Similarities and differences

So I'm going to do a small demo of Lem, a Emacs example. First, the similarities, the nomenclature is very similar: modes, buffers, commands... The commands are very similar in nature. It was written with GNU Emacs in mind to mimic a lot of things. I think GNU Emacs is the best Emacs implementation in that way. So why not just take what is working, right? I have similar command, but flexible to add other default ones. It's not like Emacs that you have Emacs commands. Lem has Emacs command by default, but you can easily change that with other default ones, right? It's like, you can think of it like a major mode, right? Well, more like a global mode, sorry. That's a global mode of Emacs commands, or something like that. In general, the feeling is really close. So you will tell that it's really close to how both work, similar commands, and that shows. Differences, Common Lisp is not Emacs Lisp, it's similar in the surface. So it uses defun, you know, have parentheses and yada, yada, but it's not the same language, really, and sometimes you will find that the differences are substantial. The internals are completely different, of course, nothing, well, completely. They have a buffer implementation and other things, but in general, yeah, aside from that, it's completely different. And it's true that GNU Emacs has a better documentation tutorial. So GNU Emacs for me, I think it's one of the best-documented software ever. We're trying to go there, but we're still not there.

[00:15:49.600] Demo

Let's do the demo. So to open Lem, you compile it, and then you have it available, and you open Lem. As you can see, we have the temporary buffer. On the top left is the mode-- not mode, the beam, insert, normal, visual. This is the V mode, right? In the top right corner, we have fundamental, which is the major mode, then paredit, which is like the minor mode, but you know, this is like the paredit for Emacs. In the top left buffer, you have the current buffer. So let's open the... Emacs, we all know how to do this. This is a command, like explore this command, like open-init-file. This opens the init file, which is in this directory, in ~/.lem/init.lisp. As you can see, this is very similar, right? You define a command, which is not interactive, and then you get the buffer, right? This is a... So my personal command... Let's go to the one that I just opened. Init file, right? So this is a command that I did, which is find-file. This is very similar to [??], but just find-file. As you can see, very similar. This is the way that you program in Lem. This is the major mode, which is Lisp, that we're seeing at the top, right? And we can connect if we slime-self-connect. This is the prompt. This is the REPL. So if we... Keep in mind that this is Common Lisp, so this has different things. So we have to go to the Lem package, which is very important. This has namespaces, right? It's not the same. And we can say, okay, current-buffer. We get the buffer. We can explore everything that is in it, right? We have all this stuff. This is... If you're familiar with SLIME or Sly, this is it. It's just that we can say, buffer, I think it's buffer-name. Yes. And we can take this, and then we'll give you the name. So as you can see, the development experience is really powerful. We can also lisp-scratch, which transform... basically apply the major mode of Lisp to the temporary buffer. This is very similar to Emacs. Let's go back to the theme. I think that's it. Thank you all very much for listening to me. I think I point out the Emacsen family is really interesting. Lisp is really good, and GNU Emacs is really good, and I think Lem is also pretty awesome. So thank you all very much. I'll be answering the question now. And happy hacking.

Captioner: sachac

Q&A transcript (unedited)

Fermin, for the great talk. People have questions, please post them on the pad or the IRC as well and we'll take them up. to answer questions. Let's see. Yep. clarify anything or fix any URLs or such, you're always welcome to do that either like on the Wiki page, or if you like email any of the organizers, they should be able to help with that as well. Yeah, not a big deal really, if you look it up. Yeah, that's really better. Thank you very much. Checking, no questions. Very good to be in touch. button chat. Is LEM an acronym? I think it is, but I never remember. The complete name is like something... It's also a circle, like, you know, a self-referencing, you know, recursive name. I never remember it, sorry. It's like... Yeah, someone... Okay, someone asked about the DEM community, how big it is. So I don't remember, to answer the question, I don't remember the acronym, but it is an acronym. I just never... And it's not written anywhere, I think, or someone... I never check it. So I... whole large, does Leia have a package manager? We do have a package manager, funnily enough. We use the QuickLisp infrastructure to get packages, so it's very easy to install packages. So basically, we don't have a package manager as in Emacs, half a packet.l. We're using the same common list infrastructure to provide the different packages. We also have a talk with the Ultralisp, which is like a, you know, QuickLisp is like, you can think quickly of Melpa. Ultralisp is like a fast Melpa, very fast Melpa, that every, I think every day you can get a package from them. And We have a tag system that you can submit a package and get a tag, and Theory can download those packages with the lem tag. So the thing is, it's not yet, it doesn't have a user interface to install packages. Still, it's 2 external packages. For now, imagine this is like the early Emacs, right? Everything is going to the core for now, because we need that functionality. In the future, we probably will split it up way more. But let me first answer a question in the other part. How large is the LEN community? Hope it's a chance of survival long term. So we are a very small community, mostly because Sasaki-san, the main developers of the community, are from Japan and some of them, or most of them, don't know English. At the beginning, LEM was a very Japanese-centric tooling because barrier of language, most of the users are from Japan. So different communities. And also, I don't know why, but the main maintainer, which is Asaki-san, very good guy and a very, very talented developer. He doesn't like to, you know, at first the project was all in Japanese, so he doesn't care if someone uses the project or not. He's more focused on the, I guess, quality of the features of it. So that creates a problem that doesn't really mind the community. So the community doesn't mind in a good way. It's to focus more on technicality rather than the user, which I mean, I cannot blame him. It's very hard work to build an Emacs and editor from scratch. It's not a trivial task. So yeah, we're a very small community. But I think the chance of survival is very good because LEM is written in ANSI Common Lisp, so it should be used in any... Well, it works in a lot of Common Lisp implementation. For people who don't know, Common Lisp is a language that was standardized in the 94. I explained that in the talk, but I'll say it again. So, if Common Lisp exists, in theory, LEM should also exist. And also if nCursor doesn't break or doesn't stop to exist, which is even less likely. So that's the main idea. And you can use LEM for very good Common Lisp development already. If Common Lisp doesn't change that much, it should disappear. We are not bound to any company or any... Even Sasaki-san, God forbid, disappears instantaneously. There are a few people, me included, that know very well the code base and we can continue the development. So it's not like 1, there's no one-man project. Maybe a four-man project or 5, but not 1. Okay, I'll answer the 1 in the chat, on the blue button. Is it best to learn Common Lisp before learning to use LEM? I think this is similar to Emacs and EmacLisp, right? Should you use EmacLisp before using Emacs? Doesn't make too much sense, right? You see Emacs and then you go learning Common Lisp. I think it's the same, sorry, EmacsLisp. And it's the same with LEM. You can start using LEM with a non-common Lisp, which is fine. You can use it to edit your things. It's like an editor. But like Emacs, LEM puts a lot of focus on extensibility. So it's very probable that you will learn how to write Common Lisp. I have to say that a lot of people that use LEM, well, me and most of the people, come from Emacs. So if you come from Emacs and you know a little bit of Emac Lisp, Common Lisp is like an uncle or cousin distance that shares some similarities. So you will... Well, it's not going to be that. I can show... Sorry about that. For example, I show that in the... I can show... So the... It's not that different from Emacs regarding configuration. So for example, this command doesn't exist on LEM. And Sasaki-san didn't want to copy one-to-one the command from Emacs, the airgrip, the cursor grip command of Emacs. And I said, okay, then I'm going to implement it myself. And it's something like this, which is you will do something similar to Emacs, right? This will be like things at point symbol or something like that. And then you have a prompt, very prompt for directory with Emacs would be something similar. And then you then launch grep with the command that you want. This is not that far from Emacs, this, really. If you don't know neither of those, you can still use LEM, though as with Emacs, extensibility will be, well, you couldn't extend it if you don't know combo disp. Should I answer the question on the etherpad writing it at the same time? You can just answer here on stream, Okay. Are there any Lisp machine capabilities you're trying to provide that GNU image lacks? The type objects capability in the editor, as an example. I mean, there were a few discussions about the Lisp machines and LEM and all the big projects that tries to get some capability of it. But we don't really... We try to improve the development experience for Common Lisp and for LEM, imitating a lot of things that the Lisp machine had. I'm going to try to do a thing that I don't know if it's going to work. So to explain this, let's see. I'm going to recompile them now live. Let's see how it works. And compiling the, yes, it doesn't work. OK. What if I do? No, it doesn't work. OK. I was trying to compile the SDL2, but I do have the codebase modifier. I should be able to compile this. Oh, that was really bad. What about example? I have the code base, so let me check. I'm going to do this. Oh, yeah, I have this modified. I stash this. OK. I have this modified. Now it should work. OK. Sorry. I was going to show the writing capabilities of it, similar to the Lisp machine of navigating of classes. So the answer of that question is, not really. We don't try to emulate this machine, nor any like of that. But yeah. Let me, I'm going to try to, okay, now I'm back at them. Okay. So what about using them for things other than common, common, that markets? Okay. So yes, we do have, so I'm going to show the code base a little bit. Like I said before, we don't have yet too much external packages because of the size of the community. I have a question. Go ahead, you can write it, Michael. Yeah. So, yes, as you can see here, this is almost all, or 99% of the major modes we have. We use the same terminology of SkinnyMemax in that way. For example, the C mode, if you go inside, you see that this is the fine major mode. So in that regard, it's very similar to Emacs. And we have something called a JIT, which is like a maggot. And you can edit files. You can use not only for common lists. In my configuration, which is written, I will post that later, but if you go to my code burg you can see my configuration which is, which I do have. So for example you can use it for a scheme. We have a swank server. This is the configuration to use it. You can use it for JavaScript because we have a native LSP client written in. And we have Dired. Yeah, this is Dired. We have Dired indeed. No, it's not Dired, you know. It's called directory. Sasaki-san, which is the main maintainer, doesn't like to copy one-to-one Emacs names, but we are the same. We also have projects, which is like projectile. So, you know, they're very similar but not the same. We also have a VI configuration, as you can see. I'm using the VI commands and stuff, and it's very good. I will say not as good as an evil because it still needs some polish, but it's getting there. So we can also program in JavaScript and a lot of LSP things, and Elixir, which was recently added by myself. And yeah, it's very fun to add new modes. OK, what else next? What about user-level things other than coding? What about using this in conjunction with Nix? Oh, so there's a big, so like I said before, there were like an issue that 3 main common list project were talking, some of the users. So the 3 main projects are LEM, probably, Nixed, and then StamWM, the 3 main, well, 3 big, common list projects that are trying to emulate an Emacs experience in different fields. 1 is Editor, the other 1 is Window Manager, and the 1 is the browser. The problem is that the design of the 3 are very different. So Nix is very focused on the browser. You can connect to Nix. So given that they're both a common list, you can connect to Nix from them and vice versa. And you can send commands and you can, so you have this kind of interoperability with both. But no, you cannot combine both to have 1 LEMNIX. That would be very sick. I would love it. But the effort is just too much. Keep in mind we are a very small community. The LEM, like I said, we are like 345 developers that write packages and answer questions and stuff. Now we need users in that way to test things. So what is the license of LEM? The license of LEM is MAT. We have some components of all the various licenses, but the main 1 is MAT. I didn't choose the license of it. I would highly prefer a more like GPL 1, but like I said I'm not a maintainer, so the license is MAT. This question, I realize, how far is LEM from being able to remove a list libraries? OK, that's a big question indeed. And Funny enough, 2 years ago in the EmacsConf, I talk about this, not with LEM, but with Common Lisp and Emacs Lisp in general. So I'm not the only 1 thinking about this. In fact, I'm talking with someone that is trying to write like a Emacs Lisp interpreter to work with them. The thing is that Emaclist libraries, so the API is just very different. That's the main problem. That's really the problem. You can, so you can, let me see. So, you can have an Emacs list buffer of LEM. This is an Emacs list rebel. I wrote an LRSP client so you can connect to Emacs and send things and stuff. So you're friends that we share stuff. But having a complete Emacless implementation with LEM and work with both API will be a huge work. Very like, it's even if they share very similar thing, in fact, API in some places is very similar. Down the line infrastructure, so the code is, so it's completely different. It will be very hard. We do have a clone of maggot that works, more or less. Well, it does work, but maggot's just better. But it's getting there. So like I said, we're trying to, not to copy one-to-one, but to adapting each tool to LEM. How are LEM buffer designs similar to Emacs? So yeah, that would be, so how a blend buffer design, similar to Emacs. So similar in what way, actually with properties. I think that you've seen, so you do have like a font lock, different kind of properties, but it's not exactly how Emac does it with overlays and stuff. You can, so if you're very interested, I don't want to go too much deep into the, let me go to, I don't want to go too much deep into the technicality of things now, but you can go. So LEM is written 100% in Common Lisp. So if you know Common Lisp, you can go to buffer. You can check all the codes here. Always we have, we also have this, which is like StreamX. Sorry to that, I don't. But yeah, So you can see. So yeah, if you go to the code base, maybe some of you can check this problem. Well, not problem, but yeah. That's this Japanese comment. You can see here why it's very, you have to translate and stuff, which is sometimes a little bit annoying. But yeah, some of them are in English. So this play is not the same. So if you're interested, you can go to the buffer and check it out for yourself. But I think it uses the overlay in a different way. So the implementation is different that way. Oh, experiences that I can show you? Just like you show you. Any marks? Okay, very interesting question. What are the things... So that's interesting. Let me see. So forgive me, you answered this. I talked briefly in the talk about this, but basically I like Komaldisp, I have the mascot here. think GmagLisp is a very good friend of Common Lisp in the way that Serious Software Analysis is a very good uncle. Let me answer first the 1. So I like to extend it in Common Lisp. I like the Common Lisp libraries. And I think them have a better design in terms of its 1 language, which I think is a nice strength. Like, 1 of the things that put me off when I was using Emacs, I love to extend the editor and to go inside and stuff. And 1 of the things that I'm not a big fan of C. If you're a fan of C, you will be very pleasant with finding C stuff, but I don't. So when I'm trying to hack an Emacs and go inside the things, I will control C code. That's not that interactive as the Emaclist 1, and that would be like a fuzzball for me. I was always dreaming about that stuff, having like everything in 1 language. The thing that LEM does to me is like it allows me to extend the editor to modify also, to modify in Common Lisp. Also, I like the language and technology. It's a bold thing, right? It's a world language that I love, and Emacs that I love. Emacs, I'm a big fan of, or a user of GNU Emacs. And LEM is like Emacs plus Common Lisp, but with a different design. I don't want to, It's not a clone. I want to get this very clear that LEM is not a clone of Emacs. The sign is very different in a lot of ways. But it's very inspired, and that cannot be denied. I think we're like 15 minutes into the lunch break, but you're welcome to continue answering questions. But if anyone on the stream or folks want to go grab lunch, feel free to do that. I'm probably going to do that as well. But yeah, we can either continue keeping this on the stream, or if people would like to come join here on BigBlueButton and talk to Fermin, like folks have already done that, yeah, you're welcome to. Thank you. Thank you, Vitaliy. Cheers. Cheers. So finishing the answer to the question, I think LEM does tries to fix some Emacs problems, can we fix problems regarding the internal API, which makes sense, right? Emacs have like 40 years, which is a lot. And yeah, which is, that's what makes me happy. I use both now. I use Maggis and Emacs for some languages and then I use LEM for Common Lisp and other languages. You can also use LEM for EmacLisp, which makes LEM the second best editor for EmacLisp. It was a funny thing to do. OK, so do you think LEM will continue to have a lot of Japanese documentation? So there's not that many Japanese documentation, really. So there's a few comments here and there, but it's not full. We have a web page with a lot of documentation in English. So you can take a look at that. But we do have to improve the documentation and translate it to English. Sasaki-san is up to it, but he just doesn't feel that comfortable translating it himself. So yeah. Yeah, it's neat that Wem even exists, because there's always chatter on the Emacs mailing list to rewrite Emacs and some other language. And to see that it's already to see that I mean, you have an implementation sitting there and, and the thing I was wondering while I was listening in on the, on the Q and A was do you have Dured? Do you have Maggot? And some, somebody else wrote that question into, into Etherpad. But I was happy to see that you have Dured or something like it implemented. Because I think that's like the, for me, that's the most important thing in Emacs because that gets me around in my For me too. so I may try it out sometime, but probably won't be for like 3 or 6 months, because there's always a backlog of other things to try out. And do you use, I think you have bookmarks and registers, I imagine, right? because I don't use it that much. But I think you have something like that. I mean, I don't. There's a few features that I don't know about them because I don't use it much. Some features, I mean. But yeah, I think you have. Let me check. We can check, probably. Things in extensions, just directory. VNXT. Directory mode. So there is. So this is the Tyrant's friend. I won't say clone. Very inspired. like org mode, so... EMMS... Yes, so someone did some MMS. So not MMS, not much. So package for LEM that is now in a pull request, I think. But yeah, no. The thing is I don't use R mode that much. We don't have a heavy R mode user to provide some major mode and stuff. So we don't have that implemented yet. The thing is, my plans for, I do have plans for our mode. They're a little bit evil, but there's plans for it. So I'm planning to use, so rewriting our mode is a big task that I don't want to do. So I'm going to use Emacs for our mode in 2.11. I wrote a recipe, no, a remote procedural RPC that I'm using for the Red Bull and stuff. And I'm planning to have an Emacs Puppet to provide me the functionality for Org Mode. I like to note more than Org Roam just because I feel Org Mode is great and all, but if all my notes are in it, I kind of feel trapped by it. I did the talk journaling in KOutline, and I like that package better for some things and it's like if I want to put like the tags on PDF file names and so it's like Yeah, it's great and all but it's also Is that part of the motivation of wanting to use lamb is so you feel less entrapped by emacs No, I will say I don't no. To be fair. The thing is I don't use Hormel that much. That's just the reality. Org Mode for me is a very good markup language, but not that much really. I know that Org Mode has a lot of people and it's used by a lot of people. And there's very interesting packages. plain text versus latex then? functionality. I think if you take that away, you plain or mode versus Markdown, I don't think there's that much difference, if you take the Emacs functionality away. I like the Like, for instance, you have the double square brackets, which is simpler for me to look at, but. I mean, we don't have yet a major mode of R mode, which will be quite trivial. Well, you know, a simple syntax highlights, you know, R mode in LEM, because no 1 wrote it. I mean, that's the way with this project, right? If you need people to be motivated to do that. And with LEM, someone asked about the Japanese. I think they're interested about that. LEM does have a thing, but that's what I we're using another big fan of... I mean, I know that the main people that may use in the future LEM are EMACLIS people. A lot of them. It's very similar. And Sasaki-san and the LEM community mainly uses Discord for chat and stuff. I mean, we do have matrix, and I should connect to it, by the way. But we mainly use Discord, which I don't think is a good thing. I mean, to have the main communication channels, Discord. Because, well, it's Discord. It's a closed source application that is easy for some people, but for some people it's a tailbreak. that very like free software. popular, but as soon as you break out of that mold, all of a sudden it becomes a lot harder. For instance, they don't have... All the third-party clients are unofficial and according to their terms of service they can just can you. Which is not a nice position to be in if you're trying to use it and you wanted to be a moderator using some side tools that weren't Discord. I don't like Discord. and the LEM. Do you have it published somewhere? I'll copy that in the chat. you do like the communication with other programs with Emacs because that's interesting. I'm not writing it from scratch, not that much as a developer. Maybe that's the thing I can learn. yeah. Yeah. If you want to, so I didn't see this 1, this package for the RSP, which make is monthly automatically. integrate Org Mode? Because Org Mode needs to work on. Emacs puppet and to have like a clone buffer from the buffer that you do in LEM and then the command sent into the Emacs hidden buffer and then the changes go back to LEM to change the buffer of LEM. That's my idea. Would be interesting to see what comes from it. It's not, you have to duplicate the information and stuff, which is, oh, by the way, I'm going to pass the Lemington, which is the name of the RSP clone. Sorry, the integration with Emacs, which is LEM with a mustache. thing, where it would open up a slave Emacs, because it was such a performance hog for retrieving all the emails. right? I can, in fact, I'm using that for, I'm already puppeting. Well, not puppeting. I'm already using Maggots. So I have this. Actually, let me copy. I have this, which is usually a little bit, I'm launching the Emacs daemon and then I'm launching Leviton. And then this is the kill and this is the status, which is basically saying, run this and this is this, which is run maggot in this file. If you put it side by side, you will check instantly that this is the buffer directory, LEM home, and then the current file. Because I'm launching it with the file. So buffer directory, which is the directory of the buffer. So I'm already using maggot as a tool outside of LEM, because I really like maggot. And this is very easy to check. Launch Emacs daemon. Okay. And then I go to local projects. Let's go to another 1 that is not LEM. in daemon mode so you don't ever have to restart it or the images, I guess, that LEM has. I will call it, it doesn't have like a demon mode, so you have control separately, but keep in mind that LEM, it's a common list program. So if you use slime or Sly, you can easily connect to them to hack on it. like using it from another computer? I think the same computer, or maybe Sage, but yeah, it's very... if you were using the window... I can't remember the name of the window manager. Or if you were using... What? Yeah, yeah. Or using like stump, calling it from like stump WM or how often do you use that REPL? I connect to a museum, some WM right now, and I use LEM to connect to it, but I was using Emacs before. And you can use Sly or Slime to connect to LEM. So the thing that is in Common List makes it this kind of already out-of-the-box connectivity between different... I've used that before. I've also used, like right now I'm using Sway. I've used Xmonad, DWM. I can't remember the name. But it was like a few years ago. I've been doing some DWM for like the last it's that I was... I don't know. have some unique ideas that weren't necessarily available on like EWM and XMLNAD. But for example, I'll change... So I don't have in this computer, but in my other computer, I change the mod line or bar, top bar, whatever, because the ThunderLVM doesn't only update it when you click, or you do some events or happen 1 minute. So you can see here, this is not changing until I click. I have a quick question for Matthew. So is your talk going to be posted or did you My talk was the K outline for journaling too late for it Sorry, so I came in and I just saw Bob Weiner answering questions So is your talk going to be on the page for your talk? I don't because I had, I hosted it on Mega to give it to them, because when I emailed it, Download and watch it. I'm probably going to post it on YouTube later. I, I had my face record with it, but I never got it edited together in time onto the onto the ether pad or something or onto the wiki then then I can find it and check it out. All right, thanks. Sorry to interrupt your time, Fermin, but I figure we're heavily into the break anyways. FERMIN GENZIERIA-CHAPMANI about all that I mean I'm already doing blasphemy so I think that's oh yeah notes so the thing is then as my point of view, and the point of view probably of Sasaki-san, just a moment, I think, is very focused on an IDE more than a node-taking editor. More like an integrated development environment. So node is like a second thing. So not exactly the main focus. And I know that Emacs does have a very strong community of Ormode users that use Emacs for Ormode, which is the killer feature, 1 of I'll do a feature. I'll do a feature of Emacs. So I'm not the maintainer of porthole. I'm sorry. I did add it to so I don't maintain the remote. I'm sorry, I'll pothole the USB. I'm only using it on the Lamington. I cannot change anything. with your window manager? I do have elsewhere. editor, which I think is really fun. The way I can write, so I wrote a few packages for Soundallium. So 1 of them is Proton, which basically launches like a... So Proton is like this wine thing that Valve you have like a list of, let me check. No, we're just, sorry. This, So these all games are bought by me. They're not pirates in any way. I can use this to to launch it. I also contribute the Dmenu integration into StumwM. So I use Dmenu. So like this, right? You don't know how nice those things are until you start using those. Also I was using RoFi, but... mentioning is that also, being able to use D-Menu, but being able to just have keyboard oriented? Everything fuzzy search narrowed and No tabs no status bars like all of a sudden your mental model on how your computer operates goes through the roof and a lot of Emacs users Know what that is like Especially In conjunction with a window manager? So for me, I tried the Emacs window manager, but it wasn't for me. Having a single thread window manager is scary. And also games and some stuff wasn't working correctly, which it makes sense in some regards, using Emacs for window manager. Oh like it. It's not as bad in practice because The paper cuts you don't like to hit them every day So you make sure So you make sure your Emacs config is a lot nicer and doesn't have those slowdowns. Or you avoid those things. It forces you to make your Emacs config a lot more robust to speed. yeah. The thing, yeah, but still, I don't know, but... great. I'm not a person, like, I don't want to have... Not with LEM or Emacs. I like to have different programs. I don't want to like, I never was in like Emacs or you know, only Emacs. I really love Emacs, GNU Emacs, but only Emacs? No, no, I like my browser, I like my, you know, my Windows Manager, my, you know, I wasn't Emacs only. Emacs is my OS. Some people are, which is good. Different kind of a... I have to say that I come from Vim, like a long time ago. But I come from Vim, so I'm using Evil Mode. And I maybe have this kind of a... Yeah. So regarding Summoner.vm, it's... I like it because it's common Lisp, but it don't have some, this, I removed this. So I'm using another model line because the model line is not great. Everything else is a little bit weird because you have frames similar to Emacs. You have a frame. You have this window, and then there's no nothing here. That was definitely weird. It's also nice to be able to just... Can't you put multiple windows? Can't you duplicate windows? Show the same window in 2 frames? NIGEL Never occurred to me that. I don't know. Never tried that, to be honest. Let me check. No idea. Item? I think so. Because when you try to, at least not in an easy way. When you try to, so if I try to put a window here, let me move it so it, and if I try to like, so it's, yeah, no other window. discord or your browser? Could you open that in both your frames? at least I don't know what configuration you'd have to do to get to be able to do that in XMONAD. I never tried. Maybe you can? No idea. The interesting thing that I never use is that floating windows. Never use floating windows, but normal windows. You know, not. And SoundWM does have a weird support for it. Now it works. But I don't like it. For me, it was a little bit rough, the use of floating windows in SoundWM. I think they're way better now. I think, but yeah, I don't use it so... But there is. like, Emacs doing everything, it's like, you got like Emacs, you got shell, and then you got the gooey Wild West. Yeah. Like, with Emacs, I know, I'll generally get, oh, this is going to be configured in? It's either gonna be shell script, Python or Emacs. Oh wait, no, it's gonna be Emacs. Variable's gonna be written in SecQ, period. but I'd like to, for example, I had to do a, so the automatic installer for, for Debian base, Debian stuff for Linux for, for LEM. I was thinking of doing in bash and I say, I don't want to do it in Bash. So I just did it in SVC and Commodisp, which does have like a scripting feature. You can put a script and it will create your own script. he did a talk on using Common Lisp as a replacement for a shell. I know that he exists. Next, I think it's a main maintainer of Nix, I think he took it down. yeah, he took it down. Machine. I think, somewhere. I remember reading that. So also, I would like to keep separated things in that way to have shell and then Emacs or LEM. Like for Emacs I use Viter. I don't like that it has different, you know. I also don't like my terminal not to be able to click URLs and I like I like my terminal to have history and you know to scroll position copy paste You can do some of that stuff, but you know how that stuff go on the killer ring I kind of view it as like an alternative to shell. terminal, I only use it for navigate, remove stuff, so basic stuff. When I have to like, I don't know, edit something, just open the... find my files. I kind of wish I could do that That would be, I'm sure, nicer. that, right? But you have to configure all of them. Beam users are very aware of those tools. You know, having very good fuzzy finding of files and then all by the terminal. I do have a friend who is a user of the Forbidden Editor, he's good, that does have a lot of small, like fuzzy finding, and so complete commands, and call those images in the terminal, all sorts of crazy stuff. That I think are not overkill, but I mean, if you want to use it, go ahead. So yeah. The thing is that, So trickling back a little bit to LEM, I think an interesting thought that I have about LEM and I can do Emacs. Not now, because LEM is a very small, like literally people, at least developers and users, I don't know, maybe 10 less. But people may think, split the community, right? That's the main thing that should come to my mind, split the community, maybe you, because that's true. I mean, I'm not developing that much in Nui MacLisp because I'm developing them. That's not that I'm a force that you might think exists or anything, but you know, you're splitting a very small community. Not that LEM wants to do that or anything, or will be able to in any way, but you know what I mean. I thought about that, And I think it's an interesting concern. But that concern also stops innovation in some way. of how many EMAX talks are related to knowledge management and not all and like for instance denote and Orgrim don't really work together all that well they split the community so to say I don't think they make it weaker at all, though. I think you were saying competition is good, but yeah, competition is good. I want to put it in the... But, you know, I'm doing the devil's advocate this regard. Like someone wants to like say something that maybe, you know, because some people still remember the Emacs versus X Emacs thing in the past, you know, that the split of the and That was good in some way but also bad in others like the compatibility was a little bit of a hell You know at the end Emacs failed, no Emacs But at that time it wasn't that clear and some people like it wasn't there. And I can understand that kind of a feeling. going Like you're on a hill and you want to goes down and up. It doesn't mean that even if you know you're going down, it doesn't mean that it was a mistake. interesting thing that I want to envision in the future, if I have time or someone wants to help me with, is I want them to have different language for extension, different Lisp for extension, not only common Lisp, but Scheme closure. And maybe not EmacLisp probably, tried to add Guile support to, but Guile is not scheme. Well, it's kind of scheme, but it's not all schemes, which is, you know, and it was just to replace EmacLisp with Gile. You have 2 both. It was similar in that way, but the thing is, Common Lisp does have a lot of interesting things. So someone wrote a closure in Common Lisp. Which is called Cloture. Someone wrote, well it's on the way but it's getting there, a standard scheme in Common Lisp. So to add support to LEM, will be as easy as import package, and you have, And if that language, which usually does, supports very well interaction between the host language and the language that tries to provide, you will mostly automatically have new language for the editor. would be like using Next to scrape websites, download CSV bank statements, integrating with like password managers and or using... yeah you could still do with yeah I other options would be Selenium, JavaScript, Next already gives you the REPL for that. Or when you had that Ambryvar talk, when he, I don't know if you watched it, but when you use a shell and a command takes takes a while It just automatically takes you back into your shell and says I'll just let this run in the background or being able to more easily run commands in parallel. he. Because 1 was using the repl in place of the shell is 1 of the things in there was if, let's say you were compiling a program, that takes a while. If it took longer than like 3 seconds or something along those lines, it would kick you back into the shell and say, oh, we're waiting for this program and then it had back reference support. So you could say, Oh, app search for this program. And then with the, with the shell, I, when I want to search, I'll then grep through that list to narrow it down even further, but I do a whole new search. It just says, oh, just grep through what I already searched. Just grep through the results of the command that's 3 commands ago. in my compilation output, for the errors. I was looking for it. You know, the... Yeah, I want to check the, No, this is not what I meant. I cannot find the... I was trying to find like a unit shell for interface with for common Lisp? Is that the thing? no longer website. Website. Maybe this 1. I cannot find it. it too. CH. Oh, I was looking at the clesh. Clish, so the, let's check for it. The other 1 is shell and camel. This 1. Oh, interesting. you use those disk images, LISP images, to have some of your common LISP utilities or programming libraries that you utilize in tandem with your REPL. So you can easily pull up a more featureful or a REPL that has more tools in it than by default. yeah, I mean, that will be, it will be fairly, no, no, easy. Well, easy, but not, But this can be integrated into LEM probably. Very, you know, not that easy because you have to change the few things. But this can be, you know. Well, 1 of the things that was in the talk, 1 of the main ideas was, let's just, rather than trying to make the shell closer to a REPL, let's make a REPL closer to a shell, make it to where we can easily run Linux programs in it, and then use the rest of the REPL goodness, make it to where parentheses are easy to use, like paraedit, And then all of a sudden you have a nicer shell. Not really shell, but. It's Leo from the general track. We are about to go back live on the development track, so you can continue the discussion. You know, we are recording everything and you seem to be having a great amount of fun to issue the need for lunch, at least for the people in the US. I just want to let you know, in 2 minutes' time, we will be moving back to the rest of the talk for the afternoon, but feel free to stay in a room and keep discussing. All right? so if you have your watch synchronized at 7 sharps, so in 2 minutes, it'll cut off. Yeah. Interesting stuff indeed. The 1 that's in that webpage, the FOSDEM 1. I in fact saw him live in the FOSDEM 2020. So we him is here in well here in Europe here in Brussels like 3 hours away or 2 hours away in plane from where I am. with, you have some of they're like, oh, I want to visit all the corners of the US in a couple of days. And it's like, No, US is the size of Europe. You don't... It's huge. And it's like 6 hours different from coast to coast, something like that. on the freeway, on the best roads that you possibly can, not taking... So the thing that I try to do also with LEM is to move my workflow from LEM to Emax, so for Emax to LEM, use it more. And I hope to, we still have a long way to go in terms of usability, in terms of other things, because we need more power. So This is also my attempt to do some publicity to the Blend project itself, to need to add more users, to be willing to try and to fail trying, because we still have some rough edges. Yeah, just trying to do that, which is, and I apologize to the Emaclist community, which I'm part of, but I don't want to like, disencourage the use of getting Emacs anyway. I think both are awesome. I want to anyone to get a real impression. you have a very powerful name. about. I don't personally, but I'm going to watch the EMMS talk. That's something that I don't really use too much on my Emacs config. So I'm going to let you go. I'm going to maybe watch the garbage collector talk, which is interesting. So thank you all very much. I'm gonna go. Thanks for the questions and all that. I think I hope I answered correctly people sharing interesting talks. the Emacs conf and to watch me. So thank you all very much. I'm going to go do that.

Questions or comments? Please e-mail emacsconf-org-private@gnu.org