I started building a desktop app last year, but realized that many features I'd come to expect from using reddit/HN (like spell-check, and familiar keyboard short-cuts) weren't there, and I'd have to re-implement each one to mimic the web experience. (Do native apps for mobile get these for free?)
Webapps have surreptitiously become my standard for app features.
I used to think the solution to the web’s gotchas was a framework to conform the web to a native app mentality. I built and deployed web apps with these stacks. I would never do it again. These frameworks build abstractions on top of abstractions. In every non-trivial app I worked on, the top abstractions leak, and you still have to hack HTML and CSS.
Web technology is great for many things. Replicating a native app experience is not one of them.
Why would I want a native app when Web apps are so much more awesome? After using Google Docs with multiple users I can't go back to Word (which is only available on systems for which I have license), Google Spreadsheets with multiple users (which again would also need a license).
There are certain apps like Photoshop, After Effects and Lightroom that still need native. But most of the rest, not so much. I still use a native code editor but I can see that disappearing soon.
I suppose one problem in discussing this is the image of 'native' app each of us has in our heads. Is it 'iTunes'? No longer need that. Google Play or Amazon Cloud music let met access all my music everywhere. Is it Office? For some users they probably still need it but most of them will have a better experience with something online.
Is it iOS apps? Which ones? Games? There's a few high-end iOS games. Most of the rest are available as web apps though or certainly reasonable clones. Is it all the native web substitutes like the G+ or Facebook app, the Twitter or Forsquare app. The Yelp, Amazon or IMDB app? All of those are a waste of bits. Frustrating because in their quest to simplify they always leave out important features. Waste because their mobile websites provide the same features.
The only thing hobbling those apps are a few more browser features and ability to put them in the app stores even if they happen to just be bookmarks.
sproutcore is probably the most complete framework to deliver desktop class apps. But I find the combination of Backbone.js and the Handlebars.js template engine very effective as well. They feel lighter and not so set in stone.
I`ve been using Backbone, and one thing I forget all the time and bothers me is when you use Jquery plugins on elements that get re-rendered from templates (then you have to initialize the plugin on the element again, etc - for example, something like the Jquery UI Slider).
Agreed! AngularJS makes the code so concise and easy to read! I'm even considering adding specific support for it in my LIVEditor project (a live html/css/js code editor).
ExtJS from Sencha is lightyears ahead of any other JS framework as far as a polished UI toolkit goes. Its not free if you're not free and open source yourself, but its worth every penny.
I agree, this article feels like it was written in 2006. While the analysis of Obj-J is spot on, does anyone actually use it anymore? I would never consider it a viable framework, especially with the proliferation of top-notch, extremely active community-driven projects, like Backbone, Ember, Knockback, Spine, Angular, and so many others.
There appears to be a lot of FUD in that article which is unjustified or loosely cited. For example the following paragraph:
"Standardization is slow, so proprietary platforms are the first to solve problems. Flash, Silverlight, and JavaFX offer desktop like frameworks but carry technical flaws: the iPhone doesn’t support them, vendors may break things at any time, and the runtimes are often slower than JavaScript."
Most of it is rubbish.
However, I'm a firm believer that if you're going to build desktop class applications, you do it in a desktop class runtime, not JavaScript.
If you have Java installed on your workstation, click here to launch ArgoUML (UML editor). This is what I expect from a "desktop class application" from deployment to usability:
No offense, but your aesthetic sensibilities suck if you think this argo UML is a desktop class application in the realm of natively built desktop class apps.
These apps belong to what I refer to as the "just barely good enough" class of desktop apps. Doesn't look native, doesn't feel native, aesthetics are strictly academic stuck in the 1990's and usability is just north of nominal.
This is a prime example. Fonts, control spacing, inconsistent sizing, 8-bit aliased bitmaps ... it looks like crap compared to a native app like OmniGraffle.
>If you have Java installed on your workstation, click here to launch ArgoUML (UML editor). This is what I expect from a "desktop class application" from deployment to usability
Is this a joke? That would be barely tolerable for 2000.
Slow, clunky, non-native feeling, the bad kind of cross-platform, a UI beaten with the ugly stick and very little thinking about usability issues.
[+] [-] sandofsky|13 years ago|reply
I've updated the preface to say as much.
[+] [-] 6ren|13 years ago|reply
Webapps have surreptitiously become my standard for app features.
[+] [-] zachwill|13 years ago|reply
Web technology is great for many things. Replicating a native app experience is not one of them.
http://sandofsky.com/blog/shell-apps.html
[+] [-] greggman|13 years ago|reply
There are certain apps like Photoshop, After Effects and Lightroom that still need native. But most of the rest, not so much. I still use a native code editor but I can see that disappearing soon.
I suppose one problem in discussing this is the image of 'native' app each of us has in our heads. Is it 'iTunes'? No longer need that. Google Play or Amazon Cloud music let met access all my music everywhere. Is it Office? For some users they probably still need it but most of them will have a better experience with something online.
Is it iOS apps? Which ones? Games? There's a few high-end iOS games. Most of the rest are available as web apps though or certainly reasonable clones. Is it all the native web substitutes like the G+ or Facebook app, the Twitter or Forsquare app. The Yelp, Amazon or IMDB app? All of those are a waste of bits. Frustrating because in their quest to simplify they always leave out important features. Waste because their mobile websites provide the same features. The only thing hobbling those apps are a few more browser features and ability to put them in the app stores even if they happen to just be bookmarks.
[+] [-] mkmcdonald|13 years ago|reply
Yep.
The client-side environment is far too unstable to build a "native app". There's a reason why monumental frameworks like ExtJS barely work in IE 9.
[+] [-] kevingadd|13 years ago|reply
http://code.google.com/p/chromium/issues/detail?id=17356
[+] [-] zinssmeister|13 years ago|reply
[+] [-] swah|13 years ago|reply
[+] [-] blahbap|13 years ago|reply
[+] [-] edwinyzh|13 years ago|reply
[+] [-] cheez|13 years ago|reply
[+] [-] harel|13 years ago|reply
[+] [-] taligent|13 years ago|reply
Because right now it looks like something that belongs on Windows 95.
[+] [-] Detrus|13 years ago|reply
[+] [-] kirbysayshi|13 years ago|reply
[+] [-] Vekz|13 years ago|reply
[+] [-] seltzered_|13 years ago|reply
[+] [-] scottfr|13 years ago|reply
There's also Adobe Air, but its security policy breaks a lot of existing JS.
In my case, I just ended up writing a wrapper for my app in QT.
[+] [-] rsanchez1|13 years ago|reply
http://www.enyojs.com
[+] [-] nebiros|13 years ago|reply
[deleted]
[+] [-] jebblue|13 years ago|reply
[+] [-] jebblue|13 years ago|reply
[+] [-] gouranga|13 years ago|reply
"Standardization is slow, so proprietary platforms are the first to solve problems. Flash, Silverlight, and JavaFX offer desktop like frameworks but carry technical flaws: the iPhone doesn’t support them, vendors may break things at any time, and the runtimes are often slower than JavaScript."
Most of it is rubbish.
However, I'm a firm believer that if you're going to build desktop class applications, you do it in a desktop class runtime, not JavaScript.
If you have Java installed on your workstation, click here to launch ArgoUML (UML editor). This is what I expect from a "desktop class application" from deployment to usability:
http://argouml-downloads.tigris.org/jws/argouml-latest-stabl...
[+] [-] jawngee|13 years ago|reply
These apps belong to what I refer to as the "just barely good enough" class of desktop apps. Doesn't look native, doesn't feel native, aesthetics are strictly academic stuck in the 1990's and usability is just north of nominal.
This is a prime example. Fonts, control spacing, inconsistent sizing, 8-bit aliased bitmaps ... it looks like crap compared to a native app like OmniGraffle.
[+] [-] batista|13 years ago|reply
Is this a joke? That would be barely tolerable for 2000.
Slow, clunky, non-native feeling, the bad kind of cross-platform, a UI beaten with the ugly stick and very little thinking about usability issues.