3 ms·
Atom's tech stack choice is interesting. I have had several Mac app projects in mind where I really desired something more lightweight and webby than Objective-
by lobster_johnson 12y ago
Atom's tech stack choice is interesting. I have had several Mac app projects in mind where I really desired something more lightweight and webby than Objective-C, and toyed with the idea of using Node-Webkit or Atom Shell.
But I have always put it off:
- The performance challenges are daunting. For complicated, heavily data-oriented UIs like Atom's that require low latency and efficient memory usage, it's nowhere close to native.
- I'm growing increasingly tired of dynamically typed languages. What I want is to be able to implement native GUI code in a fast, statically typed language (ObjC is fine for this); and then write high-level logic in a scripting-type language. But:
- The divide between native (ie., the shell) code and app code is very hard. Atom Shell actually relies on a special IPC mechanism to let the JS code talk to the native shell, and all the IPC calls have to implemented manually [1]. Surprisingly, there isn't anything like MacRuby/RubyMotion's Cocoa bridge.
I'm intimately familiar with ObjC/Cocoa, and it's a great language and framework, but I feel like as UI framework go, it's a bit antiquated; the "amount of code to productive, visible UI effect" ratio is very high. Way too little of my code ends up being actual app code, and way too much ends up being non-reusable, hand-coded, pixel-perfect-tuned logic to handle things like reshuffling UI components with animation. As a former Delphi developer, it's amazing to me that GUI development is actually harder today than it was in 1998.
Just look at Shoes [2] for how simple a UI framework could be. It's not something I would/could use myself, but it certainly gets a bunch of things right.
[1] https://github.com/atom/atom-shell/blob/master/atom/browser/lib/rpc-server.coffee https://github.com/atom/atom-shell/blob/master/atom/browser/...
[2] http://shoesrb.com http://shoesrb.com