Electron Apps as First Class Citizens on Linux

So, I've been using electron apps since the Atom Text Editor, from GitHub, debuted featuring the technology. To ensure everyone knows what Electron is, I will explain first. Electron is a framework for creating cross-platform native desktop applications, using web technologies like: HTML, CSS, and Javascript. Like Ionic (Apache Cordova) for mobile, this enables the "write once, run everywhere" motto to apply, which is attractive to many developers. And that's the beauty of it. The big reveal? I love my Electron apps and I want to see more of them on Linux.

When I started sharing some of my favorite Electron applications via my social media, I was met with many users complaining that using Electron apps is the equivalent to using a single tab browser. To them I have this to say: You are either not using Electron, or using crappy Electron apps. Most of the Electron apps I've used have some offline features, tie into my operating system's notifications (Ubuntu/Elementary), and of course show up amongst my other applications in my launcher. This is what I expect out of my other more "native" applications, and so I feel as though this complain falls flat. Bottom line, there are crappy applications and there are good applications written using and language or framework, the fact that one is written with Electron has no bearing.

I do, however, know where the aforementioned complaint comes from. There are Electron apps that are web wrappers for websites. But I'll even defend this. There are many users who prefer dedicated work spaces for their applications, and often these wrappers utilize some of the deeper integrations with the OS vs a typical browser tab. But for the remainder of this post I will focus on what these applications are doing it right, what I would like to see from distribution maintainers to promote the use of Electron, and why it makes sense to do so.

What Electron Apps are doing right. This one is core to why Electron was developed to begin with. It is increasingly difficult to write applications that run across platforms with a similar user experience that developers can be proud of. But, there is an application that exists on all platforms that has a pretty consistent experience, and that is browsers. Electron has made use of essentially browser and web technology to provide developers with an easy way to make cross-platform applications. But, going beyond their fully-fledged browser cousins, Electron apps have a focus on desktop integration with the filesystem, notifications, etc.

What those working on Linux distributions should do is to take advantage of these cross-platform apps, whose developers would have never made a native application. By ensuring Electron apps are accommodated and presented as first-class citizens in software repositories and with creating features with them in mind, it makes our favorite platform an easy target for developers. It also helps fight the perception that folks' favorite apps aren't available on Linux. With Slack, Atom, and WordPress as examples - this idea of Linux lacking software is chipped away bit by bit (literally).

What I'd like to see is someone like Ubuntu make a push to "snap up" every single one of the Electron apps, and then provide tools that make it easy for Electron developers to package and submit their applications to Ubuntu themselves. I think making Electron and Cordova (second one might deserve a post of its own) a focus of getting apps on Ubuntu, may lower the barrier of entry for devs who see Linux as not worth the effort. Lower the amount of effort required and who knows.

In closing, check out the Electron app I made in an afternoon, a desktop client for Habitica. And if you don't know what Habitica is, check out my blog post on the app that turns your life into an RPG.