Emacs core development: how it works
Stefan Kangas
Work in progress: main talk does not have captions (Volunteered: jchelary 2024-01-10)
This talk does not have captions yet. Would you like to help caption this talk? You may be able to start with these autogenerated captions.
Format: 68-min talk ; Q&A: BigBlueButton conference room
Status: Q&A to be extracted from the room recordings
Description
- Why it is fun and exciting to contribute to Emacs
- We have easy bugs that anyone can fix, in random packages
- And extremely hard ones for experts in things like garbage collection, and compilers
- We are not scary, in fact working to build a welcoming culture.
- The nature of a public list
- Don't listen to random people being negative or hostile
- No response is not necessarily a bad thing
- Cultural aspects of emacs-devel vs GitHub
- How to behave (be polite, etc.)
- Email vs forge, help wanted.
- Why copyright assignment
- Plans for Emacs 30 (maybe) - needs coordinating with Eli
If I have more time, I'd like to cover more things, for example:
- GNU ELPA vs NonGNU ELPA - why and how
- Our plans for GNU ELPA going forward (bundle stuff in tarballs)
- The future of Emacs: a vision
Basically, I want to do everything I can to inspire people to join core development and to lower the barrier to participating. In effect trying to work on "bridging the gap" that we have identified exists between emacs-devel and the community.
About the speaker:
Stefan Kangas is one of the Emacs core maintainers.
Discussion
Questions and answers
- Q:Can you tell us some about your background with Emacs development
and programming in general (your professional work possibly)?
- A: studied CompSci at university. started programming on a Commodore 64, then C, Perl, and so on
- Q: Do you think that one day, there will be a "native" graphical
web browser in Emacs or is it kind of against its philosophy and
architecture? So will we stick just with EWW and EAF or similar
workaround tricks?
- A: Proper HTML rendering in Emacs is a dream right now
- Q: Emacs development and communication still is very much focused on
E-Mail mailing lists. I like this. But what do you think about
introducing other channels for talking to users? E.g., the Emacs
project/ community could set up a Mastodon instance of its own etc.
- A:
- Q: What are some features or packages you'd like to see developed
by the community?
- A: Some of the things that Stefan would like to see happen right
now
- treesitter: improving and working on new modes
- refactoring capabilities in Emacs
- A: Some of the things that Stefan would like to see happen right
now
- Q: What is the hardest decision being made within Emacs-dev for last
three years?
- A:
- Q: Any plans to integrate EXWM into core? Emacs is a really good WM.
- A:
- Q: Do you think it is a good idea to choose Org-mode for writing
documentation instead of Texinfo?
- A
- Q: What do you plan to work on in Emacs core in the future?
- A:
- Q: What do you use Emacs for in your life, other than working on
Emacs itself?
- A: Programming, obviously (Stefan works as a programmer). org-mode (including to prepare this talk), for productivity, rss reader, emails.
- Q: What could we do in order to make Emacs more attractive for
younger users?
- A:
- Q: How are we going to make sure that the cool idea is going to pass
it through for the next generation, let's say 20 years later, that
generation still have the good knowledge we have today.
- A:
- Q: If you're willing to discuss it, what do you think about the
recent controversy about use of cl-lib in Emacs core code?
- A: Stefan's opinion is on emacs-devel.
- Q: When we find a bug, in our emacs.... do we need to try to
replicate it on the sid version (debian/sid=1:29.1+1-5 at ehe time
of writing), then update all the usual lisp package we use... and
if we succeed to replicate the bug in this version, only then go to
the development version 30 and do the same ? Then only, ask for
assistance in reporting the bug we found ("M-x report-emacs-bug"
will be sufficient ) ?
- A: (Answering for Stefan, because information about how to report Emacs bugs is widely available, including in Emacs's own documentation: You should try to reproduce it on the latest released version of Emacs, with a clean Emacs configuration (i.e. "emacs -q"), before reporting. And you should look for existing bug reports on the tracker. If you have extra time, consider trying to reproduce it on the master branch or the branch for the next release as well. And if you're sure you've found a bug, be sure to report it using "M-x report-emacs-bug" rather than just emailing emacs-devel about it.)
- Q: On branching off sub-threads. I note that they are less visible
compared to starting a new thread in practice. I am wondering if it
is just my impression or something devs also observe.
- A:
- Q: What about rewriting emacs in Rust? Use guile instead of elisp?
Multi-threaded emacs? Make emacs prettier and shiny? And of course,
sane defaults! Just kidding. We are spoiled children because you and
Eli, Lars, etc. do an impressive work. I live in Emacs since 2001.
Thanks!
- A:
- Q: The only downside I see with copyright assignment is that one has
to disclose their real identity. Would it be a possibility to assign
copyright under a nickname?
- A: (not the speaker) FSF said they can publish a pseudonym but
need the actual identity in their paperwork, which will be
presumably protected, but it's not totally anonymous.
- (AFAIK from Bastien) The actual FSF assignee list is not public - I know that it is available to maintainers, but must not be shared.
- A: (not the speaker) FSF said they can publish a pseudonym but
need the actual identity in their paperwork, which will be
presumably protected, but it's not totally anonymous.
- Q:Do you think it is possible to reach an agreement on sane defaults
for better out of the box experience?
- A: It's more of a social problem than a technical problem (my sane defaults might not be yours).
- Q:Will xwidgets have a future? Seeing the new bugs popping up in the
latest xwidget dev.
- A:
- Q: Have you voted for Emacs as the software of the year on the Tuxies by Jupiter Broadcasting? I did, because Emacs 29 is great! Thank you!
Notes
- Cambrian explosion of packages (5000 packages in MELPA)
- GNU ELPA <- generally better if someday it might be good to ship it with Emacs
- João Távora (Eglot author): haven't seen a problem with
copyright assignment
- To be fair, it does happen in certain cases. But infrequently.
- New package archive NonGNU ELPA is now enabled by default, no copyright assignment needed
- Emacs is hackable. I think that's a blessing and a curse. The types of choices you can make when you implement... Different choices between things like Common Lisp and Scheme. I think we have that kind of tensions within Emacs. These are good discussions to have. I think what will never change is that Emacs is hackable. Emacs is customizable. This is what's bringing you that amazing user experience. The flip side is that it's easy to hack around bugs instead of fixing them. Or we accept limitations in Emacs core. I think we could get better at taking those few extra steps to make Emacs better for all users.
- Thank you Stefan! That was all really cool!
- thank you you guys it's fantastic
- thank you guys to say you amazing is to not give you enough
Transcript (unedited)
All right. Hi again, everyone. It's been a while. Well, actually, it's been like 2 minutes tops. We were just with John Wheatley, and now we are with Stefan Krangas. Hi. Hi. So as we said before, Stefan is co-maintainer now of Is it the entire Emacs project? How do you describe this? Yeah, co-maintainer of GNU Emacs. Right, perfect. So you know what? Because I'm sure everyone is dying to hear everything you've got to say in your presentation I'm just going to shut up now and leave the floor to you. Do you need to share your screen or anything? No. Okay great well I'll just cut my webcam off I'll still be in the background so do not hesitate if you've got any problem I'm still around And I'll see you just beacon whenever you're done. And I'll show up with the questions. All right? Thank you, Leo. And thank you, everyone, for being here. I'm Stefan Kangas. So as Leo explained, I am recently appointed as a co-maintainer of GNU Emacs, which a role that I'm fulfilling currently with Eli Sretsky, who's been co-maintainer for quite some time. So I got the question to be a co-maintainer from Richard in August this year. And of course, when you get a question like that, I couldn't not say yes. So here we are. I can't tell you how excited I am to have this opportunity to address the community in this way. I'm really humbled, of course, to be part of it, and to be able to serve the community in this capacity. I've used Emacs, I think many of you might also have used Emacs for quite some time, but I'm going on 2 decades as an Emacs user. My involvement in Emacs Lisp development is, I mean, almost as long, but my core development goes back only 4, 5 years. I have to also thank the EmacsConf organizers who are doing, I think, a tremendous job and have done a tremendous job over the years in really building and strengthening what I think is this fantastic community of users and developers and people interested in Emacs. I actually had the chance to meet up with Eli Sretzky, as well as another Emacs hacker, Andrea Corallo, when I was at the GNU project's 40 years celebration, 40 years since the GNU project was announced. And it was very inspiring in general to meet people. And I think EmacsConf should also, I think, serve to inspire and sort of help bring something to the type of work that many of us are doing to improve Emacs, whether it's in package development or in core, to bring out the new and exciting ideas and get people enthusiastic about Emacs, about hacking on Emacs. This is my little attempt to contribute with let's say 2 things. I will first try to present how we do Emacs core development and why we've done some of the choices that we have, because We have seen at times that perhaps people aren't always clear on this or that aspect. So maybe this will be enlightening. I will also try to present some kind of vision for what Emacs could be with your help. Emacs is already very good, as we all know, but we could be even better. That's the reality of any type of software development. So the overall idea of this talk is to tell you, if you're an Emacs list package developer today, why you should become an Emacs core developer, and the sort of steps that you might want to take to do that, or how you can help Emacs core development. Even if you're just a user and you found a bug, report it. Perhaps you have a feature request that you'd like to discuss. I think we need more interaction in general between Emacs core developers, typically on emacsdevil.gnu.org, the mailing list that we use to coordinate our development efforts, between Emacs devil package developers and users, Because there is so much great stuff really going on in the community. But I think sometimes the step to core development seems big and perhaps even a little bit scary. So I'm hoping to be able to help bridge that gap, even if just a little bit. We need more people contributing to Emacs itself. And also a small disclaimer here, in this talk I will only be able to speak for myself, not for GNU or the Emacs project, even if it's like a little bit more official, but I will also try to give the view of the project where it makes sense to do so. Keep in mind, I'm only 1 of the maintainers, the co-maintainer together with Eli, and I can't just make decisions arbitrarily. In a sense, I'm as a co-maintainer and trusted as a steward and trusted by, of course, the GNU project, but also by the community That we really can't just take decisions, I think, arbitrarily. Even if it sometimes perhaps may seem so, or it may feel that way, we really have to realize that we can't just push too much of just a personal agenda to the extent that it doesn't line up with what is best for eMacs going forward, and the more overall picture of that. So there are limitations that come with the job, if you like. So 1 question I often, I actually got this week when I started a new assignment at work, and I got the question when I said I'm involved in Emacs development. And then someone asked, oh, is Emacs still developed? Isn't it done almost? And I answered to that, yes, we are still around. We're going on 40 years now as a software project. Not many projects actually can claim that type of longevity. But Emacs is among those few that can. And of course, we have had some very exciting developments in recent versions. I think John just gave you an update on that. But we had just some highlights out of many highlights that you could give, really, we got the TreeSetter support in Emacs 29 that we now need to sort of extend and develop. We have merged EGLOT, so we have LSP support out of the box, I think is a huge improvement. Native compilation, of course, a big feature. I mean, that was Andrea's job, really, for performance. And it turns out that in many types of workloads and the types of stuff that people are doing, it often matters. And we're hoping to make that the default, perhaps already in Emacs 30. So there are things that are happening that fundamentally make Emacs better at a very core level. So, of course, why wouldn't you want to be involved in such an exciting and, I think, dynamic project? How is Emacs developed? Well, this is, I think, perhaps to some people, a little bit more of a threshold, if you like, because I think all of us know really that there is exciting and cool stuff that is going on in Emacs and has been going on over the last couple of years and we'll see even more of that, I think, going forward. 1 thing is that communication still takes place over a mailing list in 2023. So we have emacsdevil at gnu.org, and that's where we develop Emacs. We use, we send patches back and forth, we comment on patches. And actually this workflow is very good, if you're used to it. Because guess what? As Emacs users, we like doing everything we can in Emacs, especially the core tasks that we're doing, such as developing Emacs itself. Of course, you want to do that fully within Emacs. So we hack Emacs Lisp in Emacs, we hack C in Emacs, we respond to emails also from Emacs, respond to bug reports, manage bug reports. We do all that stuff very, very smoothly. And it doesn't really matter in a sense, what is the medium? It happens to be email. Technically it could be anything, but email really has that type of staying power where we've been able to use it for a long time. And this is how, and we're still able to use it. And this is how free software was always developed in the past. Only in the last, let's say 10, 15 years, We've had more development taking place perhaps on forges like GitHub, GitLab, whatever. But we are 1 of the holdouts. I mean, there are others, of course, like the Linux kernel has mailing lists. They're not trying to do that scale development on GitHub. And this is not just because we're Luddites that refuse to change. We just have to do it in the old way, because it is the old way, and that's the way it should be. No, it's actually because we, as core developers, the core development team and the people already involved and doing tremendous, I mean large amounts of work in Emacs has very efficient workflows built up based on this. So of course, I mean moving to something else is something that we might like to do, but we're not yet clear on how to do it exactly and what to move to. So these are the types of discussions that we're looking at. Can we still support a mailing, an email type workflow while moving to something else? That would be 1 of the big ones. I think another thing that trips people up is that we used a bug tracker that, I mean, maybe some people, I've heard people say it's archaic. It's called Debugs. I think maybe Debugs gets a bit of a bad rap. I think that bugs is a good piece of software. It wasn't developed in 2023. I mean, that's much as clear. It's a little bit older, but it really is a workhorse of the Debian project, which is obviously a project that's developed in a very different way than Emacs is. It's on a completely different scale, of course, much bigger, many more developers, and so on. But I think the developers did a good job for the time. But it might be showing its age, perhaps, in places. Perhaps, again, it's the email workflow. And people see that as a little bit of a threshold. It seems alien. It's a little bit strange, the types of workflows that you have there. So we are seeing some limitations with that box. And again, how do you report bugs? Well, in a sense, it's easy. You send an email to bug-gnu-emacs at gnu.org and you copy in whatever you get from, you know, report the EMAX bug or if you have, you know, send mail set up locally, just hit control C, control C and it's sent to the bug tracker and that's fine. But also I have to mention that there is this very good package on GNU Elpas. If you're ever trying to read the Emacs bug tracker or following along in Emacs development, I really recommend install the package devbugs from GNU Elpa. It's so good. And again, it's built on GNU, it's all integrated in Emacs, it's so much better than using the web and so on. And if you really want to get into it, you can download the bug tracker archives and the mailing list archives, and you can put them locally, you can have them searchable, and you can have whatever experience you like. So, I mean, it's really a flexible workflow, but it's a bit strange, perhaps, to some people. So we also think supporting only this workflow might be a little bit too limiting. So we do want to move over to something like GitLab, perhaps Sourcehat or something similar. We've had a couple of discussions about that over the last couple of years. I think even before that, but that's how far back I've been involved, and definitely it's come up occasionally. I think we are less far away than perhaps ever is how I would express that, and in the sense that the remaining blockers for just making the shift, let's say, are I think, I mean, first of all, we're talking about limitations, perhaps in the software, they're well defined, and they're not as amountable. I don't think they have to be in any case. We should be able to make some progress. The main thing that we're lacking now is not more discussion or more people prodding us to just please switch over. No, we're looking for volunteers. If you think that you, you know, have what it takes to sort of come in and help us do something like that and work together with us, you know, to see what can be done, perhaps some, a few things would need to be changed in GitLab. I don't think anything huge, but maybe there are some patches to be written and sent upstream, or maybe we need to do some local hacks or whatever. If you wanna do that, please contact us, emacsdevil. We'll be very happy to talk to you. And then we can start making progress. So I'm really hoping that that sound like will come into place. But we need to, if we do switch over, we need to preserve the good parts of our email-based workflows. So there are requirements there so that we can continue to do our job as maintainers, if you like. Another thing is that we've sometimes seen that there's a bit of a different culture perhaps on mailing lists and on Emacs devil than what many people are used to, especially like you've used perhaps, many people might be in university and they've started using Emacs, maybe got into a little bit of package development and starting to get the ropes of that and are very used to working on places like GitLab or something like that, then the type of culture and way of communicating that we use in Emacs might be a little bit different. And of course, it's different in the sense that mailing lists have always, I mean, let's say hacker culture, whatever you want to call it, have always communicated in a particular way using mailing lists. So it's like succinct to the point, perhaps I'm skipping a few pleasantries. And the idea is that you should just use it in as effective way as possible, so that also the archives are usable. And the other thing is that generally people involved in developing free software has to deal with a lot of incoming traffic, emails. They don't have the bandwidth if it's too much noise. You really need to be strict to keep the signal to noise ratio high. We have some weird terminology on the Emacs devil. People tell us, we say sometimes install patches which basically means push to master or merge pull requests because we've used other version control systems in the past where it might have made more sense to say install patches. And then you sort of, I don't know, I say it. Don't ask me why. But it feels natural after a while. You install a patch. It's clear what you mean. You don't have to worry about which branch it's on. So it's a little bit historical there. So there is some of that culture going on. It might be different. We don't use emojis that much. That's another thing. There is no like, you can click the little like button at the bottom of a comment or an email as you could on GitHub. But there are exceptions and it's not like someone will send you angry emails if you use an emoji or something like that. But it can come off as perhaps Because people are pressed for time also when replying to all these emails. So it might come off as a little bit short, but that's just how it is. And I think We have heard this comment before that mailing lists are scary or Emacs devil is scary or core development is scary. And I've touched a few of these points a little bit already. I think, yeah, maybe a little bit. For example, we don't use emojis very short in the communication. And we always use correct grammar and spelling. We take that seriously because it's important for being clear in your written communication when all you have is written communication. It's really important. But it's not like If you come in there and you don't know all these cultural rules and all these patterns, then you know you will We won't talk to you No Actually, we try to be as welcoming as we can and and be mindful and you know people not Everyone has English as their native language, for example. So perhaps someone says something, and it might come off as rude, but maybe it's just a direct translation. So we're trying to give a lot of whatever the native language is. So we try to give a lot of leeway and just be a little bit, you know, flexible and focus on, you know, the key, key points, which are the technical things, the technical decisions, technical arguments, rather than, you know, getting bogged down in a lot of, you know, personal, you know, discussions and flame wars. So, I mean, there are these things to be aware of, you know, it's just a little bit different. I don't think it's anything huge. And I wouldn't be, you know, I think it would be sad if people felt too intimidated by that. It just is what it is. And if you spend some time there, you'll see how people generally communicate. Sometimes, there are a lot of people on EmacsDevil. It's a public mailing list. A lot of people just sign up to follow Emacs development. Sometimes they chime in. And I think this is in general a good thing. I think it should be a public mailing list. Sometimes this leads to weird situations from just a point of view as an Emacs maintainer, right? I mean, I try to say something and it doesn't always say, oh, he's the maintainer or whatever. So when I say something, it should carry a little bit more weight than some unknown person from the internet who has an opinion and decided to send it to EmacsDevil. So it's good to be a little bit aware of who is a little bit more involved with the project. I would check out the maintainers file. I would check, see in the Git log, do these people actually have any anything in core? And if not, maybe, you know, there, we won't really, even if they express an opinion very strongly, even if they're a little bit rude, maybe they're not even involved in Emacs development. I mean, often, that's the case we have some people, unfortunately, at times, we have random people from the internet come in on the mailing list and they're just a little bit rude, or they say an opinion that's not exactly helpful. And I think you need to be aware. I mean, these things happen in any forum, but it happens on EmacsDevO as well. So just be a little bit aware of who you're talking to, what people are doing. It can help to Check the archives, see who writes what, and so on. But it's not something that I think is a huge problem. It is just, again, something to be aware of. We have the new kind of communication guidelines in place, which basically says that you should be nice to people and stay focused on the technical problem, try to see things from another person's point of view, this kind of stuff. So we're really trying to be as inclusive as possible and just stay correct in general. And sometimes, I mean, not everyone, it's a public list. We moderate it, but not to a huge extent, right? So sometimes people get away with a little bit of perhaps stretching the boundaries of what might be included in the kind communication guidelines, sort of the fences and limitations of that. But I would just ignore that. Sometimes it happens that we, as happens in any forum, by the way, you just, we have these very big threads. We start discussing something else. Perhaps you send us a patch and it just devolves into us discussing something completely different. And of course I partake in that, not better than anyone else, but it just happens. I mean, it's not your fault. It's just what happens sometimes in forums, and don't mind that. And it's a little bit easier to do that in emails, because you just change the subject, and now it's supposed to be a different thread, but it comes as replies usually to you, which wouldn't happen perhaps in a different workflow. So it's something to be aware of as well. Another thing is that, of course, in written communication, tone doesn't always come across. If someone sounds negative, sometimes it's just them being neutral. Sometimes you get no replies. You send something, you get no replies. And this could mean, actually it could mean, yeah, what you said was uncontroversial. We think it was a good idea. No 1 replied to it because either someone else would reply or just there was no need to reply because, yeah, why not? So but if you do send a patch and you don't get an answer, wait. I mean, don't wait 1, 2 days. Maybe we're busy or we're sick or whatever. Wait 2 weeks. It's fine to just send it again. If you send the patch to EmacsDevil, send it to the bug mailing list, because we lose track of stuff on EmacsDevil. That's just the reality of it. So if you propose making a change and no 1 commented, feel free to ask us again if a patch would be welcome and we will clarify. Bug reports, unfortunately, if you get no answer, I mean, we do have a limited amount of time to work on bugs. If you're looking to get started in Emacs development, this is an excellent way to start getting involved. What I'd recommend is start looking into bugs. I'd install that bug, I'd see about the mailing workflow and set that up a little bit, or not. It's up to you. You can reply to an email without setting any of that stuff up. But just help us try out your bugs, send patches, do that type of stuff. I mean, that's an excellent way, and extremely welcome. We're so happy to see when people pick up bug reports that have been left by the wayside and just fix them, send us a patch, and we can just apply it. So that's really your starting point if you want to get involved in Emacs core development. I also want to say that be aware that you know Emacs is the editor of the GNU operating system and this makes the project political a little bit whether you like it or not. Luckily the you know the politics are limited enough that we can find broad agreement on it. So we want to promote, we want to create free software. That's sort of it. That's it. And there shouldn't be too much more to it, right? We want to rid the world of proprietary software as an evil thing. Ideally, all software should be free. But these are just the goals of the free software movement. So we're very strict with some things. We don't recommend non-free proprietary software. Of course, we have no problem mentioning Microsoft Windows because everyone knows that there's this obscure operating system developed in California that some people insist on using. We use, many of us use GNU plus Linux. Actually, some core developers happen to use exactly, you know, not GNU plus Linux, but that's fine as well, right? We take a little bit of a pragmatic view, but we don't wanna do, what we don't wanna do is promote like this small, unknown piece of non-free software and sort of help the non-free software in that way. That's where we try to draw the line, you know, in just expressing just a few words. So that's 1 thing. We're, I think, very pragmatic on this point, but we do try to follow the principle. We also require copyright assignment. And I think in general, the argument is that we require a copyright assignment, because that makes it easier to defend the legal status of the GNU Emacs source code. So if there's ever a legal battle, the idea is that if it's only 1 copyright holder and you have a GPL violation, i.e. Someone might change Emacs and then distribute it as proprietary software or something nasty like that, then we have an easier way of defending it in court if there is only 1 copyright holder. So we assigned copyright to the Free Software Foundation. And I think there, I mean, sometimes people oppose this for various reasons, you know, people see it as, you know, maybe some people might say, you know, it's ideological, you know, who goes, you know, the FSF goes too far with this. And, and, I mean, that's fine. You that's, that's an opinion. And the there, then other people are more practical, you know, it's just, It's a hassle, basically, we don't want to sign these papers. And I'm not really here to tell anyone that they're wrong. I've expressed my views on this in the past. But just for now, I'm just very practical for the purposes of this talk. So I signed the papers. It's Maybe it didn't take me many minutes. And in most cases, it shouldn't really. And it's something that I found worth doing, because that way I could focus on continuing to improve Emacs instead of discussing the finer points of copyright law. You could write patches and stuff, that kind of thing. So, I mean, this is something that trips people up and, you know, it's fine that people have different opinions on it and so on, but I think for now that's just something to be aware of. So that's, I think, I mean, there's much more that could be said. Ideally, I would like to have a practical part to this talk as well. But I wanted to say something about the packages in Emacs. Because as we know, I mean, Emacs is the, I can't remember what it says, it's like a visual, there's in the manual it says, oh, Emacs is an advanced text editor. It's visual, which, I mean, it's not ed, the whole Unix ed, so that's cool. It's also customizable, right? So that's always been a thing. And what makes Emacs so amazing. And some people described it as, I can't remember who said that there has been a Cambrian explosion of packages in Emacs. And I think that's true. I mean, if you look at something like Melpa, I think they have over 5,000 packages now. It's like truly impressive, just an immense amount of work and immense amount of packages. And really, this shows the strength, I think, of the Emacs community, of Emacs itself as an idea. And I think it's also just tremendous work that's been done by the maintainers. And they do get a lot of recognition for that. And rightly so, in my opinion. It's done so much, I think, for our community. The other package archive that we have is GNU-ELPA. And that's been enabled since when packages first got introduced back in, I think, Emacs, was it 23? And probably, I mean, the main thing why a package goes onto GNU Elpa is, you know, it should be installable out of the box. So, I mean, that's a big benefit in a sense. It's also a requirement for GNU Alpa that the copyright, again, just as GNU Emacs, the copyright is assigned to the Free Software Foundation. And some very hugely popular packages, like YaSnippet, for example, is on GNU Alpa. And we were discussing this just 2 months back. And Joe Tavora, I can't say his name, G-O-A-O, Tavora. He made the point that he's never seen a problem in any of his packages with copyright assignment in particular. It's never been a problem to get people to be involved in the development of those packages just because of the copyright assignment requirements. So I mean, that's his perspective on that. And I think it was worth relating his experience here. So we also have this new package archive called non-GNU-alpha, which is now enabled by default as well. I think for practical purposes, you could get into it a little bit more, you know, why we created non-NUELPA, and perhaps that's something we can discuss in the Q&A section. For practical purposes, the main thing to be aware of is, yes, we don't promote non-free software on there, And we also don't have the copyright assignment requirement. I think this is probably for new packages. It's generally better if they go to GNU Elpa, if there is any type of idea or ambition that, you know, at some point it would be good or it might be good to eventually have some type of functionality like this shipped with Emacs itself. So I think this is something that perhaps package authors could also be aware of, that occasionally we do bring in functionality from GNU Elpa into core Emacs because we feel that it should be better integrated with Emacs itself. So if I could give any type of recommendation, of course, you do. These are your packages, right? In an ideal world, we would only use this for legacy packages where people contributed in the past, but you didn't worry about the copyright assignment. But where possible, I think there is benefit in putting it on GNU Elpa. And I wanted to end a little bit on a more, you know, the more opinionated perhaps part of my talk and not just talk about processes. I see that I'm running out of time. So I will say Emacs is hackable. And I think that's a blessing and a curse. And if you think about something like, the types of choices that you can make, perhaps when you implement something, There are choices, different choices between something like common list, which is like bigger, more batteries included, and something like scheme, which is more minimal. And I think we have some of those, you know, this kind of tension also in the Emacs itself. What should be in Emacs core? Should we have a lean Emacs core? Should we have more stuff in Emacs core? And I think these are good discussions to have. And there are various challenges that are associated with each of those choices. I think what will never change is that Emacs is hackable. Emacs is customizable. This is the key strength. This is why we love and use Emacs. I think fundamentally, whether you do it a lot or not, this is what at core is bringing you that amazing user experience. However, the flip side of that sometimes is that it's so easy to hack Emacs so that we hack around bugs instead of fixing them. We do some tweak and our customers say, okay, this is a little bit broken, Let me just fix it. I'll put an advice on this function. I'll do this customization. Or we accept limitations in Emacs core. And I think it's fine. I mean, this will never change. That will always be core to what Emacs is, right? However, I think that the flip side of that is that I think sometimes we could be better at just taking those few extra steps to also make Emacs better itself and solve this for all users. And I think if we can build a little bit more of a culture like that, I mean, we already have that culture to a large extent, don't get me wrong, we do, but if we can get a little bit more of that culture, let's get that into core, let's get that problem fixed, that frustration. I can tell you that, I just started a new assignment at work, I already told you, so I'm going to write a lot of Python, okay? So I need to keep track of something called virtual environments, and that's just a way to install these dependencies just locally per directory or per repository kind of thing. And I've used various packages for that. There are like 4 packages, 5 packages, maybe. And 1 is called VM, and 1 is called VirtualM, and 1 is called Python-VM. And now I'm using, you know, I'm using a different 1. And it's just a little bit, why doesn't this work out of the box in Emacs? Why? I don't think there's a really good fundamental good reason why something like that doesn't work in Emacs. So I think that's really, I mean, I'm sure there are other things like that, other fundamental features. Why is it that for the last 20 years, we've shipped Emacs with no PHP support out of the box? I mean, I'm not a PHP programmer. I don't really have a lot of love for PHP, let's say. To me, it's a very funny-looking language, but okay, still it's been very popular. Why haven't we supported it? I mean, it's just strange. You install Emacs on some machine, you open a PHP file, you get fundamental mode. It's not the best user experience, in my opinion. So I think there are some things where we really could do a little bit better. And I'm seeing this all the time. Just this week, this new assignment was interesting. There was this Emacs user. Turns out we have the exact same hack in both of our init files. So we had created the exact same mode for DIRED, actually, to hide dot files. You know, dot something is supposed to be hidden on a Unix system. So we had DERED hide dot files mode to just hide them. And why isn't that in DERED? Or should it be in DERED? Should it be a package on the new Elpa? Where should it be? Why is it just local hack? Should it be on a wiki somewhere? I mean, sometimes that's the correct answer. Sometimes the correct answer is, yes, it should be a package. Sometimes the correct answer is, yes, it should really be in core. So what I want to promote is more like, let's just take a step back and just ask yourself, what's the best solution if we look at the overall picture? Should I hack this into my configuration? In many cases, yes, that's the right thing to do. We don't want to proliferate just random solutions all over Emacs for no reason. But sometimes we want to fix it once and for all. We want to do that in core. So you could send stuff like that to us as patches or as packages. And we can discuss a little bit about where should we solve this? What's the right level of abstraction? I'm seeing that I'm running out of time. I had an Emacs wish list. Maybe we can take more of that in the Q&A. But I want to say, like, in VS Code, you just start VS Code. You open a Python file, and you get, like, hey, are you trying to use Python? Click here, install Python. You get all the nice things out of the box. And my argument is, why can't we have more of that in Emacs? I don't think it's necessarily hard, but it does take a little bit of work. The challenges here are more social, I think, than technical. And I think it's worth doing, because it's not just Python. It's just There are always these small things where it just really should work, and that would be a much better experience. And then you could customize not that thing that should just work, but you could customize more fun and exploratory things instead of people reinventing the wheel over and over again. So I'm very excited about what's happening in Emacs. I think we should be proud of what we've accomplished. It's so many things to many different people, an environment for hacking, just a productivity system. Other sees us as a different way of looking at computing, you know, the embodiment of the ideal of the Lisp machine if you want to talk big words and stuff like that. And of course, Emacs are all those things and so many more. And that's what makes Emacs so amazing. And in some sense, we should be care that people are satisfied with using lesser text editors. How could they be happy running that? I mean, I'm sure it's fine, but it sure as hell isn't Emacs. So don't we owe it to the world and to them and to ourselves to make a great Emacs. That will be my ending words. And I hope to see you all in the Q&A. Thank you all. And thank you so much, Stefan. That was a wonderful presentation. And I just want to give you the opportunity. You said that you perhaps had, Not the practical stuff, but you wanted to do a demo or something like this? What did you mention exactly? Yeah, we didn't have time really. Yes, I'm not sure. I didn't prepare anything so that we can do it live. But maybe for next time, I will do a demo. Don't hold me to it. Or someone else could. That would be really amazing. Right. Well, thank you, Stéphane. You've been already into so much detail of so many... So much of the intricacy of the maintenance. And as someone who's been 95% of the time developing for Melpa, I feel like this talk was very geared to a lot of us who tend to experiment in this Cambrian stage of Emacs evolution, where we get to deploy a lot of creativity whilst also feeling pretty agile in a way we come up with solutions to problems. But you've won me over with your discussion about potentially moving some of this stuff to core. And I think this particularly resonated at the end with this tension that you feel about problems that you encounter. Do you fix them in Melpa? Do you fix them in core? Is it not something that is supposed to be an option? I love this tension and it's something that we've been exploring for the last 3 edition of Emacs Cons. It's really what is to be the interaction between this pool of very clever developers who are on Melpa but who are perhaps a little bit afraid of joining Core and the wonderful job that you do that, yes, seems archaic from the outside, but as you've been at length today in your presentation, is actually just a better way to work, a very pragmatic way to get a lot of work done. So, thank you so much for your presentation. Thank you, Leo. So, we have about 12 minutes now to go through as many questions as possible. You have obviously had a lot of questions throughout your presentation. Do you have access to the pad, or do you want me to share the question and feed them to you? Yes, could you start with sharing them? I'll see if I can get it on my screen. Sure, I'll do that. Please let me know if my microphone is clipping because my OBS setup sometimes is a little bit janky. But I'm going to try to read the questions for now. It's tipping, I can hear you okay. Okay, so bear with the clicking, we'll switch as soon as possible to Stefan reading the question, but I'll read the first- Can you tell us some about your,
Questions or comments? Please e-mail emacsconf-org-private@gnu.org