From Sublime to Atom

Your new favourite text editor has arrived


TLDR; Atom offers all your favourite features of Sublime 2 (minus autocomplete snippets), out of the box git integration as well as a beautiful settings / package install dashboard and command palette that feels like what every web developer should be using in 2014. It’s far from complete, but has a promising future ahead and already has a rich open source community rallying behind it.

Today I started off my work morning by switching my text editor from Sublime Text 2 to Github’s Atom. If you aren’t a software developer this won’t sound very exciting or noteworthy to you. The average person could move from Microsoft Word to Apple Pages without batting an eye, but software developers live and die on their text editors. Emacs, Vim, Sublime, TextMate, Wrangler, BBEdit, to name a few, are the most important part of a programmers daily workflow and everyone has their favourite with a custom set up to boot.

Over the last two years I’ve become very comfortable with Sublime Text 2. It was what I used to start programming seriously and I’ve developed a deep love for it’s interface and package manager. The support, extensions, packages and theming communities are massive. Every small nuisance I’ve had while coding has been met with a Sublime package solution and I’ve spent many hours getting the interface set up just how I like it.

So why did I spend my morning switching off of Sublime and using Github’s Atom editor? Besides the fact that I like to change things up, learn new things and blah blah blah, I wanted to see why Github (who are one of my favourite companies) thought it was neccesary to remake a tried and true text editor like Sublime. Their offering is clearly targeted straight at the average / super user of Sublime, so I wanted to see just how seriously they were taking this battle cry… I’ve summarized my thoughts as succinctly as possible below from ~8 hours of usage so far. For simplicity, I compare both software packages in an out-of-the-box state (no packages installed) and I don’t consider the sociopolitical implications of Github’s involvement.

Initial Reactions

On-boarding

This is something Sublime doesn’t do. Atom has nice little guides for the basics when you first start it up and includes handy tips as the background of empty panes based on what features you’ve already used. Each tip has a shortcut associated with it and I never saw one that I wasn’t wondering about. The flow of information felt logical.

They’ve clearly targeted their user experience at developers used to the Sublime environment. The original welcome screen (which includes tips and links to common settings) can be toggled by hitting cmd+shift+P and typing “welcome”.

Shortcuts / Getting Around

Most of the shortcuts I’m used to from Sublime are available in Atom by default. cmd+k+b opens and closed the file browser, cmd+shift+p brings up the command palette, cmd+p allows you to quickly browse for a file. Pretty much anything you did 1000 times a day in Sublime is there in Atom out of the box, which is great, and a little weird. It’s very blatantly riffing off Sublimes tried and true methods of getting around with the least interruption to flow. I’m not sure what to say about this. It’s open source software, so it’s not profiting from this abduction, but then again, it’s so flagrant and aggressive that I feel like scorning Atom’s developers for this theft.

The interface looks very similar to Sublime. Nothing much to note here. I like the settings panel in Atom. I’ve always been a fan of dashboards rather than long menu bars and sub menus and Atom supplies a great way to interact with it’s meat and bones.

So far, not enough of a difference for me to switch, but the on-boarding could make or break it for new developers trying to choose a new editor.

Going Deeper

Git integration

If you’re not using git and you’ve read this far without feeling bored than I implore you to reconsider your decision as a developer to ignore one of the best things to happen to software development in the last decade. Github and a good git workflow has saved my butt more times than I care to count (once today!) not to mention making my projects organized, easy and safe for others to collaborate on.

Atom has Github support baked in from the start (as you would imagine considering the Github’s guys built it). This is a huge plus when you want to see what files you’ve changed since your last commit. Atom highlights the folders and specific files in your browser drawer as well as highlighting the lines that have changed.

This was a huge plus one for Atom in my books. No set up, I just opened my project as I normally would in Sublime and Atom did the rest. I didn’t have any issues with it at all.

Writing

Actually writing code on Atom is where the editor struggles a little to compete with sublime. Atom is built on web technologies. What this means, from my understanding, is that the application is built like a standalone text editor, but instead of using XCode and Objective-C, it’s built with Nodejs, a handful of community created CoffeeScript libraries and a webkit application wrapper. It feels very native for what it’s built on, but it definitely behaves differently than it’s fully native cousin Sublime:

Typing: Firstly, the rate of typing is slightly delayed by ~50ms. It feels like typing into a content editable div with a function recursively checking what you’re writing. The delay is noticeable to anyone who codes daily. In Sublime, text is banged out in real time with no delay. Also, out of the box, Atom’s typing caret is offset backwards a little too much for my taste. It looks like I’m going to edit the wrong character when I’m placing it with my arrow keys.

It feels like typing into a content editable div with a function recursively checking what you’re writing.

Autocomplete: There isn’t any in Atom out of the box. I couldn’t find an emmet / zen snippets package either, which I (along with many others) use daily to quickly create otherwise redundant blocks of code. Leave a comment here if i’m missing something, but otherwise this is a huge loss for Atom. I did end up getting an autocomplete function to work, but it was more of a dictionary and only gave me suggestions for individual words rather than building out skeletal structures of commonly used functions. I suspect Atom is already struggling to keep up with all the subprocesses running behind the editor which might be why we don’t see these features yet.

Package Manager

I installed a few packages (Zen, autocomplete plus, editor stats, SASS syntax) through the Settings:Package Installer and it was a breeze. Again, I love the dashboard store-style extension management system and prefer it already to Sublime’s Package installer (which in Sublime 2 doesn’t even come out of the box!). Big win for Atom here.

Skinning

Atoms default themes are beautiful right out of the box. I’ve already taken to using the default light theme. It looks a lot like Xcode’s if you’re used to that. The dark theme also looked great as well.

CSS customization: Atom is open source webkit software. The same developer tools that are available on Chrome and Safari are also available on Atom! That means anything (JS, CSS, HTML) can be customized in Atom. This will make theming easier for the super skinners reading this. I haven’t played with any of this yet because I had actual work to do, but I will in the future. So far I haven’t seen anything I want to change other than the caret indent.

The custom skin install procedure was slightly better than sublime, but not too different. I installed flatland just to see how similar it was to Sublime and was not surprised to find a very similar look and feel.

Future

The thing I’m most excited about for Atom is it’s future. It’s a text editor made for an open-source web and it’s the text editor I see the brightest future for. I see a rich community of web developers, who love Sublime, moving towards creating packages for Atom faster and with tools they already know how to use. CoffeeSciprt (and vanilla js) is perfect for creating simple little utilities so I look forward to eventually creating my own offerings for Atom in the future. Atom offers all the exciting transparency and rapid development of any open source project which will be difficult for Sublime to compete with.

Sublime text 3 is still (more than 2 years in development) unstable. Although it has many new and promising features, the fact that it’s taking this long to push a proper release of the beloved and global phenomenon means it’s developers have become less engaged. Why wouldn’t a passionate community of JavaScript developers move in to create the best editor they need to build the web of the future?

If the future of apps is indeed on the web, then the future of app development workflows is Node+Atom+Github.

Happily staying with Atom, despite it’s missing autocomplete.

Email me when David Hariri publishes or recommends stories