A critical look at Atom.io
reza.jelveh.me
reza.jelveh.me
Are we still seriously discussing a closed source, non-free, Mac only Sublime Text clone that was written in Javascript and as it turns out, is painfully slow?
Say what you will about Proggit, but at least the discussion there isn't all "OMG I can switch from Sublime now!!!". Jesus Christ.
So I use emacs.
I don't really get all the IDE hype outside of what I consider to be the big 3 required ones (due to vendor restrictions or in AS's case, isn't Eclipse): VS, XCode, and Android Studio.
For the rest, it seems that vi and emacs do what would be needed, and work on everything. Why not just improve on those two products instead of making new ones that are simply short lived fads?
I'm sure people said the same thing about vi/emacs when they came out.
OTOH I don't know if that's the case for vim, which is what people seem to mean these days when they talk about vi.
vim also has a pretty horrible codebase. horrible not because bad developers are working on it. horrible because of historical reasons. but neovim is actually in the process of doing what everyone said nobody could do.
He didn't say it was vim. You took it as your opportunity to express your Opinion, since he mentioned something you care about, but just look like the kid in class raising his hand as high as he can yelling "Me! Me! Pick me!".
Pay attention.
While I get why new editors pop up, and really, I'm glad we have people trying to innovate and introduce new ideas, I'm ultimately more interested in stuff like the Neovim project, for this reason.
I will say it's nice when someone creates a new product that has a killer feature or two, because some form of that seems to make it's way back to vim/emacs pretty often.
The general population of HN seems to cares enough to upvote them (original post has 1300pts which is high) so either write an extension to block them or just ignore them and upvote other articles. GitHub has a lot of good will with people who read HN so of course articles about them will be popular. See: whenever GitHub goes down.
Same thing happens with bitcoins and pretty much any other popular topic.
With the risk of sounding like a prick, I share this sentiment. People who like to hack their editors already use vim/emacs. Those who don't, are happy with whatever they're using.
Sublime Text proved exactly how quick a closed source editor can fall out of favor with people. Its 3rd iteration wasn't even released, and you already hear as much complaint about it as praise.
Seriously though, the fact that:
It's closed source
It's Mac only
Written in Javascript
Painfully slow (compared to Vim)
probably don't matter much for many HN users. The things that do matter (powerful text manipulation, batch editing, block editing, multi-select, etc) are being handled by this editor. That's fine.Please don't show up and start saying "STOP LIKING THINGS I DON'T LIKE!!". It's not helping.
It's a pretty sad state of affairs when "painfully slow" doesn't matter.
I disagree. Speed is the biggest thing that matters to me, the reason I switched to SublimeText couple years ago and still am using it right now is because it's blazing fast (especially ST3).
Have you read the article you are commenting on? It talks about the exact opposite:
> Compared to Atom the search [in Textmate] is blazing fast.
> Doing regex searches in vim on that file is instant. The memory barely moves. Searching for the character d takes almost 10 seconds in Atom, and significantly increases memory usage. When I say significantly, I'm talking 200 megs.
That doesn't mean powerful anything to me. Especially not text manipulation.
EDIT: Also, I don't care if people actually like things. What bothers me is blind fanboyism/praise for something people used for 2 days at the max.
For instance, I messed around with sublime text and I really dug how it handled multiple cursors. I'd never say something like vim couldn't do that, but sublime (for me) made multiple cursors seem intuitively powerful and useful, in that I could perform quick operations in seconds that I wouldn't have thought to perform in that way before.
I'd say it's similar to me if you were to compare regex find/replace with normal find/replace. It's a more powerful/flexible idea. Whether or not it's a good one is up for grabs.
That said, the speed does sound like it could be a problem. I just don't think power text manipulation is referencing processing efficiency.
I'm wondering how the efficiency of this setup is played out in stuff like Light Table and Brackets, which seem pretty similar (I think the front end on those is just html? I could be totally wrong). And like I said, so far I'm way more interested in neovim than any of the newer other browsers.
I'm playing around with React (and Om, Quiscient etc) at the moment and it's by far the nicest UI model I've ever encountered. If I could get Cassowary working reasonably fast too it would be miles ahead of anything else.
The only thing that I don't see improving soon is not having shared memory threads (or even zero-copy messaging). Webworkers are all well and good but sometimes the serialisation overhead is still enough to block the UI. thread.
Re: Web workers, this probably isn't news to you but you can use transferable objects [1] to eliminate the serialization hiccup. Of course, if you're really trying to share objects across threads in real time, rather than transfer data, parse, and fire events, you may have bigger issues.
1. https://developer.mozilla.org/en-US/docs/Web/Guide/Performan...
I think the thing that killed me was that it was closed source.
The last thing I want in my professional career is ANOTHER thing trying to lock me in.
Everyone, stop talking about stuff I don't like. Since I'm so self-absorbed that I can't possibly comprehend someone not having the exact same opinions as me, this is obviously some kind of marketing hype machine at work.
Did it ever occur to you that people react to big things from big companies? No, of course it didn't, which is why you came on here and threw a tantrum.
How about this: go back to proggit and stop whining here.
and people seem to keep rehashing the same conversation surrounding it.
I'm not surprised he's exasperated, but I'd hardly call it a rant.
JavaScript is a great language but it won't get Atom to Emacs for the same reason that SICP in JavaScript peters out in chapter 2. The design tradeoffs in the language come due. What is rather surprising about Atom is that the great advantage of Browser+JavaScript+html, ease of cross platform development, is nowhere to be found in the initial release. What is perhaps more surprising however is that the only version is for Mac rather than that hacker's favorite, Linux.
I don't have anything against Atom, but for me it doesn't inherit Github's awesome sauce.
Right there.
Ahh, the anachronistic JS attacks... Right there.
I've jumped from ST to try and use this since I received my invite and am incredibly impressed without how little I feel the urge to switch back. Other editors that I try out (which I do far to often, ugh) are pretty, have unique features, but they lack the can't live without feature(s) that no one has matched in ST is the ease of line/text manipulation (find-next(cmd-d) + find-skip-next-next(cmd-k+cmd-d)+ undo + Multi Cursor, Block Select, Dupe...).
Atom got close with this version. The duplicate function is only duplicate line but without knowing any CoffeeScript I was able to override this function to duplicate selection if there is a selection before duping the line — for every selection. There are many other areas that are close and will either be closed out by myself for my own use, addressed by others via packages, or even in the core once it hits 1.0.
Anyway, this is a good write up and good look at the negatives of a web based editor, but I would argue the drawbacks of the DOM outlined are outweighed by the ability talk to it (and also the entire API) via the webkit inspector.
Also, the current version number is 0.6.0.
Agreed, I too was positively surprised about it's speed.
>Anyway, this is a good write up and good look at the negatives of a web based editor, but I would argue the drawbacks of the DOM outlined are outweighed by the ability talk to it (and also the entire API) via the webkit inspector.
Yes, you know, I thought about that a lot. But I'm not entirely sure that's true. Are you?
I can't really think of a good reason why this would be true. It would seem to me that an elaborate API for manipulating, and annotating the text store while being more complicated to design would be much better to create high quality plugins. This solution opens the door to lots of hard to debug memory leaks, and conflicts that can easily destroy the text your editing.
You could argue that bad plugin developers don't warrant closing off the api, and i would be with you. I'm just not sure what exactly you need the DOM for.
EDIT: actually I can. when dealing with web technologies, i have to admit it would be sometimes cool when you can instant preview code in the editor. this is possible with both brackets and atom. but atom has been much smarter about marketing a finished product. so this can turn into a sort of wysiwyg for the web
No, I am not. Ha! I guess I am exposing my own ignorance of _the right way_ to do things like this along with what my comfort zone is.
If I want to going to write a package to insert the current date at the cursor point, for example, I am likely going to just open up the webkit console and write code in their until it works (I did this) — instead of going to atom.io and finding their API documentation.
One cop out too I was thinking about is that one could easily write a plugin to 'edit in' and assign a keyboard shortcut to handle the big files in their robust editor de jour.
Maybe Sublime has spoiled me, but that editor is pretty fast. It can open large files. It's almost as extensible, especially for any kind of practical purpose. Oh and it's cross-platform, which Atom is not at the moment.
I also can already see a time when we reach Atom package hell. Someone is going to have to come up with a system to manage all these packages pretty quick. When you are literally installing packages to add a single hot-key, and all packages are treated as equals, it quickly becomes very difficult to find what you are looking for to manage your install.
I'm excited and optimistic to see where Atom will go, but my thoughts before I tried it are only reinforced after a few days of use. GitHub does not mess around. I know they will fix most of my concerns pretty quick, but I'm not sure how much more can be done about performance.
Sublime sure is fast. This is fast too. I haven't put it through its paces in normal usage, but at least I have a fallback that I like.
Package hell is true for anything is it not? If you're saying Atom doesn't have N feature count that matches other editors, you could very well be right, but I have a feeling that will change. Also, I'm sure Atom will start ranking plugins at some point too.
I meant more from a performance perspective. It might not be hard to sift through to make a theme, but it seems like a lot of overhead for the core to continually process all that data.
> Package hell is true for anything is it not?
I guess so. Curation is always an option. But even just from a settings perspective, they are just all listed alphabetically in the prefs panel. I'm not sure what the solution is, but a stock install already has too many packages to manage.
This isn't an accurate measure of DOM memory usage because element names/attributes/CSS selectors/CSS properties are interned in all browser engines.
I've only used Intellij for scala and while the static analysis was pretty useful I wasn't at all impressed by the facilities for live interaction. Maybe some of that is down to the scala repl being pretty poor - perhaps if I used Intellij with python or javascript I would find it more useful.
Nock Vim's hacky syntax highlighting all you want, but people have done amazing things with it. I mean, just today I found a plugin that properly highlights PHP annotations. All the intelligence in PHPStorm failed to deliver on that front.
Aside from startup speed Intellij is pretty fast, I would like to know what speed issues you might be talking about? This isn't a buggy piece of mess like eclipse.
> Resource consciousness? Ability to work on older hardware? Ability to work in a terminal?
You're right, vim has Intellij beat on all these things. But let's be real here, what platform are you doing heavy duty development on? I'm going to guess it's not a resource constrained, esoteric piece of hardware that only has terminal access. Don't get me wrong, I think you should be proficient with a terminal based text editor to be able to do in place edits over ssh, but seriously, that's not where you're doing most of your development work. At least I hope not.
This is also from a huge vim fan, I love it and I've used it for primary development when suitable IDE environments didn't exist (in the past Scala, recently hacking around with clojure and playing with Rust). But when you've got a mature IDE environment that isn't buggy, fast, and not resource intensive enough to make a big different on your development environment, it's a no brainer in my book. Plus the VIM plugin for Intellij is pretty good ;-)
I remember some guys in the #vim irc channel a couple years back discussing an editor that used ropes in the text store. I believe they said using lua, and that it's really performant. I don't know what happened to that, but for some reason I always thought that it eventually turned into sublime, but I've never really used sublime besides basic usage, so I can't really comment on its performance.
The irony is that I remember people complaining about how slow vim is for large files. Nowadays compared to the alternatives it seems to be blazing fast.
This is a problem that memory mapped files solved a long time ago, seeing newer editors revert so badly on this is just sad.
But also in order to have both precise and fast scrolling, especially when syntax highlighting or line wrap is involved (usually you don't want both but you might want one or the other), you need to do at least a superficial parse on the whole thing anyway.
I open all the files in the project(s) I'm working on. I currently have thousands of files open in Emacs. My Org mode wiki alone contains more than 2,000 files that remain permanently open.
Emacs doesn't do so well on those files either, for reasons I don't quite understand. C-Home (M-<) from the end of the file took 3+ seconds on an 3.8GHz i7 machine, yet the command those keys are bound to - beginning-of-buffer - was instantaneous, as was M-g g 1 (go to line 1).
http://scienceblogs.com/goodmath/2009/02/18/gap-buffers-or-w...
You'd still rely on search to navigate, and whether it's in the same file or a different file is just an IDE / editor detail. If anything, fewer source code files meant you always knew which file to switch to to find any given function, which you could in turn find with an incremental search.
Github is already a key component of how many people develop software. Expanding to an editor is going to make GH the essential toolchain.
Why then use html for rendering text if it isn't a web app? (Not to mention javascript...)
think about it a little like xulrunner
[1]: https://code.google.com/p/chromiumembedded/
[2]: http://brackets.io
As for most of the comments on this, I feel as if I could reply early beta release to them.
I do think they will create a very cool eco system for editor extensions.