“I rest my case”

So there it was tonight. Some criticism on my talk/slides called “Let’s live inside the browser”. In a tweet Ivo Jansch, a well known and respected person in the PHP community, expressed how the lack of cross-browser compatibility of my slides proves why “living in the browser” is not gonna happen. Or well, that’s more or less what i think his tweet implies.
In this specific case i think the reasoning is unjustified as i didn’t program mouse control, although that’s a good idea! But of course it’s ironic that my presentation about living inside the browser lacks support for convenient input (you have to use the keyboard left/right arrows).

Anyway, this is a discussion i was hoping to start with my presentation. The discussion about if and how we will end up living inside the browser. And for obvious reasons the native vs. web apps thing is a big part of the discussion.
I have already posted my thoughts on why i think the web is suitable as an application platform a couple of days ago, but i feel that post is not comprehensive enough, so i’ll add some more thoughts.

Web apps vs. native apps
This is an interesting one. If you’re thinking mobile then, as for now, native apps win in terms of functionality and possibly user experience. Simple.

However i don’t think that the web as an application platform becoming more common will rule out native applications per se. Maybe eventually, but that takes years, maybe even decades. If it is at all.

Choosing the web as an application platform is choosing for an easy way to deliver to every device with a browser, instead of limiting to a certain vendor.
However if you choose web, you limit yourself to the use of API’s available through the browser or web services. This is a limitation that should not be underestimated, and is where native applications win big time

Of course, there are these hybrid solutions like the awesome PhoneGap. These enable you to write applications using web standards, and abstract the device specific API’s so you can still develop for cross-platform solutions, but deploy to multiple ones.
I guess this is okay solution, but it shows there’s still lots of work to do regarding web standards. And even then, web standards will always be behind the features “native” API’s provide.

Other concerns
Without a doubt, choosing between the web or native platform for a project is also dependent on the business model behind of your project.
I’d say the web provides more freedom for implementations, which encourages innovation. On the other side, native platforms, and especially mobile platforms have built-in mechanisms to monetize through your application.

Another big thing is the capability difference between desktop and mobile browsers. Mobile browsers, and especially the Android browser are lacking (draft) standard support already, which slow the large adoption of the web as an application platform. But although the mobile browsers seem to be behind on functionality, web developers have always been inventive in finding work-arounds for these issues.

So.. the web huh?
Yeah, i still believe there is a big future for the web as an application platform. And even though native apps are really powerful, the reach of applications is obviously a lot bigger.
With the web standards always in development the web will slowly become more and more suitable for deploying and distributing applications.

Although i feel this post is still not comprehensive enough, i hope i expressed my point of view of this topic.

In the end of the discussion Ivo mentioned the idea of a “web vs native bar fight” with presentations with the standpoints of each camp.
While this sounds like a whole lot fun (i’m definitely up for it!), i’m feeling more for an open discussion with the aim to share thoughts. It’s an interesting but also really important topic to share thoughts on. Preferably with people from different backgrounds.

