I've had some thoughts about native vs. web bouncing round my head recently, this is an attempt to clarify them in writing. As a result it's opinionated, incomplete and not very well reasoned.
Much of the debate (or at least the loudest part of the debate that's reached me) about apps vs. web focuses on technology. The gist of the argument my straw man is making goes that if only web browsers had access to all the APIs that native apps do then the web would win.
As someone who builds for the web I can see how my straw man might see this as the main difference between native and web: If only I had better tools I could build something better.
However, I see a much more fundamental difference between web and native: context. A native app can be tightly coupled to a context - we wouldn't consider for a moment that an app for a monochrome watch is going to run on a 50" smart TV. The differences don't even have to be that extreme, it's all too common common (especially on iOS) for apps to limit themselves to one orientation - you can have an app that only runs on an iPhone in portrait which is a very specific context.
We have a fundamental dichotomy: native apps are inherently restricted in their context but the web is inherently unrestricted. Sure, there are a million and one ways round this but they are all relying on the scorpion not stinging the frog.
The web vs. native dichotomy isn't a conflict - it's a choice. Pick the most appropriate one for what you are trying to achieve and play to its inherent strengths to get the best results. If what you want can't be achieved with one or the other then there's nothing to prevent you using both.
The best way to win a fight is to not be there in the first place.