14 votes

Toward a "modern" Emacs

21 comments

  1. [10]
    Kremor
    Link
    As a modern emacs user all I always find myself so frustrated with discussions like this, the solutions seem so obvious: sane defaults; better UI; LSP integration; a more intuitive package...

    As a modern emacs user all I always find myself so frustrated with discussions like this, the solutions seem so obvious: sane defaults; better UI; LSP integration; a more intuitive package manager, but nothing ever happens duo to the friction with old users.

    It reminds my a lot of the old blender's UI debate, where new users always complained that the UI was ugly and overcomplicated, but old users always disregarded such complains saying that if it worked for them it should work for everyone else. At some point Blender Guru started to make a lot of noise about creating a new UI, he even created he's own proposal, and then, 6 years later we got version 2.8. I wonder how much of his celebrity status in the blender community contributed to that, and how much was because it was meant to be.

    10 votes
    1. nothis
      Link Parent
      From the comment section of your Blender conference vid: I didn't dare to actually look for that bit. It gives me shudders just to think of it.

      From the comment section of your Blender conference vid:

      I literally face-palmed when the audience member suggested that the UI should be complicated so new users won't think it's a "toy" -- and got applause!!??

      I didn't dare to actually look for that bit. It gives me shudders just to think of it.

      4 votes
    2. [7]
      cstby
      Link Parent
      The solutions seem obvious, but they really aren't. I don't disagree with the ideas you listed above, but what exactly are "sane defaults" and how exactly would that affect the user experience?

      The solutions seem obvious, but they really aren't. I don't disagree with the ideas you listed above, but what exactly are "sane defaults" and how exactly would that affect the user experience?

      3 votes
      1. [5]
        snazz
        Link Parent
        Take Sublime Text as an example of an editor with "sane defaults". Out of the box, keyboard shortcuts work exactly like other applications on your system (although you can rebind them, of course)....

        Take Sublime Text as an example of an editor with "sane defaults".

        • Out of the box, keyboard shortcuts work exactly like other applications on your system (although you can rebind them, of course).
        • Scrolling feels smooth and natural with any mouse or touchpad. I could never get this working perfectly in Emacs no matter how hard I tried.
        • Syntax highlighting for common formats like Markdown doesn't require third-party packages.
        • Installing a new plugin is as simple as typing a few commands into the command palette (conceptually similar to M-x) or clicking in the menus. You can use alternative Package Control repositories, but you don't need to write elisp to configure the default.
        • Settings are changed through JSON, not elisp. When editing your Sublime config, two editor panes open, where the left one shows the default settings and explanations in comments.
        • Packages are separated from one another in a more natural way. Package conflicts are rarer.
        • The plugin-writing language is Python 3, not elisp. Even if you like Lisp, elisp is a poor example. Far more people know Python anyway.
        • Compared to Emacs distributions like Spacemacs, Sublime's performance is amazing.

        Emacs can attract new users without losing its principles, but it's going to require some serious effort and willingness for change from the maintainers.

        6 votes
        1. [4]
          mrbig
          (edited )
          Link Parent
          While most of what you wrote make sense, decoupling Emacs from elisp would be equivalent to make it not Emacs. It really is what makes Emacs, well, Emacs. If you remove Elisp, you’d better off...

          While most of what you wrote make sense, decoupling Emacs from elisp would be equivalent to make it not Emacs. It really is what makes Emacs, well, Emacs. If you remove Elisp, you’d better off making a new editor from scratch.

          Edit: besides, Elisp is probably a lot nicer than many people think.

          7 votes
          1. [2]
            snazz
            Link Parent
            I do agree with you. My first, second, third, fourth, sixth, and eighth points are possible while retaining elisp as the configuration language. By having better defaults—like using MELPA out of...

            I do agree with you. My first, second, third, fourth, sixth, and eighth points are possible while retaining elisp as the configuration language. By having better defaults—like using MELPA out of the box and including syntax highlighting for modern formats and using the two-pane approach to editing config.el—I think it's possible to significantly improve the user-friendliness of Emacs without dropping elisp.

            2 votes
            1. cstby
              Link Parent
              I agree with this. Moving away from Elisp would never happen. It would be another editor. A lot of the other suggestions are reasonable. Key bindings in particular. And I was also surprised that...

              I agree with this. Moving away from Elisp would never happen. It would be another editor.

              A lot of the other suggestions are reasonable. Key bindings in particular. And I was also surprised that markdown was not built.

          2. Codo_Sapien
            Link Parent
            While you're probably right regarding Elisp replacement, I still find stuff like the Remacs project an interesting exercise.

            While you're probably right regarding Elisp replacement, I still find stuff like the Remacs project an interesting exercise.

            1 vote
      2. Kremor
        Link Parent
        @snazz gave you an excellent answer, but I would add that vanilla Emacs has bad defaults, bad defaults being how much the software gets in the way for doing simple tasks, or putting it another...

        @snazz gave you an excellent answer, but I would add that vanilla Emacs has bad defaults, bad defaults being how much the software gets in the way for doing simple tasks, or putting it another way: assuming a basic level of computer literacy, how much a new user would struggle to do basic tasks in comparison to similar applications.

        If all I want is to write code, changing between Intellij Idea, Sublime Text, and VS Code is not much of a problem, all of them behave the same for the most basic tasks, and in some cases they even tell me how can I improve my experience (VS Code and Intellij). But once I add Emacs to the list things aren't as easy.

        1 vote
    3. zlsa
      Link Parent
      To set the tone for the rest of my comment: I consider myself a Blender power user. I mostly use keyboard shortcuts, I use right-mouse-button to select, and I've customized the layout to speed up...

      To set the tone for the rest of my comment: I consider myself a Blender power user. I mostly use keyboard shortcuts, I use right-mouse-button to select, and I've customized the layout to speed up my workflows.

      Blender 2.8 brought tons of huge improvements to usability everywhere in Blender. But it also irrevocably broke some of my workflows in ways the developers probably didn't intend. Before you label this comment as noise, let me make my case as to how new versions of Blender have hurt usability for power users, as a direct tradeoff to improving usability for new users.

      File Browser

      One of the important bits of UI for any application is the file browser. Blender has its own UI (and it always has), which is one of the reasons that the UI is so fast and well-integrated. That means it also has its own file browser, that's distinct from the platform's default file browser.

      Despite being a very graphical application, Blender makes heavy use of keybindings. Pressing "Enter" in the file browser will select the current file, no matter where the mouse is. By default, when you press Ctrl-O to open a new file, Blender pre-selects the currently open file. Due to the way Blender saves and caches data, re-opening the current file is a relatively common occurrence. Before the UI changes, you could re-open the current file with Ctrl-O Enter. This worked every time because Blender didn't have any warnings about unsaved changes, and the behavior was predictable. However, in a recent version of Blender, there's a new "Unsaved changes!" dialog, which gives the user the option to either ignore the changes, or press Enter to save the file. If "Save" is selected, the file (and all images) are saved to disk. Importantly, if the only change is an in-memory image, Blender still considers that to be an unsaved change.

      Sidenote:

      Baking in Blender and other 3D software is the process of calculating the lighting or surface of an object, and applying it to a texture instead of making a rendered image. That way, the baked image can be used to simulate advanced lighting and effects in real-time applications without having to perform the expensive calculations at runtime.
      In Blender, baked images aren't automatically saved to disk; instead, they stay in memory, and if a new file opens, the in-memory images are lost.

      Sometimes, I'll do a test bake of a model. If it comes out correct, great! I can save the image to disk. But if the bake comes out wrong, I don't write it to disk (because it would overwrite the existing, good bake image.) I don't normally check if Blender has any unsaved changes, so when I try to reload the current file with Ctrl-O Enter, I accidentally write the bad file to disk.

      This is behavior that is intentional, but (sometimes) causes me to overwrite files. It means that Ctrl-O Enter no longer reloads the current file; sometimes, instead of Ctrl-O Enter, it's Ctrl-O <Don't Save> Enter. The only way to tell is to see if Blender has unsaved changes, and to react accordingly.


      I totally get that I'm the guy holding down the spacebar to perform an operation, but Blender 2.8 has made my workflow slower in a dozen or so ways. And it is important to make Blender easier to learn; it's not that important to keep power users like me happy. (Let's be honest: I'm not switching to Maya no matter what.) The Blender developers are also power-users of Blender, and they're intimately familiar with Blender, and have no desire to dumb it down at the expense of power-users. But it's sometimes not possible to preserve the speed that power-users want while making a program more user-friendly. At the end of the day, 3D creation tools like Blender are inherently complicated to use. The fact that people can download Blender and make donuts in 24 hours is nothing short of incredible. But it kind of sucks that making Blender easier to learn for new users means sometimes, it gets slower for me.

      1 vote
  2. [7]
    Codo_Sapien
    Link
    I agree with all frustrations toward the reluctance towards modernization because classic users don't want to relearn a new Emacs experience. Emacs is the ultimate configurable experience! I'm not...

    I agree with all frustrations toward the reluctance towards modernization because classic users don't want to relearn a new Emacs experience. Emacs is the ultimate configurable experience!

    I'm not an old-school Emacs user. I am predominantly a Windows Emacs user who was attracted by the sheer power of org-mode, but I find myself straddling text editor operations between Emacs, VS Code, and Notepad++, because, to me, the Emacs experience is just so... alien. I want to bring more of my workflows into Emacs, but, honestly, I am overwhelmed.

    My org-mode addiction is too strong to leave Emacs for good, and I honestly want to incorporate more use of Emacs in my world. But, I don't have the time to learn and build and maintain an Emacs experience that is satisfactory.

    I'm currently trying to deconstruct my Emacs habit with DOOM Emacs, because everything is preconfigured. It's doing what vanilla Emacs should be doing. Now, my biggest hurdle is dealing with learning evil-mode, but honestly, I'm at the point where it is a sacrifice I'm willing to make because so much comes with it. DOOM, and other layer projects like it, are doing what the vanilla Emacs experience isn't - modernizing the best editor and modernizing the onboarding process.

    Why can't these concerns be addressed by simply adding a "classic" flag during install, that preserves the 1990s experience? Even better, an optional config dialogue could be introduced help target the way you are going to use Emacs during install - "Are you new to Emacs?", "What do you want Emacs to look like (light/dark/etc.)?", "What do you want to do with Emacs - development/source control/text editing/email/org-mode?", and so on.

    6 votes
    1. [2]
      pallas
      Link Parent
      Recent DOOM versions work rather well without evil: have you tried just disabling it? I've been less frustrated with DOOM sans evil than with any other way of configuring Emacs that I have tried,...

      Now, my biggest hurdle is dealing with learning evil-mode, but honestly, I'm at the point where it is a sacrifice I'm willing to make because so much comes with it. DOOM, and other layer projects like it, are doing what the vanilla Emacs experience isn't - modernizing the best editor and modernizing the onboarding process.

      Recent DOOM versions work rather well without evil: have you tried just disabling it? I've been less frustrated with DOOM sans evil than with any other way of configuring Emacs that I have tried, even though DOOM occasionally itself has really unfortunate changes to defaults that are very poorly documented and sometimes very difficult to change.

      1 vote
      1. Codo_Sapien
        Link Parent
        Honestly, I'm getting fairly used to it pretty quickly. Hlissner's comments about his vim-forward attitude made me concerned about being unable to work in DOOM, but it's good to know that evil...

        Honestly, I'm getting fairly used to it pretty quickly. Hlissner's comments about his vim-forward attitude made me concerned about being unable to work in DOOM, but it's good to know that evil mode isn't as high a barrier to entry as I was afraid.

    2. [4]
      cstby
      Link Parent
      Do you have any recommendations for learning org mode? I've been using Emacs for a few years and I'm just getting into org mode now. :) So here's a question: if you have great distros like DOOM,...

      Do you have any recommendations for learning org mode? I've been using Emacs for a few years and I'm just getting into org mode now. :)

      So here's a question: if you have great distros like DOOM, Spacemacs, Prelude etc., then why do we need Emacs to have better defaults?

      1. Kremor
        Link Parent
        Why a new user would know about those distributions? Why is necessary for a new user to install a distribution just to make Emacs more usable? Ideally a user would start messing with Emacs once...
        • Why a new user would know about those distributions?
        • Why is necessary for a new user to install a distribution just to make Emacs more usable? Ideally a user would start messing with Emacs once they feel comfortable with it, not the other way around: install a distribution to make Emacs more comfortable from the beginning.
        • I would argue that the fact that so many distributions exists is because Emacs has an awful user experience out of the box.
        3 votes
      2. Codo_Sapien
        Link Parent
        The official documentation is pretty solid. A lot of org-mode guides prefer to cover basics that only apply to the presenter's workflow, like notetaking or task processing, but the manual has...

        Do you have any recommendations for learning org mode? I've been using Emacs for a few years and I'm just getting into org mode now. :)

        The official documentation is pretty solid. A lot of org-mode guides prefer to cover basics that only apply to the presenter's workflow, like notetaking or task processing, but the manual has covers everything org-mode has to offer.

        Also, I can't think of any off the top of my head, but there are a few great YouTube tutorials and other videos where people show off their personal org processes.

        So here's a question: if you have great distros like DOOM, Spacemacs, Prelude etc., then why do we need Emacs to have better defaults?

        I'm thinking of the barrier of entry for new blood. I'm not a fan of the whole self-sufficient, "badge of honor" mentality when it is applied to choosing your text editor. If you choose Emacs, that's awesome! Let's not get in the way of the beginner enthusiasm.

        Not everyone is coming to Emacs aware of the distros, and if you've played with other editors like VS Code, there's often a lot more modernity to offer by default - simply by virtue of the fact those editors are not 40 years old.

        In a similar vein, I'm also aware of packages like Cua mode, which changes basic editor operations like cut/copy/paste to a more known C-x/C-x/C-v. Why isn't this turned on by default? I can't think of another program I don't use this convention.

        I was willing to conform to the Emacs way, but I'm not sure how many new users feel this way. Getting from the initial onboarding to feeling productive in Emacs should be as small a window of time as possible.

        2 votes
      3. helloworld
        Link Parent
        Org-journal. With a single keystroke, you get a clean tidy org file for the day you are at. Older journal files are another keystroke away, in nice chronological order. This is first step into...

        Org-journal. With a single keystroke, you get a clean tidy org file for the day you are at. Older journal files are another keystroke away, in nice chronological order.

        This is first step into org-mode and taking daily notes with it. Over time you'll keep discovering more stuff as and when you find need, and then natural progression will tale you to the skies.

        1 vote
  3. [2]
    cstby
    Link
    Why do people use Emacs? Any discussion of "modernizing" Emacs must start with this question. I think the unique value of Emacs is its customizability and extensibility. The reason it's not as...

    Why do people use Emacs? Any discussion of "modernizing" Emacs must start with this question.

    I think the unique value of Emacs is its customizability and extensibility. The reason it's not as popular as VSCose is because not everyone needs or wants that unique value. Many users just want something simple that works so they can write some javascript or python.

    If you want Emacs to look modern, you can configure it to look modern. So what's the point of better defaults? Who the heck would use Emacs without configuring it at all?

    3 votes
    1. grungegun
      Link Parent
      It's a bit like with css. The point of it is configuration, but most browsers have default values which give a good plain page. If instead these defaults were automatically set to be ugly, a lot...

      It's a bit like with css. The point of it is configuration, but most browsers have default values which give a good plain page. If instead these defaults were automatically set to be ugly, a lot of people would feel discouraged by their first steps toward making a page.

      Of course, eventually everyone is expected to override default css behaviour to get standard usage across browsers, but encouraging those first few steps is a great thing. I am not an emacs user. Personally, I think an option for tooltips (It may have these in the default, but I don't know) would be nice, so I could know if common actions have shortcuts.

      2 votes
  4. [2]
    imperialismus
    Link
    The amount of snark in this article is off the charts, and convinced me I'll never touch Emacs despite the fact that I actually like Lisp. If you want to attract mainstream users, you need to make...

    The amount of snark in this article is off the charts, and convinced me I'll never touch Emacs despite the fact that I actually like Lisp.

    If you want to attract mainstream users, you need to make the experience accessible to those users. I don't get why power users are upset about changing defaults, when it would be trivial for them to change them back, while the same is not true of beginners. Have a legacy mode or something, or if that offends your sensibilities, offer an option to easily enable a non-default "beginner mode" at install or first launch. If you want to remain a niche experience by refusing to adapt to more popular conventions, that's totally fine, but then you don't get to complain about the lack of new user adoption.

    It's like they want to convert people to their religion, but they refuse to consider syncretism and they lack the overwhelming force which otherwise tends to accompany mass conversion.

    2 votes
    1. zlsa
      Link Parent
      I don't understand the goal of increasing the userbase of an application, especially one with such a dedicated and entrenched user base as Emacs. If Emacs users are happy, great! The application...

      I don't understand the goal of increasing the userbase of an application, especially one with such a dedicated and entrenched user base as Emacs. If Emacs users are happy, great! The application does what its users want. It's not like Emacs is paid software. If a new user sees Emacs and decides to not use it, I don't see that as a downside of Emacs. There's no lack of text editors.


      On Emacs: I'm an Emacs user, and I strongly dislike it. I wish I could switch to a more modern editor that had a more standard plugin interface and better cross-platform compatibility. However, I'm stuck using it because my muscle memory has been built for over a decade, and Emacs does have some pretty awesome tools (even though I barely scratch the surface of the more complex ones.)

      I've tried so hard to use other editors, because Emacs is showing its age. But no editor has the same featureset I need, even with plugins. Things like keybinding-based text selection, real-time automatic indentation, and ridiculously good performance just don't exist in other text editors. I've tried Sublime Text 3, VSCode, Atom (back in the day)... none of them have enough advantages over Emacs to get me to switch.

      1 vote