Anyone want to help set up a meeting for it? I’m not so familiar with it..

  • I’ll set up that meeting; If I dare criticize, I better be up for a discussion. :-)

    To clarify my tweet in a bit more verbose fashion. It’s not the fact that your presentation wasn’t programmed for the mouse. It’s the fact that in order to create an application you have to go through so many hoops. To make your web based presentation behave like a presentation, you have to ‘program for the mouse’ etc. So while it *seems* easy to use web technologies to build an application, it’s actually very hard. This is also why Google Docs, although under development for years now, is still nowhere near as user friendly or powerful as desktop word processors. Why web based twitter clients lose out to native clients in terms of speed and usability.

    To me, the web as an application platform is an unnecessariy layer of complexity, a crude workaround. You *can* make web pages behave as if they were apps with rich user interactions, but it requires so much effort in so many different technologies (html, css, javascript and server side languages), that it’s actually more complex than writing an application in a native framework that is specifically built for a certain platform.

  • I’ll set up that meeting; If I dare criticize, I better be up for a discussion. :-)

    To clarify my tweet in a bit more verbose fashion. It’s not the fact that your presentation wasn’t programmed for the mouse. It’s the fact that in order to create an application you have to go through so many hoops. To make your web based presentation behave like a presentation, you have to ‘program for the mouse’ etc. So while it *seems* easy to use web technologies to build an application, it’s actually very hard. This is also why Google Docs, although under development for years now, is still nowhere near as user friendly or powerful as desktop word processors. Why web based twitter clients lose out to native clients in terms of speed and usability.

    To me, the web as an application platform is an unnecessariy layer of complexity, a crude workaround. You *can* make web pages behave as if they were apps with rich user interactions, but it requires so much effort in so many different technologies (html, css, javascript and server side languages), that it’s actually more complex than writing an application in a native framework that is specifically built for a certain platform.

  • Ivo Jansch

    I’ll set up that meeting; If I dare criticize, I better be up for a discussion. :-)

    To clarify my tweet in a bit more verbose fashion. It’s not the fact that your presentation wasn’t programmed for the mouse. It’s the fact that in order to create an application you have to go through so many hoops. To make your web based presentation behave like a presentation, you have to ‘program for the mouse’ etc. So while it *seems* easy to use web technologies to build an application, it’s actually very hard. This is also why Google Docs, although under development for years now, is still nowhere near as user friendly or powerful as desktop word processors. Why web based twitter clients lose out to native clients in terms of speed and usability.

    To me, the web as an application platform is an unnecessariy layer of complexity, a crude workaround. You *can* make web pages behave as if they were apps with rich user interactions, but it requires so much effort in so many different technologies (html, css, javascript and server side languages), that it’s actually more complex than writing an application in a native framework that is specifically built for a certain platform.

    • Anonymous

      Thanks for your response Ivo.

      I think the reasons you mention to support your point of view are valid and realistic.
      While programming applications for the web involve extra work or other efforts, they are programmed with a mindset for availability and mobility. To support the growing demand to consume or produce information anytime and everywhere.

      Native apps may be more powerful and have better usability at this time, but the development of recent web standards and technology are slowly closing the gap.
      To me, the web as an application platform is a layer of “host platform” abstraction (http://en.wikipedia.org/wiki/Facade_pattern) making it possible to reach out to a bigger user platform.
      The latter is most interesting in many, though not all, business cases. It’s like building a billboard that everyone on the planet can see, instead of making one that is only visible from within a certain distance.

      One thing that worries me is the vendor lock-in. Especially on mobile.
      Now i’m not an expert on mobile apps, but mobile apps are usually most commonly distributed through app stores. This means a predefined (optimized?) way to monetize your application, but as the vendor takes a cut, and defined the guidelines, it may limit the profit of your application.
      Now there is a news article that i don’t know the exact background info on, but it is related to this point: http://www.guardian.co.uk/technology/appsblog/2011/aug/10/amazon-kindle-html5-cloud

      Nice of you to set up that meeting. I look forward to it.
      As i’ve stated before, it’s an important topic. Sharing thoughts from both “camps” may help the persons involved make better decisions on choosing platforms or technology for specific problems in the future.

      No losers, just winners.

  • Anonymous

    Sure, there are times when web apps are the right choice, but the fact is that native apps enjoy much more functionality, speed etc. You say that the web will evolve to include those features, and you are likely right, but the speed of development of new features for native apps is at least the same if not much higher. I think that for quite a long time to go the web apps will be chasing the native apps.

    Not a fair bar fight… :-)

    • Anonymous

      You’re right. In terms of (not just, but mainly out-of-the-box) functionality native applications will always be at least one step ahead of web apps.

      Not a fair bar fight indeed.

      My opinion is about where the web is heading. Like you say, it will take some time, but we’ll eventually get at a point where the web/browsers will be mature enough to serve as an application platform. And it will be awesome!

      • Sure, those will be awesome web apps, but the native apps will be even awesomer!

      • “but we’ll eventually get at a point where the web/browsers will be mature enough to serve as an application platform” -> I call this the ‘next year will be the year of linux on the desktop’ argument. The web has been around for 15 years and it’s always been lagging behind – it took 3 years from the point where video on the web started being popular to the arrival of the tag. So I agree with Johan; by the time the web is able to be an application platform, applications will have evolved even further.

        This is why on the web we gradually see drag and drop interfaces and other usability improvements, where in native apps we’ve had those for a number of years and have moved on to gesture based input and motion sensors.

        • Anonymous

          Fair enough. Good comparison of the argument.

          We both agree that the web will always be lagging behind.
          But, and i know i’m repeating myself but it’s an important pro, using web standards to develop applications is developing for a wider range of platforms and devices.

          In the end it’s all about choosing the right platform, either native or the web, for the problem you are facing.
          Use the right tool for the job of course.

  • Dan

    Although there’s a gap between native and web apps, for sure that they’ll learn to co-exist. There’s no need to exclude one of them, as each has its advantages.

    • Good comment Dan. That’s the thing, although there is a slight competition between the two, they don’t rule one another out.