So, Microsoft blogger decided to post about “sunsetting Atom”.
Honestly it’s an amazing euphemism for “for killing Atom” so I’m not going to bother to sweet-coat anything: in fact this post will probably have some harsh words, so if you like Microsoft (for some reason) I advise you to stop reading…
Anyway: Microsoft is a shitty piece of crap company. They committed so many crimes and the reason why they didn’t answer for most of these is because they bought the lawyers that were accusing them. When they they posted that they are going to Sunset Atom, it sounded like an inevitable thing – Atom was stalled, so they’re going to archive the repositories and if someone wants to keep using this just fork it and keep developing the editor.
But the truth is – not even this is possible. And we’re going to find out why in a moment, but first a little bit of story:
Even though Microsoft told everybody that they were going to keep developing the editor, it is strange that years later they decided to just give up on the idea. But this decision was not rushed in any way – they were planning to do that for a long time!
When GitHub started to develop Atom they did lots of what I call mistakes in the code. Some of these may be justified – like nothing existed at the time so they tried to develop things in-house. The thing is – they could remove their “in-house” dependencies and use something from
npm or things like that. The reason they did not probably is because GitHub though they keep developing the editor with a dedicated team of multiple people… but when Microsoft took over the development, everything stalled and slowed down to a crawl. They also did not accept any Pull Requests, nor did not accept any solutions for the hundreds of issues to the editor – even when the community already did all the work. Issues were closed by inactivity and not by normal means (fixed, won’t fix, or even not a bug); also, if you opened a ticket sometimes you would get an answer, but most of the time, nothing happened. The Twitter account went silent, nobody cared to answer anything, and then finally the site that aggregates all Atom packages started to not show images or GIFs, rendering most “package searching” useless.
The problem: this site does not have the source available. Somebody created a freaking Chrome extension to solve the problem of the site, and linked on the issue on their site. The silence was their answer. So when a single developer solves the issue by creating a Chrome extension to solve a problem, and your “team” can’t solve, you can detect that the idea of “we’ll keep Atom alive” is a lot of bullshit.
Finally, they let the forums (Discourse) die. That was AFTER the packages problem existed, and also meant that their site was linking to a forum that did not exist. And they did fix the site, which also means that the decision to not fix the packages site was deliberate. They activated GitHub discussions on the Atom repo, just to delete everything some months later. None of these were migrated anywhere – they simply deleted the old forums and left all discussions forever lost.
So when they decide to archive all repositories, it’s probable that they will also remove these sites. What this means is that you will not be able to publish packages, nor install packages, nor search for packages. There’s also a telemetry endpoint that either allows you to send telemetry or just sends an “opt-out” message. This will also be down. Finally, when Atom detects an error anywhere, it also sends a request to check for issues or create one, and this will also probably fail.
Which translates to: opening Atom will issue two errors. Considering that Atom also detects updates for packages and for the editor itself, it’ll crash an additional time, and another one trying to find the issue. People that tried to revive the code (the Atom Community) had a Discord server that as of now, is completely silent. So it’s safe to say that the idea of a “Modern Hackable Text Editor” is completely dead for now.
What this means for Chlorine?
Chlorine will die with Atom, honestly. I have to be honest and say that I lost all motivation to develop Clover too. So what I’ll do is to break-down the REPL-Tooling project into multiple others – a REPL connection (to allow people to connect to Socket REPL, nREPL, and Shadow Remote API) that maybe will also include Autocomplete; Duck-REPLed is already here, so I’ll probably add some more features to it; finally, the EDN Renderer (and the Console tab) will live in a different repo. Until Atom finally is over, I’ll make some changes to the EDN renderer so it’ll be easier to plug other rendering engines (I’m currently thinking on a better “text version” to it) and that’s it. I honestly want a better way to evaluate code, and Atom offered a somewhat limited “canvas” for me to draw almost anything I wanted – for graph-based APIs, I could draw dependencies with dot directly into code; I could draw dependencies on the app also with dot; I could plot elements and interact with it. None of this is possible on VSCode (becauae of the piece of crap that’s its API).
I’ll not migrate to VSCode or VSCodium – these are not the editors I’m looking for. I’ll check out if there’s a NeoVim that supports a webview, and try to use it – maybe keep developing Clematis to handle this case. Or…
What this means for Saturn?
I’ll focus my attention to Saturn, and see if I can make it usable (not fast, not secure, not stable – but usable) and if it works for me, I’ll implement a VSCode API “Layer” over it. I’ll also check if there’s a way to extend the VSCode API to make it more hackable. That can translate to “publish extensions to OpenVSIX that work with Saturn”. I’ll drop support for the Atom API “layer” that I was working on too – I mean, why bother? But I’ll keep salvaging Atom parts to at least boostrap the editor faster, and that’s it.
As of now, I’m “editorless” – I literally have no place to go (I did plan for Atom to become unstable, maybe even slow and unreliable, but not to it completely die), so NeoVim will probably be my main coding editor to develop Saturn. I’m still not sure if it’ll be possible to develop a whole editor for myself, but as of now, the comfort of “Atom is here, it’ll stay here, although a little buggy and a little slow and outdated” does not exist anymore.
What about Zed?
Some original Atom committers decided to create a new editor from scratch called Zed. Few things are known as of now, because the code is not public, there’s no public beta or alpha yet. The only thing I know is that it appears they are trying to make it fast, than make it complete, than make it extensible, and I actually want the opposite: to make it extensible, to make it complete, then to make it fast. The approach Zed is taking remembers me of MySQL vs PostgreSQL – nowadays, MySQL is slower, and less complete, than PostgreSQL even though they decided to make it fast in the beginning.
Zed also doesn’t seem to be the editor I want. They want to implement plug-ins using WASI (Web Assembly System Interface) with an API to the editor – I actually want to modify 100% of the editor if possible (kinda how emacs works) and not have a “blessed, safe way” of doing it. Also, as of now, there are not too many languages that compile to WASM: seems that about 20 languages are “stable and production ready”, and about 30 are “unstable but usable” whatever that means.
What about emacs / vim?
They are great editors, but they are text only. I firmly believe that we’re too stuck on a format that’s sub-optimal to design programs. See, for example, my presentation about a Prolog in Clojure where I program a chess game by running the code and seeing the board being rendered on the screen. That’s the kind of experience I want – for everything, not just things that are obviously visual.
So, unless I can render something visually (with HTML+CSS – sorry folks, it’s the default for now) I’ll probably not think about it.
I saw tweets about how Atom died too late. I saw vim and emacs users proudly announcing that their editor is still kicking, and vscode users replying that they are also alive and also modern. I really think that these are childish. Sorry, but that’s my opinion. Do not laugh because someone’s favorite thing, be it whatever it is, is killed. Do not make fun of people’s preferences. Do not commit the error of thinking there’s only one “true software” or “true way” of doing things, otherwise we’ll never evolve. I firmly believe there’s space for everyone, and that’s also one of the reasons I’m going to split my libraries so Calva project can take over what Clover offers that Calva do not.
And finally, let’s not compete. Let’s try to work together, otherwise these big corps (Google and Microsoft, specially) will keep buying everything just to destroy some years later…