8 ms·
While I am a fan of Emacs (IMO any one of Org, AUCTeX, or Magit is in itself a worthwhile reason to use Emacs, though of course the ease of customizing nearly a
by svat 7y ago
While I am a fan of Emacs (IMO any one of Org, AUCTeX, or Magit is in itself a worthwhile reason to use Emacs, though of course the ease of customizing nearly anything with just a few lines of elisp is the main comfort), I think it's also worth looking at lessons from the failures of Emacs — what prevents or prevented Emacs from being even more successful? (As the post says, Emacs's "success" is only when considered relative to other malleable systems.)
- dmortin 7y agoThe defaults. They aren't very good, IMO. Many users don't want to spend time with customizing, they want a system which works instantly with language plugins, and so on. VSCode does a very good job at that. Emacs is for people who like to deeply personalize their editors. That's why I use it. But it takes time and learning elisp and many people are unwilling to do that.
- mrspeaker 7y agoMy theory is that the awful defaults are a test: a baptism of (pretty ugly) fire. It's designed to make you take one look and walk away in amused bewilderment... which I'd say is the right choice for most people! People want "it just works tm". Emacs is not that kind of application. If you actually go through the crazy slog of making it usable and beautiful, then you pass the test and are hooked forever.
- jpxw 7y agoI’m not sure this is true. The enormity of the amount of things that need to be configured before it becomes usable leads new people to use things like Spacemacs etc. This means they rely on other peoples’ config, and aren’t able to customise the editor for themselves. The same issue exists in Vim. So many nice features of Vim (such as file management using buffers) are underused, because by default they aren’t configured in a usable way.
- clarry 7y agoOtoh Vim has some good stuff out of the box that emacs sorely needs. Completion? ^N/^P and the same prefixed with ^X are very useful, no configuration required, and I have not found anything like that for emacs. Ctags works out of the box. It's a bit weird that cscope integration is worse (you need a script that scans up your directory hierarchy to find the database; ctags support has this built in). In emacs you can install the xcscope package but it's miserable compared to vim's built-in cscope support, and doesn't integrate with evil's tag stack.. sigh.
- catalogia 7y ago> Completion? ^N/^P and the same prefixed with ^X are very useful, no configuration required For each their own I suppose. I despise those bindings and use the tab key instead, like nearly every other program that has completion.
- brlewis 7y agoI remember using emacs for C programming with make. M-x compile worked out of the box. I don't think emacs culture would suffer if TypeScript worked out of the box today.
- patrec 7y agoEven if you are an elisp expert, emacs is by now quite inferior to VSCode for most things; what you get out of the box with vscode beats laborious customization by expert hands in emacs 9 times out of 10. Emacs still does some fundamentals better (undo), can be used in a terminal and, if you avoid bloatware like spacemacs, also offers better performance. If one is willing to ignore the spyware and proprietary component aspects, vs code by now is a better choice even for most power users, IMO.
- taeric 7y agoI find this hard to believe. Not that you may like one over the other, but that one is superior. Getting used to tramp, magit, and eshell has effectively made it so I will be in Emacs forever. Adding in developer modes helps. Same for org. But really it is the seamless eshell ability to "cd /ssh:mycomputer/" and not with about reconnecting a terminal over and over that is something I don't want to leave.
- jasondclinton 7y agoThat's also built into VSCode. The feature is called "Remote".
- taeric 7y agoNot the same, from what I have seen. But, more pointedly, I have been doing this specific workflow for over the last decade. So, it is close. But most of Emacs "just works" over a tramp connection. From git to old and new code completion. And has done so for a long time.
- agumonkey 7y agoI tried typescript lsp in emacs (tide) and it gave me a lot for free (realtime type check, formatting). What else VSCode has ? nicer hints (dom based) and refactoring ? Genuinely curious. Also VSCode puts my poor laptop to its knees. Core i5 cannot handle few keystrokes in a row.. that was quite a shocker tbh.
- agumonkey 7y agoBut I believe people trying emacs are attracted by it because something in them makes them crave customization above out-of-the-box productivity.
- afroisalreadyin 7y agoAs a die-hard Emacs user, this is also something that has been occupying me lately. There is too little thought going into the deficits of Emacs; many people I convinced to give it a try went back to Sublime, VSCode etc. Emacs has two main shortcomings, in my opinion. The first is that the visual aspect of programming is completely left out. You can have nice outlines, pop-ups, tree views etc. in most other editors; Emacs completely ignored these. The main argument has always been "won't work in a tty", but there should come a point where tty is deprecated or at least treated differently. The other is evolving the language. Elisp was great for its time, but compared to modern languages its age clearly shows. There are no namespaces, it can be dead slow, support for networking is limited, regular expressions are weird etc. I think there should be more work going into modernizing the language, which can also be used to introduce facilities for GUI elements and networking code, especially async.
- slightwinder 7y ago> The first is that the visual aspect of programming is completely left out. You can have nice outlines, pop-ups, tree views etc. in most other editors; What do you mean? Emacs has them too, just not nice ones. Also, emacs is not an IDE, so there is some limit on what kind of interfaces people will build. But yes, the GUI-parts of emacs are a big liability for future growing. While emacs does has offer all the nice visual tweaks, they also all sucks because of bad implementation and limitations in emacs itself.
- otabdeveloper4 7y ago> Emacs has two main shortcomings, in my opinion. Eh, no. Emacs has a shitload of bugs (sorry for the language), and an ad-hoc configuration and package installation that inevitably turns your Emacs installation into a bespoke ball of mud. (Goes in hand with 'malleability', I guess, but still a very subpar user experience.)
- afroisalreadyin 7y agoI'm not going to "defend" Emacs here, it's a piece of software and you use it if it suits your purposes, but I find it to be quite stable for the feature set it offers. Also if you put moderate effort into it, it's possible to achieve a reproducible packaging and configuration state. I can check out my .emacs.d (https://github.com/afroisalreadyinu/emacsd/ https://github.com/afroisalreadyinu/emacsd/) on any Linux computer, start Emacs and work on it as if it's my own computer.
- slightwinder 7y ago> what prevents or prevented Emacs from being even more successful? Because is big, stuck in it's own past, with many useless quirks. Additionally the malleable system has a price, which for most is bigger than it's benefits. Emacs is always stuck in a loop of fetching up with the rest of the world, living in it's own utopia and creeping away everone who can't dive deep fast enough. Most people are pracmatic about their tools. Tools should just do their job and don't get in the way. Emacs doe not deliver that, and the people can be quite dogmatic about certain things. It changed in the last years, fresh blood and concepts are spreading their influence, but we will see in another decade whether this actually had some longlasting effect or was jsut another circle of quirk-building.
- barrkel 7y agoEverything you write I see the other way around. I've been using IDEs for nearly 30 years, from QBasic in DOS, Turbo Pascal, Visual Basic, Delphi, Visual Studio, Eclipse, RubyMine, IntelliJ... and every time my career shifts a bit, I ended up learning a new IDE with new keystrokes and new idioms. Changing IDE every 3 to 5 years gets old after a while. You learn not to learn too much of the IDE, because a lot of stuff beyond the basics of text editing won't come with you to the next IDE. Emacs changes that. You can stay with Emacs for a whole career, because it's so malleable and extensible it can adapt to new trends, languages, etc. When you say "stuck in the past", I say "stuff I did 20 years ago still works". You say fresh blood and concepts are spreading their influence: I don't see that as new, that's always been the case. YMMV. I use IntelliJ for editing Java these days, but it's the only IDE I tolerate [1], and I still switch to Emacs for complex text editing. I live in gentle hope that growing language server support will reduce the need to tolerate IDEs. [1] IntelliJ is far inferior to Eclipse for incremental compiles and running tests, but Eclipse has a horrific UI, weird modal system, and a parallel project management universe in workspaces. Neither have editors as good as Emacs.
- brlewis 7y ago> YMMV. I use IntelliJ for editing Java these days, but it's the only IDE I tolerate [1], and I still switch to Emacs for complex text editing. I live in gentle hope that growing language server support will reduce the need to tolerate IDEs. If you tried and rejected lsp-java I'd be interested in your experience. I've been eyeing it as a way to get rid of my last non-emacs editing.
- ken 7y agoI wouldn’t call that it’s only success. It’s an application that’s been used and maintained for 40 years. It’s the application that practically spawned the Free Software movement. It’s one of the most portable programs I’ve ever seen. The basic interface has been cloned (with less malleability) dozens of times. It may not be the most used text editor today but overall I’d rank it one of the most successful applications in history — along with perhaps Netscape and Excel.
- svat 7y ago(Replying to myself.) For what it's worth, I somewhat regret the wording of the parent post. I was hoping for a thread on lessons from Emacs generally applicable to the topic of malleable systems — maybe things like: (1) periodically integrate the community's best "packages" into the "core" else you'll have a mess (also consider: LaTeX), (2) figure out how you can continue to change defaults without fear of breaking old users' workflows — whatever, I was hoping for more lessons — but instead it (I should have known this!) became a thread mostly about Emacs in particular.