I have been a long supporter of web apps leading client side development. Who needs an app when you can have a website/webapp? But, in the last few months I am starting to feel that webapps will never be able to compete with native platform applications.
There does seem to be a line between end users being happy to use webapps on a desktop/laptop, but always preferring native apps on tablets/mobile devices. Is this because those web apps still don’t feel quite right? We have had 7 years of iPhones to get it right - it still isn’t there. Are hybrid apps an option?
It makes me wonder about where rails fits into this world of mobile native apps. Sure, rails isn’t just the view layer, but the view layer is a strong selling point for rails.
What do you think? Is my lack of fight for client side webapps justified?
I was thinking about this earlier after this video hit my twitter feed:
I didn’t get to watch it all but my views are that people are just not doing web apps justice by not making the most of what the web has to offer, such as real estate (large monitors/resolutions). Even this app (Discourse) doesn’t make the best use of the available space my monitor has to offer.
With regards to people preferring native apps - I think there are three reasons. First is speed (to make a web app load quickly you need to make sure only the essential JS is loaded first, with the rest loaded after the page has loaded). The second is logging in - you generally only have to open an iPhone app or log in once and you rarely have to do it again. In Safari the default setting is (I think) private browsing so you get logged out all the time. Third and probably most important, is notifications. There are other reasons too - such as making use of telephone contacts to find other users on the app, etc.
With regards to Rails. It’s actually one of the reasons I like Volt, because it’s MVVm. Here’s a bit from the post I am working on:
…Here’s a good explanation:
“The main thrust of the Model/View/ViewModel architecture seems to be that on top of the data (”the Model”), there’s another layer of non-visual components (”the ViewModel”) that map the concepts of the data more closely to the concepts of the view of the data (”the View”). It’s the ViewModel that the View binds to, not the Model directly.”
What this basically means is that Views do not interact directly with Models apart from via the ViewModels, and the ViewModels don’t know that much about the Views - all they are interested in is telling the Views what needs to show, getting user feedback and then (perhaps after speaking to the Model) pushing any further info or changes back to the Views. The beauty of this is that the Model and the ViewModel code can be reused for lots and lots of different Views (/platforms). So a single ViewModel could have a View for a web app, another for iOS, another for Android and others for desktop applications for the various operating systems such as OS X, Windows, and Linux!
This is exactly why so many feel the MVVm architecture is the architecture for the foreseeable future, because there is a high rate of code reusability while allowing a fully native experience on several different platforms - perfect in this age of multiple devices that go beyond just websites! [/quote]
This topic came up about a year ago in Parley and I’ll just repost my response here, because I think it is still true:
Every device in my house has a different app eco-system. But I can open a browser on all of them and get at content.
With browsers increasingly supporting native features, and considering the remarkable success of mark-up+code as a delivery mechanism, I suspect that we won’t see the death of browsers anytime soon.