If we stand still, we go backwards
jakearchibald.com
jakearchibald.com
Between standing still, and desperately adding features to make the web competitive with native platforms, I'm inclined to slow it down. I don't think the web is seriously threatened by native platforms. Even when we did experience feature freezing between 2001-2007, the web remained king despite attacks from Flash.
I don't think the web is under real threat from mobile native platforms. It's nothing that performance tuning and Moore's law can't address in time.
The main argument against this statement is home screen icons. iOS and Android home screens, among others, do not feature, have not featured, and will not for months or possibly years, feature mobile web icons to launch websites in the browser of choice. Most or every icon on these home screens are native apps because mobile websites do not easily allow or make obvious that it's possible to have an app icon on the home screen. Thus, native will always win this battle.
When the day comes that it might be easier to see a mixture of native and web apps on the home screen, unless mobile web is faster than it currently is (meaning updating changing best practices, using excellent APIs like SW and designing for offline first access), users will STILL choose native over web when half or more than half the time they do exactly the same thing.
Native is here to stay for years to come unless the mobile web can offer a compelling reason to switch to browser based layouts. I'm cheering for the web to provide a better content experience but we're still a long way off and can expect web based layouts to be wrapped with native code and wrappers. Maybe web isn't the place for everything but a universal bytecode for everything is a dream that could be reality as long as progress is made.
Same with FB, it's not tuned to perform well on the browser and takes longer to load. I hate the FB app for privacy reason and would MUCH rather use the browser FB site but it doesn't compare most of the time.
Good points can be made without hyperbole. I think ppk's article had much value to offer, but it drowns under the weight of a clickbait headline causing people to debate the wrong things.
Furthermore, the author's definition of "native" is revisionist, placing it at a highly recent time frame, and categorizing it by features that are semantically disparate.
So-called "progressive loading" and no installation process have been traits of native applications for a long time. In fact, at a primal level, the process of installing a program boils down to a copy operation.
Notice how in the last paragraph, the examples of the web's feature richness are all intrinsically limited browser reimplementations of native interfaces that exist in parallel with the host OS.
The Web brought with it portable executable content that ran without escalated privileges or install, and this did not exist before in any widescale deployment accessible by endusers.
Prior art is General Magic Telescript and SafeTcl, or perhaps PostScript or NeWS if you want to count those as wide deployment.
The difference between the Web and Install models, is that installation doesn't scale to the long tail because it places shit work on the user to manage limited resources (screen real estate, disk space). The Browser Cache doesn't impose this cognitive burden. There is no cost of cleanup imposed on you by clicking a web link. The back button takes care of it.
That's why it's "surfing" because it is effortless and imposes no long term transaction cost. To try out a web site, you click it, if it sucks, no harm no foul.
Native apps are completely different. To check and see if you'll like an app, you have to install it. It consumes permanent resources. If you then decide you don't like it, you have to permanently uninstall it. Many people are so burdened by this step, they leave unused unliked apps on their device. Then one day, they run out of space when trying to take a photo or download a new app and find that they must then go clean up their memory and delete a bunch of stuff. An incredibly shitty experience that the Web Browser solved ages ago.
Android and iOS apps should work more like Java Applets or Flash. You should be able to run them without install, and then only if you like them a lot and run them many times, should you optionally pin them from being purged.
You're correct! Except that this is not the way things work in the professional world, and by refusing to learn or use a new technique or library you're stunting your personal development as a tech professional.
ppk's argument boils down to progress outpacing need. Businesses desire the bleeding edge in their online-facing products and if you want to be attractive as talent you need to keep up with the latest development trends. This can lead to frustration, barely getting the time to build stuff with your new skills before the next big framework comes along. The latest and greatest is hip but might not be entirely necessary. This is where we need to focus our attention and strike a balance.
What kind of businesses? In multiple enterprises I've worked with/for, they move at a snail's pace and are resistant to change. I feel like most larger enterprises are at this snail's pace, whether it's b/c of outdated security practices they can't let go of, control issues, IT incompetence, or complacency in the way things are.
The businesses which might be more forward thinking are agencies and some small businesses but I think these are less common. Why do you think it took years to let go of IE6, then IE7, and now IE8 and IE9 in the enterprise world?
So, I say embrace progress and let the market decide what technologies stay and what to leave behind.
Calling for deliberate stagnation for the web is intellectually disingenuous in light of the Great Web Depression during 2000 - 2005 and the following recession 2005 - 2008 right before iPhone 3G & Chrome launches followed by NodeJS and the HTML5 debut.
For all people worried about the seemingly neck-breaking rate of progress, I assure them that we will sooner or later hit some roadblocks that will slow down the progress and usher in a new era of stagnation for the industry as whole, that has been the case all along for all business and scientific, literary activities, that is the cyclical nature of human activities, but to do it on purpose and to have the audacity to advocate and brand it as a respite or out of concern for the well-being of the developers community is dishonest and totally unacceptable.
I feel zero pressure to learn every shiny new thing that comes along. If a new tool/feature seems to be gaining traction or generating a lot of discussion, then yeah I'll read up on it, but I mean reading for an hour or less. It's not a big deal to keep up.
Question: is there ANY environment or language that has fantastic support and is continually improving? Any open source one?
We've only had two modes of standards development in recent history. Bugger all (the age of IE6/Firefox/IE7) and constant churn (pretty much since the iPhone/Chrome was released).
Yes, it is simpler for ordinary people. For developers, however, the web is getting more and more convoluted.
The challenge is that languages, frameworks, and tooling are are not shielding the developer from the growing complexity.
The level of abstraction is rather poor , so that for any any non trivial web application, you quickly do need to know the gory details of CSS, layouts, web components, shadow vs. lite DOM, and so on.
I agree with the premise of the article (we can't stop the forward progress of the web ), but we desperately need better tools.
---
I don't web develop often. As a user, mobile web is usually more usable than a native app - not in terms of whether or not it works, but in terms of usability, flow of actions, and predictability. Cut, copy, and paste work in the browser but rarely in native apps. Other little things too, items too little for a project architect to notice or a punch list to pick up.
The other half of what killed Blackberry was Microsoft Activesync. Blackberry's email service required you have set up their Blackberry Enterprise Server (or their lower-performing cloud-hosted Blackberry Internet Service) and connected this to your email account. BES had an "agent": a service that would log into your email account every 30 seconds, check for new email, and then forward this to your Blackberry over the Blackberry network (which is why you had to pay the $10 "Blackberry Fee"). Activesync (I think) used Exchange mail rules to do the same thing, and the iPhone mail client could use Activesync.
It was that "one-two punch" that took out Blackberry:
* iPhones were cool. Androids were cheap.
* Activesync comes with Exchange, no other server setup necessary.
* Works with normal carrier service; no $10 Blackberry fee.From my own usage of ActiveSync I remember the data networks of the era were not great with push protocols, at least not compared to the almost magic instantaneousness of Blackberry email and their custom solution.
Who is "we" and why are they competing against some implied "them"? When are we going to accept the shortcomings of both the web and native applications and figure out a solution together to benefit humankind?
Some of the frustration for new features comes when developers ignore compatibility, but that's not a necessary part of pushing the web forward, just an indication of sloppiness.
Every new feature brings new challenges. The solution is not to solve challenges by stopping progress but rather to respond to challenges as they come. This means more work, but that's okay. There are more people to do the work every day.
... and half the links on it are broken. That's one of the things I don't like on the web, content slowly disappear, links are unidirectional, etc.