emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

My perspective as a mid-level user on pros/cons of different editors


From: Rudi C
Subject: My perspective as a mid-level user on pros/cons of different editors
Date: Wed, 20 May 2020 04:59:45 +0430

# Jetbrains IDEs

Heavyweight, hardest to customize, usually the most feature-rich and performant. I like them best for static, compiled languages such as rust and scala, as they are the most powerful and robust there. My experience with Pycharm has been lousy (The IDE suddenly said everything was undefined. I switched back to my emacs after wasting some time troubleshooting the problem.). Good support for frameworks and inline, inner languages such as HQL (a SQL variant for ORM in Java). The documentation panel doesn’t wrap correctly in many languages. No remote editing support. 

Adding support for a new language is usually as easy as searching for a plugin and installing that. Things work out of the box. Well.

Can’t run in the terminal. Closed source, though plugins tend to be open source.

# vim/neovim with little config and plugins

Extremely lightweight. Great remote editing with scp. I also use vim emulation everywhere else, so I obviously like that. Vim modal editing and minimalism lends itself well to use on remote terminals directly, especially on iOS. The lack of configuration also means it never breaks, or needs to wait to index, or whatever. It’s also either preinstalled or easy and quick to install on unix machines.

Obviously, little support for any IDE feature.

## Spacevim

Somewhat slow-ish. The configuration is also specific to Spacevim, and so locks the user in, and makes following documentation elsewhere online difficult. The Spacemacs-inspired keybindings are a delight, and so are some miscellaneous features Spacevim enable by default. Needs patched fonts to display correctly, but doesn’t install them for you automatically. I personally have an alias that invokes neovim with Spacevim, but I keep the default config of my vims minimal. Spacevim also is somewhat buggy, and their support community is weak.

Spacevim has modules for different languages, which in my not so informed opinion are not all that good. Seemed out-of-datem and unmaintained to me. This, though, is a problem all modular starter packs (Spacemacs, Doom Emacs, Spacevim) except VSCode share, more or less, with Spacemacs’ being the best IMO.

# Plain Emacs

I have never tried plain, unconfigured emacs except for reporting bugs. My first impression of its UI is bad. I think hiding the toolbar improves the UI.

## Spacemacs

Not well maintained. PRs can be very slow to merge. Master branch is basically dead. Issues also don’t seem too well; The good ones include a workaround in the comments but no fix in the repo, and the bad ones are marked “stale” by a bot with little progress. Still, the community is pretty helpful and the workarounds, ahm, actually work, so not that bad. Has lots of (LOTS OF) features and cruft, which can occasionally make Spacemacs buggy and slow. Tramp never worked for me in Spacemacs, for example. Spacemacs famous keybinding scheme rocks, and is the best one I have seen in any software. The configuration (at least the version I started with, perhaps it has changed) mixed private Spacemacs config with user elisp code and emacs customization, which is a bad practice. Spacemacs supports a modular pack system, and names them “layers.” These layers are unmaintained and unoptimal in my experience/opinion, but they nonetheless provide the best JustWorks experience in the emacs/vim world.

Spacemacs can become quite heavy and slow to start (perhaps I have too many layers active). Daemon mode recommended.

## Doom Emacs

Friendly maintainer and good community in discord. Provides a snappy UI and good defaults. Enables lots of good features by default, but few bad ones. Does not feel crufty. Fast to start. Somewhat lightweight. Supports modules for adding functionality like language support, but again the modules are not that good. I think they are worse than Spacemacs, but better than Spacevim; Idk. Still has a few bugs and rough edges (for example, you need to disable solaire-mode for the daemon mode working correctly), but much much better than Spacevim and Spacemacs. Copies Spacemacs keybinding scheme, better than Spacemacs itself IMO.

The configuration system is the best one I have seen in any editors. Provides good macros for helping one customize things. I imagine copying the relevant code should be easy, so minimal lock-in, hopefully.

## Emacs in general 

The most extensible software I have ever seen. The easiest to extend between the editors. Horrible support for most languages; One needs to spend a lot of time to configure support for a new language, and things keep breaking when anything updates or even randomly. Most languages won’t ever get good support even after substantial time invested in configuring them. Adding IDE features tends to make Emacs slow. My best experience has been with elisp, clojure and coq. My worst experience has been (probably? Most of my experience in language support has been terrible anyways) scala via (now defunct) ENSIME. Just today, I tried getting julia to work via lsp. After spending an hour or two, I understood that this simply was nigh impossible with Julia 1.4. 
In summary, Emacs is good for some specific well-supported languages (even then with lots of harassment and breakages), and obscure languages that are not supported well anywhere (e.g., verilog), and non-code text editing. It’s also an engine one can build one’s own software on, though I think it might be that using other tools (perl, fzf, ripgrep, ...) might be easier at least in the short term.
Emacs is also used for things like Twitter and Reddit. I found these uses badly supported, and not pragmatic. They appealed to my inner nerd, but I think a dedicated CLI will be better, and the original website possibly the best.

tramp mode supports remote editing.

Best experience in REPL-orinted programming between all the editors. Emacs itself is one huge REPL.

Free software.

# VSCode

Everything (almost always) just work. Supports lots of languages, and supports them well. Adding support is easy as easy as searching for the language and clicking install. Customizing predefined options is a breeze with both good GUI support and good JSON support. Extending stuff without writing a verbose plugin is pretty much impossible. Even plugins are only offered a limited API for extending VSCode. 

Can’t run in the terminal. 

Good remote editing support. Beautiful UI. Inefficient because JS. Very well maintained, and regularly GROWS BETTER. Next year this time it will probably be THE notebook editor. Professional culture in maintenance also means the needs of experts are deprioritized. Does not support a documentation panel, though a documentation popup is supported. While language support is top notch, other good features are not as mature as emacs/vim.

The most innovative of the editors listed here.

# Conclusion 

With VSCode around, emacs is simply not worth the investment for new users IMO. I think most of the automation value should be realizable by using a combination of VSCode extensions, unix scripts, interactive CLI apps, and GUI scripting tools. To make emacs viable again:

- Complete, first-class LSP support. Without this, all the fancy features of emacs are basically useless. Remember, a car needs first and foremost to move people from A to B. A stationary car with a rocket launcher is cool but also not much of a car.
- Maintained module systems a la Spacemacs and Doom. Extensibility is great, but this is no excuse to have no defaults or bad defaults. As the market is asserting, most of the value can be achieved via generic defaults. All of that extensibility is less than 10-20 percents of the value of a good, capable IDE.
    - Note that the above should make breakages less likely, as modules pin their packages to specific commits/versions.

Of course, it takes more than making emacs viable to make it popular, but as things stand, emacs is not worth learning even for someone who wants to become a power user. It’s of course still worth it for those of us already invested in the platform (I personally use Doom Emacs plus my own config as my main editor), but NOT for new users. I fear that the situation will only get worse in the future, as VSCode enjoys both being a popular opensource project in the popular _javascript_ language, and a pet project of Microsoft.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]