Atom Reaches 1M Active Monthly Users
blog.atom.ioThe most fantastic thing about Atom to me has been the underlying technology-- specifically Electron, which is a novel combination of Chromium and NodeJS.
We at Nylas built an email app that originally was a fork of Atom, and now runs on Electron (which is evolving way faster). http://github.com/nylas/n1
I honestly think that Electron is the future of desktop software, and it all started with Atom. Hats off to those folks for continuing to invest in this project!
(also, zcbenz is a complete badass who doesn't get enough credit)
> I honestly think that Electron is the future of desktop software
I like your software but this statement makes me sad -- it's really not a great situation where a desktop software is written in a language that's not exactly great (to say the least); it runs on the top of countless abstraction layers that make the product comparatively very slow. I have 20 CPU cores and 64G RAM, and Slack starts much slower (!) than MS Word 2016.
Thanks for the kind words!
If there's one thing consistent about software, it's that things always get faster. People had a similar sentiment about Java (sloowwwwww), and yet now the JVM is pretty amazing and powers a huge part of the world.
We know N1 isn't as fast as something written in C++, but we're not super worried about it because this is likely the slowest that N1 will ever be-- and yet lots of people are still using it every day! V8 and CPUs will continue to get faster and faster each year, and we'll also improve the codebase.
Our main objective was to make N1 easy to extend by today's developers. And (whether you agree with it philosophically or not) JavaScript is leading the way for the future of programming. So it's the right choice to use in this regard.
For reference, check out the NPM growth: http://imgur.com/R8UjESZ
(Also, I think React might be the biggest UI programming paradigm shift in like 15 years. Not specific to JavaScript, but we're also betting a huge amount around that vs. traditional MVC architecture.)
As an aside, I don't believe the Slack app is taking full advantage of ElectronJS. It's essentially still just a wrapped webapp. (They run the same version in the browser.)
Full ElectronJS apps can use something called ASAR which effectively creates a super efficient bundle for loading application code at launch. More here: https://github.com/atom/electron/blob/master/docs/tutorial/a...
> Full ElectronJS apps can use something called ASAR
That was a major reason Atom went from unbearably slow to start to reasonable. I wonder if the Atom github people pushed the Electron github people to do this.
WebAssembly and and Mozilla's Servo are innovations that will likely change that perception. Servo might even make web the preferred platform for performance.
As much as I'd love to use something like Nylas, the deal-breaker for me was its sync engine. Having a third party store and index all of my emails just isn't an option for me, and I can't justify jumping through hoops to host it myself when I can just use a client that doesn't require any server-side component.
That's fine-- I totally understand. It's not built for everyone. Cloud Sync is needed for features like Snoozing and Send Later. (And more things upcoming...)
Have you guys thought about maybe bundling a local sync engine with the electron app or streamlining the setup and integration process for a local sync engine some other way (a pull-able Docker container comes to mind)? That would definitely make Nylas a lot more attractive for privacy conscious users like myself.
What specifically have you had issues with? We haven't seen great proven cross-platform support for docker images, which is why we're still using Vagrant+Virtualbox. From the folks we've talked with, it seems to be a pretty painless process. (We do this for development all the time.)
Obviously features like Snooze and Send Later won't work, but the idea here is you can build the entire stack or deploy it to your own VPS at any time.
[ot] N1 is great, too bad I can't recommend to pretty much anybody because there's no translation support.
The bug is open since October 2015, has 50+ comments and no feedback from devs. https://github.com/nylas/N1/issues/24
IIRC Atom doesn't have translation support either, I wonder if it has something to do with Electron.
It's not Electron, it's just a focus issue for us right now. Shipping things like swipe-to-archive and open tracking are more important than localizing the interface.
It's definitely on our roadmap though! (For people who want to help... https://jobs.lever.co/nylas/3c688d62-4985-4224-b59f-ab0a4f48... ;)
Just switched over from Sublime to Atom yesterday. Couldn't be happier. The community around Atom is active, and exciting, much unlike Sublime Text.
I hope subsequent updates make it faster, since ST still has an edge there.
I also made this switch recently. I'm loving it.
How is Atom for non-web languages such as C?
Well, I'm no professional yet but I'm finding it pretty good coding in C while using the proper lintian together with clang, I also use the package script, which allows me to run the code from within the editor. If you give enough tweak, I believe it can be a pretty usefull IDE. Didn't try any gdb integration yet.
The languages Atom supports have very little to do with the languages Atom is built with. Anyone can add first-class language support to Atom and many have.
I watch all the new Atom packages as they are released, which is taking more and more of my time, and I have been shocked at how many languages there are. There are many many weird languages I've never heard of.
Its fine. I'm using it for: Go, Perl, NodeJS, Scheme, Bash, C++, and Rust.
You might have to add some of the syntax highlighting etc, but there are packages for most languages available directly in the built in package manager.
C? It has syntax highlighting, but it's very obviously geared towards web development.
Congrats! Atom may not be perfect (no editor is), but it's constantly and consistently improving, which is a lot more than one can say about most other editors.
For those who use Jupyter: there's a package called Hydrogen that let's you run your code directly within Atom using Jupyter kernels (not just python!). To me, that's the perfect example of the power of a hackable editor.
Is there a way to get Jupyter-style layout as well? I'm intrigued by the idea of completely different style of writing code where, essentially, comments become first-class citizen and include markup (markdown rendered immediately when the cursor leaves the comment or even rich-text editing), diagrams, links etc.
I tried to implement it but Atom just wasn't there at the time. The new block-level decorators should make it possible.
Is anyone else creeped out that this desktop application phones home every time you start it? Is this just the new normal now?
It checks for updates automatically, so I think that gives them the stats, same should be valid for Sublime.
Atom actually uses Google Analytics too: http://i.imgur.com/bXwEDes.png
You can disable the analytics from within Atom by disabling this package: https://atom.io/packages/metrics
I have no idea what the system is, but it could be something as innocuous as automatic updates. In reality, they probably do send some form of diagnostic information, but since the application is open source, it seems unlikely there would be no way to disable that if it exists.
https://github.com/atom/metrics#collected-data
Metrics collection can be disabled by the user, and this option is also presented to the user on first load of Atom.
I find it really creepy too. I think it's now become a part of the culture of both the Atom and VS Code communities. If you bring it up everyine rushes to tell you about how to disable the metrics package while ignoring the other packages that sends data to bugsnag. In the case of VS Code there are instructions to disable it by editing the code which means that when you update, it'll be reverted. At the same time, automatic updates are enabled by default, so it effectively can't be disabled. There are also several popular plugins for both editors that come with analytics on by default with minimal to no mention of this in their descriptions.
If that creeps you out, you should probably run a completely closed firewall, where you specifically enable applications' access to the network. I don't know if it is new normal, or old normal, or even normal, but many applications have been doing it for a long time now.
In this case they are using Google Analytics, which I consider to be malware, so for me I couldn't use the editor.
Serious question, what makes you consider GA malware?
It's software to silently track your activity across the web without your knowledge or approval.
The knowledge/approval part isn't Google Analytics - that's usually built in to whatever uses it.
In the case of Atom, they state quite plainly on first-load that they track usage for the purposes of telemetry/product improvement, and you can opt-out on first-open.
I'm not really sure I see the issue?
Also, usually with Google Analytics you're viewing a remote website (or in this case I suppose you're phoning home for updates on every startup). If they really wanted to, they could just check their webserver logs. It just saves them having to parse it or graph it.
Is there some particular new information you're concerned or worried about leaking, that they don't already have?
> The knowledge/approval part isn't Google Analytics - that's usually built in to whatever uses it.
That's right, GA is the malware and websites / apps that use it are distributing malware. Sort of like SourceForge distributing malware with its installers.
> I'm not really sure I see the issue?
Do you have an issue IRL if someone follows you around, taking notes of every where you go? I do.
Your first paragraph makes no sense - you haven't established how Google Analytics is malware.
I'm sorry, but that's like saying "Trees are weapons of mass destruction", then providing no evidence for that statement.
If you can at least provide some salient evidence to substantiate what otherwise seems to make no sense, we can try to understand your point. As it stands, I'm sorry, but you just come off as a bit tin-foil...
With regards to your second point - let's say I have a supermarket rewards card - every time I make a purchase, they track it. Do I have an issue with it? Nope, not really - I'm buying the damn products from them, why should I care if they know what I'm buying from them. I'm sure if they really wanted, they could compare the credit card receipts against store takings - this just simplifies the process for them.
Or say I drive a car, and I go through a toll-gate - do I care that the toll-gate company knows my daily trips, or when I like to travel?
(Maybe they'll send an email going, we notice you like driving during peak hours, have you considered driving at these times.)
Nope - I'm already paying to go through their toll-gate, if I didn't want them to know I drove through their toll-gate, I just wouldn't take that toll road.
Likewise with Google Analytics - it's used by a website, to track visitors to its own website - if you don't want them seeing you visit their website, don't visit it.
As I said earlier, your IP address is already sent every time you hit the web-server - this just helps them parse and graph that data into pretty charts.
Would you complain if you found out a website had Apache access logs of your visit? Would you jump up and down, yelling it was an invasion of your privacy?
If you don't want a website knowing you visited their website - don't visit them. I'm sorry if it seems harsh - but of all the reasons to hate on an open-source project like Atom, this seems like an incredibly petty and baseless one.
You must leave some trail to use the Internet. You get to draw your own line though. If you don't like GA, just override the domain resolve and block your machine from ever communicating with their known IP addresses.
> without your knowledge
Then how did you know about it? (sorry, I had to). Seriously though, everyone knows most web pages use GA.
Not really, automatically checking for updates on startup is very commonplace with desktop applications.
You can turn it off.
It was the new normal like 15 years ago. Almost every major application phones home to deliver bug reports, telemetry, check for updates, etc. Read the terms and conditions of apps when you install them next time.
Funny none of my stuff on Linux does.
Pretty much. Almost everyone does it, if only for software updates. I block the obvious ones like Google Analytics using Little Snitch.
Yes it is. Visual Studio for Linux also does the same thing and, unlike Atom, there's no opt-out.
You mean Visual Studio Code, which is nothing like Visual Studio, except in name and their creator.
Yes, that one.
So does Sublime Text if you have auto-updates enabled.
This is the first time I've opened a discussion about Atom where all the top posts weren't about how horrible and slow it is. Has it gotten better, or have people who know better just given up on this editor?
It has gotten WAY faster.
Still not fast enough, especially when you have VSCode that is built with the same technologies and performs way way better. Atom can and should be faster.
> Atom can and should be faster.
I bet the core Atom team would agree with you. :) You should join the Slack channel and dive in. Pretty smart+driven group of people working on it. http://atom-slack.herokuapp.com/
Faster than netbeans?
I'm a confirmed Emacs user since the early 1990s. But when I saw Atom in use on a Youtube tutorial video, I decided to try it. Always interested in finding out what "the young'uns" are using.
It's a pretty nice editor, actually. I like the tabs approach; I like the restore at startup. Colorized text works well and detects file types correctly even without filename extension.
I notice there's an atom-macros module. Nice. For me, nothing replaces Emacs... yet... but one of these new kids might sooner or later fit the bill.
Would macros win you over?
That would help. But also, dired (and find-grep-dired, and shell-command-on-region, and delete-rectangle, and a couple dozen others).
But that's OK. There's room in the universe for more than one editor. I use vi all the time from the command line for quick edits, and Atom is earning a place in my toolbox as well.
As Walt Whitman said: I am large, I contain multitudes.
I'm actually kind of happy about this. While I don't personally use Atom at all, I think it's good that an open source editor is getting extremely popular.
Much as I like Sublime Text, the fact that it's proprietary has prevented me from using it.
> Much as I like Sublime Text, the fact that it's proprietary has prevented me from using it.
Same here, and when I recently ran into some built in limitations with gvim regarding its inability to easily deal with proportional width fonts, I switched to Atom. I've been really happy so far -- the vim mode plugin is nice. Atom isn't perfect, but it's good enough for now, and the extensibility model makes me confident that it will just keep getting better.
I like Atom, but what's kept me with Vim is slight performance hit that you seem to have with Atom.
I'm sure this will get ironed out more, and maybe it has been in later iterations.
Have you managed to get good performance out of it?
Why would you want proportional width fonts in Vim? Forgive me for asking, it's probably pretty obvious to you.
For non-code writing such as academic papers, notes and things written in markdown. All of which feature a mix of code, math, and plenty of prose. I don't love writing prose in monospace, and I also don't love using multiple tools for one task, and I also don't love using the pointer on the laptop (as oppposed to navigation keys in vim-like environments). With Atom, I can kill all of these birds with one editor.
Write 'normal' text for example, also if you're including CJK-strings in your app it is kind of nice if they are not rendered as teensy or on top of each other.
The only thing that keeps me from using Atom, and I admit that this might seem trivial, is how much I hate the delay before the syntax highlighting loads. Somehow it's an immersion-breaker for me, and a deal breaker. Anyone know if this issue is being worked on?
Is it me, or are there horrible stability issues on Windows 10? I cannot have more than one editor open without one of them crashing. This is an issue on 3 of my W10 machines.
It is definitely not you, having issues as well, that's what has been keeping me from jumping the ship from Sublime Text.
I just now tweaked my vimrc to be a bit nicer on remote ssh servers. Atom seems to be getting cooler every day, but I just can't see myself parting from Vim. Not yet anyway.
Another thought just stroke me as well: everywhere I look I see Atom, it seems like almost everyone has adopted it. If that everyone is just 1M, our world is very small indeed.
Atom is very nice. The Emacs of 2016.
Except for the whole "run anywhere with a terminal", "high quality packages with decades of bugfixes" and "pretty much extensible in every way".
(I'm a Vim user myself, but I feel like comparing Atom to Emacs is a big... optimistic. People keep complaining about how slow Atom is, how much memory it hogs up, etc. I think it needs at least a few more years of maturation before being able to call it "the Emacs of X")
>People keep complaining about how slow Atom is, how much memory it hogs up, etc
Which is exactly what people have been saying decades ago about Emacs, aka "Eight Megabytes And Constantly Swapping".
The difference being that, functionality-wise, you don't get anything from using Atom over, say, Emacs or Vim. High memory and CPU utilization is a tradeoff I'm willing to take for the added benefit of running IntelliJ or Visual Studio, because as environments they do way more for certain code bases than either Vim or Emacs could do. But Atom? Not so much. "It's made of Javascript and HTML" is not an advantage (to me) worth the memory and lag.
You're right on run anywhere with a terminal and high quality packages. However, Atom is truly extensible in any way you want because it's actually made up of lots of packages that you can replace and fork.
The fact that this is still a problem blows my mind.
What are the main reasons to choose Atom over e.g. Visual Studio Code?
I recently switched from Atom to VS Code. Everything in VS Code just seems to work, and I don't have any of the high CPU usage issues I had with Atom.
Atom currently has more plugins, larger community, etc.
Ironically, both are built on ElectronJS: http://electron.atom.io/
Ecosystem, but not much more. Code is faster and has very good intellisense for JS. Though it's still in Beta it's been very stable and a pleasure to use.
Indeed, the VSCode intellisense for JS is amazing, especially after the latest February release.
Given it is open source, couldn't Atom just re-use VSCode's intellisense?
I use and like both. VS Code is definitely faster, but I love the tabs in Atom. As someone who grew up more in a browser than in a terminal, it just feels very natural. There are also more packages available within the Atom ecosystem, or at least, discovering useful packages and searching through them is better.
When you have a faster computer?
One of the only reasons I haven't fully moved over to Atom is due to its SFTP support. Any recommendations? I'm definitely considering switching from ST.
SSHFS?
It's awesome but I just can't give up my pspad
Can you imagine, Notepad celebrating 1 billion monthly users?
A program bundled with every copy of Windows, ever? Yes, that would be silly.