In Emacs, Everything Looks Like a Service

(yummymelon.com)

187 points | by kickingvegas 13 hours ago

17 comments

  • pjmlp 10 hours ago
    > A common refrain is that Emacs is an operating system (OS). This isn’t true, but what invites comparison to an OS is its ability to orchestrate applications and utilities above the OS kernel level.

    Only because Lisp Machines, or variations thereof didn't took off in the mainstream.

    "Symbolics Lisp Machine demo"

    https://www.youtube.com/watch?v=o4-YnLpLgtk

    "Emacs and Lisp"

    https://funcall.blogspot.com/2025/04/emacs-and-lisp.html

    While Emacs was forked by Lucid as XEmacs to make one of the very first ideas of LSP, nowadays most features have been integrated back into Emacs

    https://dreamsongs.com/Cadillac.html

    "Lucid Energize Demo"

    https://www.youtube.com/watch?v=pQQTScuApWk

    • charcircuit 10 hours ago
      Even if LISP machines took off, an editor running on them still would not be an OS. Such claims come from people who don't understand what a platform is and who can conflate any platform with an operating system. You also see these people calling web browsers operating systems. By this flawed definition you could even call things like Roblox an operating system.
      • pjmlp 10 hours ago
        "An operating system is a collection of things that don't fit into a language. There shouldn't be one"

        -- Dan Ingalls

        • mananaysiempre 8 hours ago
          As long as you don’t care about interlanguage interop, sure. The opposite point of view, that every language tries to become an operating system (and consequently to prevent other languages from coexisting), is also possible, and I’m somewhat more sympathetic to that one.
          • pjmlp 8 hours ago
            That is mostly a non issue on microservices and serverless runtimes running on top of type 1 hypervisors, and bare metal embedded deployments.
            • tvink 6 hours ago
              I'm unsure why you point this out. It's also a non issue if you're trying to drive a unicycle. Isn't it more interesting to talk about the cases where it applies? Or do you reckon all programs should be microservices?
        • bcjdjsndon 9 hours ago
          In the Linux world, isn't the c compiler necessary for Linux to function?
          • TylerE 9 hours ago
            To build? Sure.

            To run? Absolutely not.

        • charcircuit 9 hours ago
          Developers love building on platforms. Saying there shouldn't be platforms defies reality.

          Edit: Looking up the quote it seems to just be the person being pedantic in how they define operating systems.

          • wtetzner 8 hours ago
            Given his work on Smalltalk, I suspect he means that he prefers the line between language runtime and operating system to be erased, and they be the same thing.

            I disagree though. While there are benefits to that approach, I feel like language innovation would be stifled to a certain degree.

            • convolvatron 8 hours ago
              that seems backwards to me. one of the primary constraints in language development is the OS api. programs that don't interact with the world are increasingly less interesting, and you really have to work hard and be clever to change the file and its semantics, the socket, or the thread. these things have sharp edges and tend to be leaky.
              • wtetzner 5 hours ago
                > that seems backwards to me

                I'm not sure I completely understand which part you find backwards. Do you mean merging language runtimes and the OS is a bad idea, or that you think merging them would lead to more innovation?

                I can see an argument for both (in terms of innovation), but being able to run only one language environment on a computer at a given time would make it much harder and heavy weight to use new languages. Or at the very least, new language runtimes.

          • raverbashing 8 hours ago
            > Edit: Looking up the quote it seems to just be the person being pedantic in how they define operating systems.

            What a surprise

            Pragmatism beats idealism in the real world

  • deng 9 hours ago
    This just proves that you can cram pretty much anything into the client/server dichotomy if you just define "client", "server" and "request" broad enough. Similarly, I remember how desperately people tried to argue that Emacs follows the "Unix philosophy" as long as your LISP functions are doing just one thing, and do them well. I don't know what you would gain from these things. Emacs follows the idea of LISP machines, I think that much anybody can agree on. From there, Emacs can be or do pretty much whatever you want. It's excellent in communicating with CLI tools - you can call that client/server if you want, but I wouldn't know what you'd gain from that definition. The reality is that Emacs has gone through a lot of fads and hypes over its decades of existence, and each time, it has taken something along the way. Heck, there's a whole semantic parsing engine buried within (CEDET), which nowadays is pretty much unused, because then LSPs came along, and now we have agents (which Emacs btw is a pretty decent frontend for).
    • stormking 2 hours ago
      Emacs is a LISP refugee in Unixland. It doesn't follow the Unix philosophy, it follows the LISP philosophy. But it integrates.

      Forgot where I found this.

      • rshackleford1 42 minutes ago
        Bash is a shell refugee in Unixland. It doesn't follow the Unix philosophy, it follows the Shell philosophy. But it integrates.

        Why do you say such silly things?

    • znpy 6 hours ago
      > Heck, there's a whole semantic parsing engine buried within (CEDET), which nowadays is pretty much unused

      In fairness that used to be common to have in most IDEs.

      I don’t know if it’s still the case but i remember that the first java language server was spun off the Eclipse’s java semantic parsing engine.

  • jhalloran 15 minutes ago
    One thing that's easy to forget is how much of the "everything is a service" idea predates LSP. Emacs had long-running subprocesses, RPC-ish interactions, TRAMP, GUD, REPL integration, etc. LSP standardized one important interface, but it wasn't the beginning of the architecture.
  • kleiba2 9 hours ago
    I've been an Emacs user for over 25 years. But last year I switched employers and they won't let me use it even for tasks where it would absolutely shine. Their argument is that all team members should use the same tools, and I guess that is a valid point.

    Unfortunately, I failed to convince my employer to make everybody else switch to Emacs.

    So, now I'm using lots of one-purpose tools, one for each separate task, a good deal less efficiently than I could use Emacs, and I'm still learning all the new UIs and keyboard mappings.

    • masfoobar 8 hours ago
      At a company I work for, they are doing various changes (and control) over the software we install as we transition to a larger company. I believe they are using Microsoft Intune so they can allow/deny what can be installed.

      I have not updated my laptop (or got a new one) because I am concerned they will not allow me to install or continue to use Emacs. Honestly, I can vision how that conversation goes:-

      [manager]: Hi, so what is Emacs

      [me]: Emacs is a text editor I use daily and makes me efficient in my work

      [manager]: OK. I would like us to start using Visual Studio Code with the new projects coming up

      [me]: Why? The consumption models we are using has no VSCode support, anyway.

      [manager]: It would just be good if we are all using the same tools

      [me]: It should not matter what we use as long as we work with git and deployment. If someone else is great with a different text editor why force them to use something else?

      [manager]: (Looks up emacs)

      [manager]: I think its best we stopped using it because it is not supported by Microsoft and we need to be careful with the dangers of open source.

      [me]: OK. Should we contact other IT departments to replace any open source tools they use?

      [manager]: Its just emacs is not verified software for the business. I think you are complicating things a little (tries to belittle me)

      [me]: Emacs is my daily driver! If it goes, I will hand in my resignation!

      * Manager is not there to understand or reason.. he is just following orders from other IT departments. *

      • stormking 2 hours ago
        Over the past 15 years, I worked for 4 different companies in 4 different industries and I never had any trouble getting Emacs approved.

        They were all rather smallish, always around 200 employees, though.

      • kleiba2 8 hours ago
        I worked briefly in public administration at one point in my career. I asked the admins the same thing, could I get Emacs installed on my machine. I got a bit concerned when the admin staff asked back: "What is Emacs?"
        • bitwize 6 hours ago
          I was a bit surprised when about ten years ago I noticed that there were now really only two reactions to my Emacs use:

          "Emacs? What's that? Oh, sorry, I like things with an actual UI."

          Or:

          "Emacs? I remember that from my DEC days. I'm surprised it's still around!"

      • ks6g10 8 hours ago
        I scheduled my intune upgrade when I needed a week off for doing house moving stuff. I was told Emacs would work, didn't. Took them about a week before I could use it again.
      • znpy 6 hours ago
        Back in the day when i had a windows laptop for work you could just download the windows binary distribution of emacs and run that, has something changed?
        • stormking 2 hours ago
          Yes, running software that is not authorized can get you fired.
        • masfoobar 6 hours ago
          This is what I do when I use Windows. However, in recent years, I tend to use Emacs via WSL.

          However, I believe Microsoft Intune is used within the Business to control what software can and cannot be installed. So my guess is Windows won't allow you to install via a typical .exe

          I am not suggesting the above is 100% valid. I just don't want to get a new laptop and find out. Maybe I can still use Emacs via WSL... bypassing Intune????

          At the end of the day, I understand Security is getting much more serious in recent years - and we even have a dedicated department - but controlling the software to install is crazy, especially for a development team.

          • MarsIronPI 4 hours ago
            Does Intune stop you from running any unapproved .exe's? Because IIRC Emacs can run as a "portable" executable that doesn't need to be installed in Program Files.

            (I don't have any experience with Intune so pardon my ignorance.)

      • jhghbj 8 hours ago
        [dead]
    • BeetleB 3 hours ago
      > Their argument is that all team members should use the same tools, and I guess that is a valid point.

      Not really. If they mandated all team members use telnet instead of ssh, would you say their position is valid?

      Anyway, the important thing to learn is "You're not supposed to ask if you can use Emacs. Just use it!"

      Incidentally, do they have a mandated general text editor? And if they do, will you get in trouble for firing up Notepad?

      Do they have a mandated TODO tool (for your own tracking of work, not something like Jira meant for the whole group)? I've yet encountered a place that did.

      Basically, find some category that Emacs does that they've not mandated, and then install Emacs and tell people you're using it for that category :-)

    • Arubis 5 hours ago
      Having everyone on a team have different personalities is managerially inefficient. You have to deal with each team member in a different way instead of being able to have a unified emotional approach. So we required frontal lobotomies for everyone on the team.
    • clircle 7 hours ago
      Emacs users (myself included) would feel less like cramming every aspect of our work into Emacs if more tools embodied the freedom and hackability that comes with using Emacs. It's not that Emacs is better, it's that other tools are more restrictive and not self-documenting.
      • NoGravitas 6 hours ago
        It's also helpful that you get a certain degree of UI consistency from things like completing-read being used everywhere. And even when some package departs from convention, everything is still a buffer, so anything in it is easy to reuse.
    • wtetzner 8 hours ago
      > Their argument is that all team members should use the same tools, and I guess that is a valid point.

      Why is that a valid point?

      • tom_alexander 8 hours ago
        In my case, I am a very senior member of my team so 25-50% of each day is spent helping and/or teaching teammates. In situations like that, it is useful to be deeply familiar with the tools that your teammates are using so you can tell them exactly what to do.

        For example, if I'm teaching a new hire to set up their vscode it is not very helpful to tell them "now you need to activate the python venv". It is much more helpful to be able to tell them "Now we're going to activate the python venv. To do that, open your command palette and search for 'select python interpreter'".

        In my personal life, I still exclusively use emacs (which I have scripted to auto-detect venvs) but I put up with using vscode at work to be a greater utility to my team.

        • tvink 6 hours ago
          Idunno. I think you end up teaching them nothing and just doing it for them. I mentor plenty folks without learning more than basics of vscode/cursor, and the most important lesson for them is always how to figure out how to do stuff (which has never been easier than today).
          • wtetzner 5 hours ago
            Yeah, I kinda feel like when you're mentoring people, you should let them drive. If you're going to do it for them, you might as well just record a training video.
        • tikhonj 3 hours ago
          When I've been in that position, I've just trusted junior folks to figure out the tooling-specific way to do things like that, and it's worked out perfectly well. If anything, it leaves people happier and learning more.

          And, instead, I can focus on the fuzzier, higher-level things that involve non-trivial tacit knowledge rather than things somebody can resolve with a Google search (or just ask Claude).

        • BeetleB 3 hours ago
          I can somewhat sympathize - I guess the debatable aspect is to what extent should you teach?

          If someone knows no development tools, then yes, it is good if someone in the team knows Visual Studio Code and can guide them. In my previous job, another senior person knew it and helped out (VSCode was not mandated, and they were free to use some other tool).

          I tend to focus on training people on the concepts (code navigation, debugging, version control, etc), and tell them that they're free to use whatever tool they like, but it's on them to learn how to use those tools to apply those concepts. I usually recommend VSCode and tell them there are plenty of videos/sites that explain them.

          Then if I see them doing something very inefficiently, I do a quick Google search to see if the more efficient approach is supported in their tool and send them a link.

          It's important to hire people who can learn on their own (with guidance on what to learn).

          > For example, if I'm teaching a new hire to set up their vscode it is not very helpful to tell them "now you need to activate the python venv". It is much more helpful to be able to tell them "Now we're going to activate the python venv. To do that, open your command palette and search for 'select python interpreter'".

          Inspired by a submission some years ago on HN, I came up with a different approach in my last job.

          Everything the team did (including onboarding), had to be done via a just[1] recipe. No longer did we rely on outdated docs. just recipes, by definition, cannot be outdated because then we wouldn't be able to do our work.

          For onboarding, we had recipes that automated as much of the configuration as possible. For things that required manual work, the recipe would print instructions, and prompt the user to press Enter when they had completed the task.

          Sure, onboarding stuff can go stale as people don't onboard often, but we had a policy that if any senior team member had to help a newbie because the recipe was broken, then the senior member needed to fix the recipe and check it in.

          I left the job, but I still talk to some of the folks there. They still love the recipes.

          [1] https://github.com/casey/just

        • shakow 8 hours ago
          At some point, shouldn't installing a venv be a pre-requisite to actually be hired as a dev?
          • kleiba2 8 hours ago
            That was just an example.

            The point of the parent is that in an ideal situation, where everything works without flaw, theoretically it makes no difference which tools everyone uses. In real life, you having a homogeneous setup across a team makes the sysadmin's job a lot easier.

            • shakow 2 hours ago
              But sysadmins should be there to deploy stuff and make sure the infra does its job, not get bogged down handholding some dev that can't even compile a project.
      • tom_ 2 hours ago
        It's just less effort all round to have everybody using the same supported set of tools. I don't know if I've ever worked on a project that's gone so far as to actually mandate this, but a "should" (possibly in the RFC sense) is fair enough I think. Every project I've worked on has ended up with everybody eventually settling on using the same tools, because it's just overall less hassle that way.

        (Regarding Emacs, I'm typically using it anyway for org-mode, so if I need to do some one-off edit or other - probably some keyboard macro thing - then I can just load the problem file into Emacs and save it back out again afterwards. I've only once been in the situation of neither being allowed to install it nor remotely connect to another machine to use it.)

    • isityettime 4 hours ago
      What about the job is so good as to make you tolerate this?
      • TylerE 3 hours ago
        Taken a look at the job market lately? Unless you’re like the top 1% (which most people aren’t), it’s extremely bleak.
    • skilning 8 hours ago
      > Their argument is that all team members should use the same tools, and I guess that is a valid point

      No. That's only a valid point if something about the tool must be shared between users, rather than just the output. Emacs is a text editor. It reads, modifies, and produces text. The correct tool for each team member to use is the one they're most productive with, full stop.

      Jesus fucking Shiva while Odin watches, but I hate corporate management "thinking". It's just become more and more brain-dead over the decades.

    • rglullis 5 hours ago
      > Their argument is that all team members should use the same tools, and I guess that is a valid point.

      Why?! It is a text editor for crying out loud. If you are more productive using the tools you want, don't cost anything to the company and doesn't force your colleagues to adopt your workflow, you could be working with notepad for all I care.

    • jerf 8 hours ago
      ... how would they tell?
      • kleiba2 8 hours ago
        By looking at my screen? But also, why would you disobey a direct instruction from you super?
        • skilning 8 hours ago
          > why would you disobey a direct instruction from you super?

          Because the instruction was stupid, based on marketing instead of utility, or otherwise given without any thought to how it impacts the actual day-to-day work of their subordinates.

          Why WOULDN'T you disobey a stupid instruction? What's the difference between "stop using this tool you're productive in and switch to this one that you're demonstrably LESS productive in for no reason other than I heard it was a good idea", and "Go strap some rocks onto your ankles and swim the English channel. I heard that was a good idea."?

        • BeetleB 3 hours ago
          > But also, why would you disobey a direct instruction from you super?

          Because they disobey their superior (and if they don't, recurse).

          But yeah, if I were new to the job, I would wait until I'm fairly competent before playing those games.

  • kandros 10 hours ago
    One of the pivotal moments in my career has been when I used Emacs just enough to truly understand what "Emacs is an operating system" means, not just as a joke but as something I could believe in
    • bcjdjsndon 9 hours ago
      But you already had an operating system and you could already code... Did Emacs really give YOU any capability you didn't have before? Don't forget this is a text editor, not an IDE or some general purpose automation harness

      You could add lisp to mspaint and mspaint suddenly becomes awesome somehow? I don't follow the logic

      • ordu 4 hours ago
        > Don't forget this is a text editor, not an IDE or some general purpose automation harness

        Technically, it is just a text editor. It was created to be a text editor, so you are right, but up to a point.

        Emacs is written in lisp, what it means? It means that the only part of emacs written in C is a lisp machine. And even not the whole lisp machine is written in C: there is a rudimentary read-eval-print loop (REPL), and maybe a bytecode interpreted. This REPL I believe is just to boot up purposes and is replaced with proper lisp implementation on later boot up stages. It is not lisp added to a text editor, it is a text editor added to lisp. It means, in particular, you can add to that lisp not just text editor but anything else too, like mspaint for example.

        And people do just that. They write software in emacs. In particular they wrote IDE in emacs, so while emacs by itself is not an IDE, you can turn it into one.

        > some general purpose automation harness

        Oh, it is. It is more general than any other automation harness you know. It is a lisp machine, you can automate anything in it. Well, technically you can, in practice it can take take too much time to be practical. In practice when choosing automation harness, you'd prefer not the most general, but the most specific harness for your task.

      • shakow 8 hours ago
        > Don't forget this is a text editor, not [a] general purpose automation harness

        This arguable. I personally use emacs for text editing for sure, but not only: it also does emails (notmuch), git (magit), team & project management (org), mastodon, fleet management (nix + colmena + custom elisp functions), and, more importantly, all these “applications” can mutually share data.

        So can you use emacs as a text editor only? Sure. Can you leverage its intrinsic abilities to reach what might be called an automation harness? Yes as well.

      • rshackleford1 30 minutes ago
        I send text messages from Emacs because my phone doesn't get service in my basement. Sure I could do the same thing with any programming language, but it took me like 2 hours to hack something together on top of Emacs' built in IRC client.
      • ryukafalz 9 hours ago
        It certainly did for me, because it let me trivially write code that integrates deeply into the rest of the system.

        A simple example: I wrote a function that let me highlight an X.509 cert in a YAML document, regardless of indentation, and pass it to 'openssl x509' to show me what it is. This has saved me lots of time over the years not having to copy/paste, fiddle with whitespace, etc. But it's only valuable because the functionality is now right at my fingertips in the environment I'm already in!

      • wmedrano 8 hours ago
        I think of Emacs as more of a lisp machine than text editor. I'm also not sure what an IDE has over Emacs. I have autocomplete, compiler checks, and run tests all within Emacs.

        For general automation, my blog is built with Emacs Lisp.

      • rausr 9 hours ago
        > Don't forget this is a text editor, not an IDE or some general purpose automation harness

        It's more correctly a Lisp execution environment with a text editor added as a bonus ;)

        • noufalibrahim 9 hours ago
          A lisp interpreter with text editing primitives.
          • DonHopkins 38 minutes ago
            And dynamic buffer local scoping.
      • tikhonj 2 hours ago
        Emacs is, in fact, an IDE and some general purpose automation harness. And some other stuff.

        That's the point.

      • jerf 8 hours ago
        It sounds like you think emacs is some sort of basic text editor, I dunno, like Notepad on Windows, that has an adjoined Lisp interpreter?

        Admittedly, it doesn't help that there are some sibling comments that implicitly seem to be speaking that way.

        However, Emacs is a 42-year-old software program that has been in constant development this entire time. Its git repository has over 180,000 commits right now on its main branch, which is still 20,000 ahead of VSCode. It doesn't just have a Lisp editor attached, it has 1.6 million lines of Lisp in it as well, and that's just the source repo, not all of the extensions you can get for it. Using "cloc" to count the total lines of source it has, it's still pretty close to 2/3rds the lines of code than VSCode has, at 2,613,748 for emacs versus 3,849,521 for VSCode. So that's the scale we're talking here, something on par with an IDE, not something on par with a simple text editor.

        Yes, it gives you a lot of capabilities you didn't have before. The joke about it being a decent OS that needs a good text editor comes from the fact it has a large number of things it can do out of the box that aren't just text editing. It isn't just Notepad with a Lisp interpreter attached. It has vast capabilities that have been implemented and then also tested over the course of decades. Considering the set of disadvantages it carries with it, like weird key bindings and the fact that the variant of lisp it uses is more-or-less unique to emacs, somewhat analogously to the handicap principle [1] one should counterintuitively understand that as a sign that it must have extraordinary strengths that are able to offset that.

        (I've used it for a long time, but I never really learned Lisp. AIs are making it much easier to customize than ever, though. I've said many times here on HN that I think every line of AI code should be reviewed. So yesterday I prompted Claude to build some Lisp functions so I can declare 1. a base directory 2. a regex of file names to match and produce 3. a function to walk over the entire directory forwards or backwards with CTRL-x CTRL-n or CTRL-x CTRL-p, thus allowing me to easily walk through an entire project for review purposes systematically. Nobody had to give me permission to do that. I didn't need to "create an extension". I don't have to care if anyone else in the world wants it. It's not the only editor that can do this as easily as emacs but it's a short list.)

        [1]: https://en.wikipedia.org/wiki/Handicap_principle

        • adrian_b 7 hours ago
          Fortunately all the "weird key bindings" can be easily changed.

          The only difficulty is caused by the fact that already each Emacs mode may change some of the key bindings. Because of that, before deciding on some key bindings you prefer, it is wise to first check the bindings used in all the Emacs modes that you are likely to use frequently, in order to choose bindings that would not conflict with any of those modes.

          • scoops_ 4 hours ago
            There is a decent solution for this, you essentially define your own minor mode with key bindings you want to take precedence. I haven’t tried it myself yet, but seems useful in theory https://youtu.be/D99GB591Vgo
      • homarp 4 hours ago
        the analogy is you have mspaint (or blender)

        you add MCP (or an API)

        suddenly with llama.cpp and a small model like qwen 3.6 35B, you can automate things by just asking.

        emacs same thing, you can 'script' everything. Except no LLM needed

      • forlorn_mammoth 7 hours ago
        > Don't forget this [emacs] is a text editor, not an IDE or some general purpose automation harness

        How familiar are you with Emacs?

      • mvc 3 hours ago
        > You could add lisp to mspaint and mspaint suddenly becomes awesome somehow? I don't follow the logic

        Yes exactly! https://docs.gimp.org/3.2/en/gimp-using-script-fu-tutorial.h...

      • coldtea 7 hours ago
        >Don't forget this is a text editor, not an IDE or some general purpose automation harness

        It's all 3 and way more.

        >You could add lisp to mspaint and mspaint suddenly becomes awesome somehow? I don't follow the logic

        That much is a given (for both)

      • wtetzner 8 hours ago
        > You could add lisp to mspaint and mspaint suddenly becomes awesome somehow?

        TBH that does sound pretty awesome, assuming good primitive operations were exposed through the Lisp API.

        • patrickmay 8 hours ago
          It would become AutoCAD. That is pretty awesome.
      • lelanthran 9 hours ago
        > Did Emacs really give YOU any capability you didn't have before?

        `M-x docter` is something I never had before.

      • skydhash 9 hours ago
        The Emacs API is kinda huge, with things like very raw network API, a very good approximation of fork/exec process management, buffers as the base communication mechanism with a lot of capabilities, various utility function with regards to interfacing with the user (windows, frame, faces, keyboard events), then the hooks and advice subsystem.

        With Unix, most programs are binary and while the shell is a good glue language, you can’t alter a program and the OS that much. With Emacs, only the core coded in C is sacred, anything else can be modified to fit your workflow. And there’s a lot of packages out there to provide you with raw materials.

  • mimo84 11 hours ago
    I have been using emacs for the past couple of years. Started because I wanted to try out org mode and stayed for the extreme flexibility it offers.
    • smitty1e 10 hours ago
      I've been on spacemacs.org for a while, but since I've got a Keychron G6 Pro where I can reprogram the caps lock, I'm going to try out some hard-core init.el stylings.

      Suggestions welcome.

      • mimo84 10 hours ago
        I also started on spacemacs but then I wanted to learn the basics of it and switched to writing my own configuration from scratch. What helped me the most is reading though the Mastering Emacs book by Mickey Petersen which is an amazing resource to learn the basics and beyond. Right now I'm in the process of reducing the number of external packages I use and I'm trying to use more of the built in functionality that is available "out of the box".
  • agentultra 8 hours ago
    I learned a while ago that eMacs is more like a programming environment that has a text editor built in. Sort of like some SmallTalk images. When you think of it this way it’s pretty neat.
  • floathub 9 hours ago
    Came across this recently, which I find is a good and short intro to Emacs for people who don't use it:

    https://www.youtube.com/watch?v=mJZDmO5yOxE

    • pedro_caetano 9 hours ago
      Now I am really curious to see Anon Emoose's init.el
  • SoftTalker 7 hours ago
    Emacs itself can run as a client and server. To start the server:

      emacs --daemon
    
    Then use `emacsclient` to connect to it. All `emacsclient` instances whether in terminals or GUI are using the same server and can access the same open files and buffers.

    Unfortunately it only works locally. I've tried to forward the emacs server socket over ssh to a remote client and it doesn't work.

    • kickingvegas 3 hours ago
      In retrospect, the name `emacsclient` was a poor one because in 2026 most folks new to Emacs expect it to act like a REST client, where runtime state is synchronized between the client and server over a network. Emacs' usage of ‘client’ and ‘server’ here refer to the usage of a Unix local domain (i.e. file system) socket for simple control commands from the socket client. This was later extended to support a network socket, but the client still only sends simple control commands.
      • jolmg 1 hour ago
        > Emacs' usage of ‘client’ and ‘server’ here refer to [...] simple control commands

        Despite that, it still enables this:

        > where runtime state is synchronized between the client and server over a network

        On graphical X11 frames:

        https://news.ycombinator.com/item?id=48864196

        but it also enables having multiple TUI `emacsclient -c -nw` frames over SSH.

    • MarsIronPI 4 hours ago
      Forwarding the socket doesn't work, but if you use X11 then you can use `ssh -X`, and the remote Emacs will open a frame on your local X server.

      Do beware though that if you use the non-PGTK GTK build, closing this new frame will crash the remote Emacs.

      • jolmg 2 hours ago
        `ssh -X` has awful performance for some reason. You can see each line render individually when invoking the Info manual on Emacs even while within LAN.

        It's better if you enable TCP connections on your X11 server, setup a Wireguard VPN between your Emacs host and your X11 server host, and a firewall to only permit X11 connections over that. Throughput and latency then should be so good the remote Emacs window/frame will be indistinguishable from local ones (at least within LAN, haven't really tried over the internet).

        > Do beware though that if you use the non-PGTK GTK build, closing this new frame will crash the remote Emacs.

        Guess I've used the good one. Haven't had this problem. What I do have is that if you open a frame in a host that you then put to sleep long enough for the X11 connection to timeout on the Emacs host, then `emacs --daemon` will crash. When I've used it, I've just made sure to save buffers often. systemd would start `emacs --daemon` again on its own.

        `emacs --daemon` has no problem using multiple simultaneous X11 connections to different hosts, but it just doesn't handle the connections closing on their own. It also doesn't itself close X11 connections when all frames to an X11 server have been closed. So even if you close all of a machine's Emacs frames prior to putting it to sleep, it still causes `emacs --daemon` to crash.

    • rozularen 7 hours ago
      could you see the reason it didn't work?
      • SoftTalker 6 hours ago
        It's been a number of years, and all I really remember is coming to the conclusion that "emacsclient only works with a local server." It uses a domain socket for this, but forwarding that from a remote server doesn't seem to be enough.

        Simply editing a remote file over an ssh connection is easy enough using TRAMP, but that isn't the same as accessing existing buffers in a remote server.

  • driva 9 hours ago
    It's a shell not an operating system but the concept of a shell isn't commonly understood.
    • archargelod 9 hours ago
      I see shell as an instrument through which you use other tools. In that sense, vi feels much more like a shell, because you have to use other standard unix programs with `:.!` for much functionality.

      Where Emacs comes with all bells and whistles included in one big distribution, much like an operating system.

      • cturner 8 hours ago
        Something that undermines the operating system angle is that emacs does not implement hardware drivers. All interaction with the computer go via system calls.

        Norton Commander contains a text editor. Emacs operates at that level, whilst being reprogrammable.

      • regexorcist 3 hours ago
        Most people aren't using vim that way. For your example, tmux would be more like emacs in the sense that you live in it, manages your windows, etc. Vim is just another tool in some window along with others.
  • girvel 9 hours ago
    I did not get this argument. Diagrams are nice, and I probably missed something in lisp code (not used to lisp syntax), but I see no argument that Emacs has more service-like interaction with other apps or its plugins than say vim or vscode. I agree that emacs is the most OS-like, but I would love if someone explained what exactly is the point in the article
  • kickingvegas 1 hour ago
    OP here. This post resonated far more than expected. Thanks all for the feedback!
  • bitwize 9 hours ago
    In Emacs, everything looks like a part of the core system. The whole thing is just one unvariegated blob of Lisp, which could be a strength or a weakness depending on your perspective. Me, I happen to like that sort of thing.
  • adi_kurian 4 hours ago
    [dead]
  • cyboru 4 hours ago
    [dead]
  • fgeytk2 11 hours ago
    [dead]