Analysis About 150 developers gathered at the headquarters of Slack on Friday to learn about Electron.js, the open-source, cross-platform desktop app framework upon which the IRC-for-hipsters client is built.
Felix Rieseberg, senior staff engineer at Slack, a maintainer of Electron, and organizer of the Covalence conference, opened the event in San Francisco by observing that 2019 was the year Electron grew up.
He pointed to the OpenJS Foundation's acceptance of Electron into its incubation program in December and the synchronous release of Electron 6.0 and Chromium 76 last July as a sign of the six-year-old project's maturity.
Electron's shift to a 12-week release cadence last May also argues that those overseeing the project have tamed their release process and governance to the point that large companies can feel confident the software isn't a fly-by-night whim.
Given that Slack marked a milestone of 100,000 paying enterprise customers last fall, not to mention 12m active users, it's fitting that Rieseberg said the talks would focus on "not just how to build apps but how to build good apps."
First, Electron apps incorporate an instance of Chromium, the open-source project underpinning Google Chrome, Microsoft Edge, and other browsers. Doing so increases app size (and may be redundant for those also running a Chromium browser or other Electron apps). It also ends up using quite a bit of memory and inflating CPU usage. What's more, Electron apps tend to be slow to start up.
Second, it's generally accepted that cross-platform development produces less refined, less capable software than native platform development – they represent the lowest common denominator across supported platforms. Former Apple CEO Steve Jobs's arguments against Adobe's cross-platform Flash framework a decade ago remains more or less true.
One caveat is that technology continues to evolve and the line between cross-platform and native apps continues to blur, thanks to options like n-api, which allows Electron apps to use native modules.
Third, Electron's ease of use makes it attractive to less experienced developers, who tend to produce shoddier code.
Bad news, developers: Apple Mac App Store tells cross-platform Electron apps to get lostREAD MORE
But there are Electron apps that are at least acceptable or even beloved: Slack, Discord, and Visual Studio Code, for example. They're not perfect – Rieseberg readily admitted Slack has room for improvement – and it's possible to argue that different technology choices could have resulted in better performance or resource efficiency.
"We know that building good apps with Electron is possible," said Rieseberg in an interview with The Register. But he's willing to accept there will be bad apps too.
"The more we democratize the ability to build applications, the more we will see a long tail of like bad apps, right?" he said. "I'm okay with that. And the reason I'm okay with that is because if it's extremely easy for someone to build a bad app in about half a day, that is the same thing that will make it very easy for people like the Visual Studio Code developers to build a feature rich, high performance application. It's coming from the same pool."
Rieseberg pointed to Unity, the game development tool, as an example of how a cross-platform framework can win people over. "I remember a lot of people thinking that Unity was a toy," he said. "In 2020, nobody's really saying that anymore."
Finally stable enough
His firm's clients are big companies with relatively small IT budgets, he explained, insurance companies, government agencies, and consumer product makers. They can't afford expensive development talent and they want a way to avoid platform lock-in, so the affordability and openness of web technology appeals to them. One such customer, he said, still relies on Windows 7 and is likely to spend its entire IT budget for the year moving to Windows 10.
Robert Bruchhardt, senior software developer with Mercedes Benz Research and Development North America, said his company isn't yet using Electron but is considering it for building internal development tools related to the car maker's voice assistance software.
Here's how we made a no-fuss RSS vulture app using trendy ElectronREAD MORE
Asked why Electron might be more appealing than something speeider like C++, he said for his small team working on this specific project, the ease of use and cross-platform capability mattered more.
In a presentation about performance and utilizing local storage more effectively, Atishay Jain, senior computer science at Adobe, touched on one of the problems with C++. Every C++ application, he said, implements pretty much its own networking stack and UI framework.
His point was that there's an advantage to a common technology layer. Jain also emphasized that app performance is only one of the things that matters. Ease of development, iteration speed, and cost of development have to be considered, he argued.
Other talks about garbage collection, quality management, and security underscored that Electron developers have the tools to deal with performance, memory, and security challenges. They just have to make an effort to use them.
"There are definitely apps out there that proverbially hammer in their nails with a screwdriver," said Shelley Vohr, software engineer at GitHub, during her discourse on garbage collection.
Those apps don't have to be your apps. ®