Slashdot Mirror


Has the Native Vs. HTML5 Mobile Debate Changed?

itwbennett writes: The tools available to developers who need to build an application once and deploy everywhere have exploded. Frameworks like famo.us, Ionic, PhoneGap, Sencha Touch, Appcelerator, Xamarin, and others are reducing the grunt work and improving the overall quality of web based mobile applications dramatically. The benefits of a build once, deploy everywhere platform are pretty obvious, but are they enough to make up for the hits to user experience?

18 of 161 comments (clear)

  1. Least common denominator by captaindomon · · Score: 4, Insightful

    The problem with frameworks is that they lower the end product to the common denominator. Instead of having an app for each platform that exploits the strengths of that platform, you end up with whatever you can manage to get to work on every platform. That works for simple apps like news websites maybe, but not when you want to integrate tightly with device hardware and how the established user base is used to interacting with their chosen platform.

    --
    Just because I can hook a shark from a boat, I do no offer to wrestle it in the water.
    1. Re:Least common denominator by holostarr · · Score: 4, Informative

      Except most app developers want to target as many users across as many devices as possible so it makes more sense to use tools that target the most "common denominator". It makes very little financial sense to spend months on a native app that runs on handful of devices rather than most device using a tool like PhoneGap.

    2. Re:Least common denominator by Dutch+Gun · · Score: 3, Informative

      That's assuming you don't care about giving your users a good UI experience, because if you don't, your competitors just might. You can always financially justify cutting corners if you're not considering longer-term ramifications.

      I'm not saying building native apps is the right decision for all apps, but it certainly is the right decision for *some*.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    3. Re:Least common denominator by Penguinisto · · Score: 4, Interesting

      Dunno... I've seen where a well-built common UI framework (Qt specifically) can make cross-platform not only easier, but improves the UI beyond the OS it rides on, and more importantly, provides a consistent user experience for those who do switch between platforms.

      A perfect example of this is in desktop CG applications (...like this one, ferinstance.) In this case, there are no real OS-specific strengths that your UI would even need to care about. In the case of cross-platform CG apps, a professional artist can use the Mac version at work, the Windows version at home, and not have to care about interrupting his workflow because of UI inconsistency.

      Now on the mobile side, this becomes even more important I suspect, with a not-insignificant number of folks swapping between platforms every year or two... your app remaining consistent between them is kind of important at that stage. For anything cute/unique that you want to add or remove for a specific platform, I suspect that case statements (or equivalent) would take care of that, no? It would at least allow you to keep it all in one codebase if nothing else. You just have to know what you're doing when you build it, and be sure that the underlying language is equally cross-platform (in the above example, C++ is the weapon of choice).

      Besides, the only way you really would be able to commit to tight hardware integration would be the case of iPhones - it'd be the only platform where you could expect a consistent and relatively limited variety of hardware specs and features across all users - a condition you'd never see with Android, WP, or even (heh) Blackberries.

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
    4. Re:Least common denominator by StikyPad · · Score: 2, Interesting

      If only it were that easy. The problems with cross-platform development are myriad. The LCD experience has already been outlined, so here are the others:

      1) It's write once, TEST everywhere, and you can't debug the code you actually wrote -- only the specific translation of that code into native code. And that sucks beyond words. It can be incredibly time consuming to the point where it easily erases any time you saved in development. And the longer the lifecycle, the more of your budget this is going to consume.

      2) On a related note, profiling and performance tuning is a bear. If you do anything that requires performance, cross-platform is the wrong way to do it.

      3) The potential for bugs is twice as high, because now you don't just have to worry about bugs in the native SDK, but also in the abstraction as well. While the OEM can generally afford to test the hell out of their SDKs, cross-platform suites have much less resources at their disposal. And it shows.

      4) You are always playing catchup. New features take longer to implement, because you have to wait for the third party to either implement the new feature, or to implement it right.

      5) You're needlessly adding another layer of dependence. None of the "popular" third party platforms are anywhere close to guaranteed that they'll be around in a month, or 6 months, let alone 2 years from now. If your favorite library goes away, you find a new one and make a few changes. If your entire SDK goes away, you're fscked.

      If your software doesn't matter at all, if it's just a hobby, has no business case, and you have no plans (or potential) for going commercial, then by all means, use whatever development tool strikes your fancy. Personally, I would never recommend that anyone use cross-platform tools for anything they plan to support indefinitely. Even for a prototype or an MVP -- too often the prototype becomes the codebase for the final software, despite prior assurances to the contrary. Don't waste effort developing something you can't build on, unless you have no other choice.

    5. Re:Least common denominator by holostarr · · Score: 3, Insightful

      You can built incredible apps and UI using PhoneGap. Browse the list below and you'll be surprised how many popular apps are built using nothing more than Javascript and HTML5:

      http://phonegap.com/app/

    6. Re:Least common denominator by cfalcon · · Score: 2

      "I've long advocated for a 'smart terminal' approach, where the 'app' is just a GUI with a set of capabilities, and all the smarts are up on the server."

      This is just for toys though. Uh-oh, I'm in a bridge. That app isn't real, fuck that app. Uh-oh, I don't have a good net connection. Oh, look, others are streaming at this hotel, so while I have bandwidth my latency is trash. Now this app is trash because it doesn't respond to clicks. Uh-oh, the devs decided to shit the app up with adds. Uh-oh, the small company got bought by some malware garbage company and now their app has rights on my box/phone/whatever and it "upgraded" me to some shit hole.

      You advocate for that user hostile shit all you like. Fuck that noise, hope it bankrupts any VCs dumb enough to stick their dick in it.

  2. Re: No by Anonymous Coward · · Score: 3, Insightful

    More specifically, HTML5/JS/CSS still give really shitty developer and user experiences compared to native apps. That has always been the case, and still remains true. That is why the debate has not changed.

  3. why not a web page? by gstoddart · · Score: 5, Insightful

    So if you need a framework so you can pretend to have a native version of the application ... why not just focus on having a webpage instead of a shitty application which is just a web page?

    This sounds like lazy people who want to claim they have an app, when all they're doing is pointing to a web page.

    I can view your damned web page on my own.

    Honestly, this is why I've started getting away from apps ... because as often as not they're badly written, and contain a fraction of the information I can get from the website, but still insist on having access to my contact list and messages.

    Most people writing apps care more about invading my privacy and selling ads than actually providing me anything useful.

    --
    Lost at C:>. Found at C.
    1. Re:why not a web page? by jddj · · Score: 3, Interesting

      It's important to understand that the context of use for a mobile web page is different from that of a successful mobile app.

      There are a bunch of dumb apps developed for online news sites - as though I'd ever want to go to just one news site, vs. have the mobile web spread out before me.

      OTOH, good mobile apps do things that the mobile web doesn't or can't. Perform read/write operations on local data. Use local processing power - as much as is available. Access local sensors not available to mobile web. Aggregate data from multiple sources - perhaps blending web and local data.

      Even apps that do nothing more than provide deep search - if the vertical market for the app is well defined (Movie geeks: IMDB, small investors: finance apps...), it's possible for a mobile app to excel over a web site by providing native gadgets and a platform native UI that doesn't have to leave room for the (admittedly minimal) mobile browser UI.

      Finally, mobile apps can scrape a bunch more information from the user's device than can mobile web. Definitely a help in monetizing a popular vertical, if you roll that way.

  4. Depends. by danbob999 · · Score: 2

    Many stuff can be done just fine in a web application. Banking, online shopping, quiz-style games, cellphone operator "my account"-style app. Even Facebook is fine as a web page unless you want those notifications (not having them is a feature IMO).
    Some stuff still need to be an a native application. Camera, music player, email, chat, maps/GPS navigation, calendar. Most 3D games also benefit from being native.

  5. Yes, Please!!! by rockmuelle · · Score: 5, Interesting

    For 99% of the applications out there, there's no reason not to do it in the browser if you're starting from scratch today. Most (useful) mobile apps simply display remote content in a way that's contextually relevant to the moment (Yelp, shopping (ordering and product reviews), *Maps, news sites, social media, etc). There's no reason for any of those to be app based. Most apps that aggregate content are poorly designed and not updated frequently. Couple that with the fact that most do not have useful offline modes (the only reason to have an app for content, IMHO), it just makes sense to optimize for the mobile browser rather than spend all the time and effort on an app. Hell, even most games I play casually have no reason being written as apps any more - any word game or puzzler would work fine in the browser.

    Instead, put the effort into good mobile design and development practices. Hire good developers to optimize for JavaScript. Hire good developers to optimize your backend operations to reduce latency. Find what features are missing in HTML/JavaScript (e.g., a good client side persistence layer) and encourage the browser vendors to improve there so everyone can benefit.

    For context, I develop complex scientific software. We use the browser (desktop) as our client and push the limits of what you can do there. Mobile is not far behind and should be the first choice for new development.

    -Chris

  6. Conflict of Interest by cary.caveney · · Score: 2

    The author of the blog post that started this discussion owns a software consultancy that specializes in native application development (iOS and Android). Clearly his opinion is that native apps are better.

  7. Obligatory by nitehawk214 · · Score: 4, Funny

    If you are Target and I just want to see what you have available in your store, then no, you don't need an app.

    If you farm out to lazy app developers that simply ask for every permission on the phone, then no, you don't need an app.

    And if you make a phone-specific version of your site, it will almost always end up crippled.

    --
    I'm a good cook. I'm a fantastic eater. - Steven Brust
  8. Yes - Facebook quit too soon by jtara · · Score: 2

    Facebook gave up too early. On the other hand, Facebook can afford the development cost of native. For many other applications, native is unaffordable, especially for multiple platforms.

    (Thank you, though, Facebook, for (before giving up on hybrid) figuring-out how to shut off the *&^%$#! iOS WebView "accessory view", and using your Facebook-powers to cow Apple into looking the other way when apps go digging into the virtual keyboard windows to shut that evil thing off...)

    Embedded WebViews have gotten much better. Android has been the laggard, with awful animation/transition performance and glitchiness prior to 4.x, and user reluctance to upgrade OS (improved now) and inability to upgrade on many devices (alas, not much improved, so many Android devices cannot be upgraded to latest OS.)

    Certainly, on iOS at least, I think most users would be hard-pressed to tell the difference between well-written hybrid apps and native.

    I use (Zebra, was Motorola, and before that RhoMobile) Rhodes. I've also developed using PhoneGap/Cordova. I would not do a large project in PhoneGap/Cordova, because everything has to be done in Javascript. With Rhodes, I write models and controllers in Ruby, views in ERB (wish it had a better template language...) and code that touches the UI directly in Javascript. It's a very comfortable platform if you have been a Rails developer, because it's very similar - the server has been placed in the application.

    I'd say at least half my development time is spent with JS and CSS (actually, I use SCSS). I see that as a good thing. I can tweak the UI interactively by twiddling CSS in Safari or Chrome desktop (developer tools for both can connect remotely to a device for inspection/debug/experiment.) I can easily teach a designer to do that themselves. Contrast that to the painful process of tweaking a native UI, being forced to use platform-unique tools and go through a slow and painful build process to see the smallest result.

    I've been working with a small team implementing a number of similar energy-conservation apps (they are used by professional energy auditors - organizations are opinionated, that's why there are 6 apps...). I really think the effort would have been insurmountable had it been done with native code. This is not a typical consumer app with a few screens, but ones with dozens of pages of data-collection forms (per audited building). It's not your typical consumer app with some kind of silly one-page dashboard with text in circles...

    If I had to do something with charts/graphs, I certainly would leverage the great JS libraries that are available, rather than struggling with native code! We did do a little sketch tool in JS (sketch over photos for annotation - just browser API) and nobody would ever know it is not native.

    Ultimately, we abandoned Android (at least for now) due to poor performance and Balkanization, but I can see Android being supported in the future again.

    I have not used Xamarin. It seems the worst of all worlds to me. You have to use the native API of each platform, but you write in a common language (C# yuck!). Where is the saving in development time here?

    I strongly disagree with the bit about "different screen sizes" etc. being problematical. Using HTML helps solve that problem. It's easy to create flexible layouts using responsive CSS. Yes, native platforms have gotten better about this. But it's impossible to get designers directly involved, using the tools that they are familiar with. They still have to toss wire-frames "over the cubical wall" and the battle it out with programmers as to whether their fantasy UIs are even possible. With HTML5, they can work with what they are familiar with and provide complete solutions for UI bits. As well, there is an amazing volume of free and really quite high-quality resources for CSS3 effects, etc. that can be leveraged.

    Yea, if you have a million-dollar budget for a small app, go for native. The rest o

  9. Re: No by TigerTime · · Score: 2

    Are web apps as amazing as native apps? No. And i doubt they ever will be. However, the time it takes to develop a native app vs a web-comparable app is immensely different. Web apps are infinitely easier to create and deploy. The question is if it's worth spending 2-5x the amount of money/effort to provide that level of immersion. To many it's not. Especially if your user base is small.

    I work for a Fortune 500 company and we have internal web apps that serve anywhere from 10 - 10K people. There is little justification to make native apps that essentially do the same thing when we can put a wrapper on it and call it a day. Having an immersive app needs some serious justification for that level immersion when your throwing around $100Ks of develop/maintenance costs.

  10. Re: No by xfurious · · Score: 2

    Definitely not a shitty developer experience, I have written both natives on android and mobile web apps and mobile web apps are much easier and less error-prone to write.
    And most phones have all the horsepower and HTML engine quality to pull off a lot of the sorts of user experiences you'd like (there are still rough spots though).
    The device APIs in HTML5 now cover almost all the native capabilities you would want, once ServiceWorker and push notifications are fully deployed. They actually do a -better- job when used correctly because permissions are requested as needed instead of upfront, which avoids scaring the user off as they wonder why your recipe app's update needs camera and microphone support when you add the ability for users to post a Vine video of their baked goods (for instance).
    Whenever this discussion comes up, I feel like Slashdot is just filled with old crufty C++ coders who don't understand the state of the modern web, because everyone just lands flat in the "its crap" opinion instead of discussing the few missing capabilities and the specific performance issues they've seen.
    The web ain't perfect (yet) but its getting better every day, and has no vendor lock in or censorship issues like the mobile walled gardens have.

  11. Re: No by ShanghaiBill · · Score: 2

    However, the time it takes to develop a native app vs a web-comparable app is immensely different. Web apps are infinitely easier to create and deploy.

    Only if the "app" consists of a pull-down menu, a fill-in form and a database. Now try to do a 3D FPS game app, using OpenGL, with HTML5. Is it theoretically possible? Sure. But it will be incredibly difficult to manage polygons, scenes, frame buffers, etc. in a language where an integer is a float, and a float is sometimes a string, where the only data structures are arrays and hashes, and errors are almost never caught by the compiler.

    I have written apps in both native code and Html5+Javascript. Html5+JS is almost always my first choice if I just need to slap together an interface to some backend service. But I would never go that route for an app that requires structure, planning, teamwork, and real engineering.