The web is awesome
TL;DR: The open web is a beautiful thing that empowers makers while offering users leverage. There's nothing else like it. It's constantly improving. It's up to you what you do with it.
The beauty of the open web
So, here I am again, channelling my easily excited self from 1993: Man, I love the web.
It's easy to take this thing for granted, but take a step back and consider it: You've got this thing called a browser. It acts as an Agent on your behalf, reaching out to computers on the Internet and requesting resources identified via Universal Resource Locators. Looking among these resources, you'd find hypertext, style sheets, and multimedia.
Your browser comes with code that knows what to do with common types of content. But, browsers can't anticipate every invention. So, one of the supported resource content types is JavaScript. This is a meta content type. That is, it offers the ability to augment existing content types and support completely new ones.
Chew on that awhile: Not satisfied to be just a networked document viewer with a frozen set of features, browsers ship with a toolchain for running code on demand. Kind of scary, but it works way better than any reasonable person should expect.
And again, thanks to the Internet, these resources can each come literally from anywhere, hosted by any person or company or organization. Your browser chases URL references and collects all these disparate resources automatically. It assembles them into what is basically a zero-installation software application that's temporarily resident on your computer.
We call these insane things "web pages". Their negotiated & ephemeral hold on our computers is why we say we only "visit" them. In fact, it might be more accurate to say web pages are guests we host on our computers for a short time.
Makers have power
There is no other successful system like this on the planet. No other system for delivering content and software that is this open and free of gatekeepers deciding what we can publish. There's no app store, no review process, no adult supervision. You can make the most amazing or terrible things. Short of legal action or government intervention, no one can really stop you as long as you're paying the hosting bill.
Build your own whatever
In fact, even though I wrote that browsers are agents acting on their users' behalf - they're historically weak advocates by default. In other words, browsers do what web pages ask, with a few exceptions for safety and security. Today's open web offers the balance of control largely to publishers.
No one will stop you from building a magazine site loaded with spyware and ads.
Of course, you can also emulate old computers to make running classic software linkable and embeddable.
Or you can create new hats and weapons for an MMO, sharing your work as a link to a live 3D modeling tool.
Or you can write a blog that lands you in an Iranian jail for political speech.
Or you can craft a gorgeous existential narrative about luminous beings.
DIY for cheap
And, it's never been cheaper to put something on the web. For example, this blog lives mostly on Amazon S3. My last post got around 55,000 unique views so far - the most attention I've gotten in years. It looks like that's going to cost me about $6 by the end of the month. I could have probably cut that in half if I'd been smarter about things.
To put this in my old-person perspective: Someone once told me it was $1 or $5 to photocopy & mail a single issue of a zine. Bump that up to $5-10 for a CD-ROM or DVD in a nice padded envelope. Holy crap. I couldn't even imagine funding a passion project centered around media like that and reaching 55,000 people across the planet.
Users have leverage
I know I just wrote that the balance of control on the web leans mainly toward the publishers. But, users on the web do have leverage when they care to assert themselves.
Browser choice
First off, you have a choice in browsers. The browser market is pretty healthy right now. Once upon a time, Microsoft Internet Explorer held 96% of the market. Today, we've got at least half-a-dozen browsers with almost as many rendering engines under their hoods.
This diversity in browsers is important, and switching cost is low on a web with shared standards. You can vote with your feet and try another browser at any time. This also hinders any single company from injecting their own proprietary features into the web and setting up tollbooths.
Add-ons and extensions
Your choice in browsers includes some that can be customized with add-ons and extensions. This is where a browser can really shine as a personalized User Agent.
Install Adblock Plus, and you can deflect most attempts to track you & display ads.
Install Readability, and you can get a cleaner view of articles you'd like to read.
Install Library Extension and your browser will automatically tell you when a book is available at your local library while you're shopping on Amazon.
You can even craft your own tweaks, if you're so inclined. In a spirit similar to the web itself, the tech to build these things is generally available to anyone.
Publishers on the web sometimes deride these tweaks. It's understandable: The most popular ones have long been centered around refusing to accept many of the annoyances that also happen to fund the web.
The web is a negotiation
With this choice in personalized user agents, the relationship between reader and publisher must be negotiated. Mostly, it's a quiet negotiation by defaults: Publishers can do as much as readers accept. But, when readers introduce resistance in the form of using ad-blockers, they can impose a cost to publishers who get carried away.
As I wrote before, web pages are guests on our computers. Most users have been very tolerant of these guests' behavior. Tolerant to the point where a publisher could take for granted or even feel entitled to the bandwidth and hardware we pay for. But, it's entirely possible for this negotiation to turn sour, forcing the industry to come up with a new deal.
If it's not the web, it's not the web
There's a new iPhone ad out there - "If it's not an iPhone, it's not an iPhone".
This is one of the things the narrator says:
The hardware part makes the most of the software part, and the software part makes the most of the hardware part. When you design the whole phone, all the parts work together as one amazing part.
This is obviously true, and the iPhone is a great product. You can curate a smooth and "magical" experience, when you own a platform from bottom to top. But, the cost is that makers have less power and users have less leverage.
There's only one App Store
As gatekeepers running the one and only App Store, Apple can demand a cut of all money that flows to makers. Apple also lists a lot of requirements. Some are great ideas for users, while some serve to reinforce Apple's control over its platform.
As a user, you can somewhat customize your iPhone by the apps you install. As of iOS 8, there are also App Extensions that allow you to add selected bits of new functionality to existing apps.
But, there are limits: For instance, did you know that despite there being many apps that let you browse the web, there's really only one web engine on iOS? ("2.17 Apps that browse the web must use the iOS WebKit framework and WebKit Javascript")
Leverage constrained
Luckily, users of iOS 9 will soon benefit from Content Blocker App Extensions in Safari. These an improvement on filter lists for AdBlock Plus: The extensions consist of JSON files containing patterns & rules used to block requests and selectively remove content from pages.
Outside of Safari and the constrained world of App Extensions, though, users don't have much leverage over what apps makers do. If you don't like it, don't install it. There's no view source or built-in developer tools, so even power users mainly rely on Apple to monitor apps.
Black boxes all the way down
There's also the matter of apps being their own mini-silos. They don't have the spontaneous linkability of the web. Sure, some efforts have been made with regard to that, but it's kind of an awkward bolt-on rather than something inherent to the fabric of it all.
On top of linkability, the web also offers composability. That is, you can embed resources and scripts from other sites. For example, there was a YouTube video just a few paragraphs ago and there's a Disqus-driven comment section at the end of this post.
Or, check out this tweet:
Current cat status: Cheddars and Catsby Cheddarsson pic.twitter.com/9y9Q2uDwxb
— Les Orchard (@lmorchard) August 4, 2015
Or, hey, want to try a game of Oregon Trail?
In an app, it's hard to mix content from totally different sites together like this. At least, not without a lot of preparation at the top or just punting off to an embedded web browser. Me, I didn't write any of the code to make a tweet or an MS-DOS emulator work on this page.
You can't take it with you
As something that affects a normal busy person, this is the strongest argument I have against apps in Apple's ecosystem: If you don't like any part of it, your only move is not to play.
Like the ad says, the hardware part and the software part are inseparable. But, if you ever decide to leave once you've been inside, you leave behind what you bought while you were there. This is why I've owned iPods, but never an iPhone.
The web is learning from apps
Even after writing that last section, though, I'm hard pressed to make a case against apps. Apps solve a lot of problems we've had on the web. Installation versus a temporary visit can make things work better. User interfaces tend to be simpler & more focused - something which Apple in particular is inclined to enforce & curate. Monetization is better - there aren't as many trackers & ads.
Most of the problems apps solve can be solved on the web. Some of them are technological, but some of them are more a matter of perspective and assumptions.
Permanence & Integration
If this page was an app, you might install it. But, that's an explicit up front commitment. And you have to remember to uninstall it later. What if web pages could do that implicitly and maybe even ask nicely - after a few visits - if you'd like to make the relationship more explicit by pinning it to your home screen?
We have technologies on the horizon like Service Workers and WebAssembly that can make web pages more persistent and efficient by downloading optimized content & code and making it available offline. Web pages can ask for expanded access to your device through WebAPIs. This includes things like an icon on your home screen, running in the background, and displaying notifications.
In other words, we're very close to a state where web pages can have benefits of installed native apps while retaining the maker power and user leverage of the open web.
The web deserves a cleaner slate
Lots of developers are after a jank free, 60 frames-per-second experience. That's where many native apps can shine and it's great. I think the mobile web is entirely capable of it. We've got hardware-accelerated CSS transitions and flexbox to help with fast, flexible user interfaces. We've got Web Workers to shove work off onto separate threads to help keep things smooth.
I think a helpful thing is start with a clean mobile-first slate. Maybe more important than the mobile is the clean slate:
It's easy to start with a years' old web site and just slap a few extra styles & scripts on. When you're making an app, most of the time you're forced to start fresh and work within app constraints. I think that's a huge advantage for the experience that I haven't seen a lot of folks talk about.
Hell, make a fresh effort to see what's out there. Skip the crowd of JS frameworks for a bit. Take a look at Vanilla JS. You might be surprised at how much you can get done these days without even jQuery onboard.
Accept cutting off or (ideally) shipping a reduced experience to older browsers, and you might be surprised what you can make happen on modern browsers. Even better, get your progressive enhancement game on.
Monetization is hard without a gatekeeper
As for monetization, well, that's a can of worms. More persistent web pages will help solve the problem of the continually re-downloaded 7MB of JavaScript tracking you and showing ads. But, if that stuff causes less of a drag, will we really care quite as much?
Maybe not. If performance & surveillance concerns are decoupled, we might not notice a problem. I mean, native apps track us too, and we don't seem to care. Though, I suppose the siloed nature of apps might make it a little harder to follow you everywhere you go. (I wouldn't count on that, though.)
I don't really have great ideas, here. I pay for some stuff, I don't pay for some other stuff. I'm honestly not 100% against ads, though I think we could use fewer of them.
Without an App Store as a gateway, though, the same old revenue problems persist. And still, there ain't no such thing as a free lunch. In fact, folks like Ted Nelson and Jaron Lanier have been saying for years (and decades) that the free-of-charge web is failing itself and all of us. Maybe we need a web with more robust two-way links that track provenance and distribute wealth.
(For what it's worth, I made fun of Ted Nelson & Xanadu once upon a time. But, since then I've read more about his work and realize how off base I was.)
Wrapping up
Mostly, what I meant to do here was to write a love letter to the web. To try to capture what about it has captured me for the bulk of my career so far. Oh, and maybe to say a few things about now and future challenges. I've got a few ideas, but certainly not all the answers.
I think things look bright, despite many exaggerated attempts to declare the web's demise. Most of the issues with the web stem from what we do with it, not necessarily from what it can (or can't) do. The creative constraints and curation of app ecosystems have forced us to build better mobile experiences, and we've expanded the capabilities of the web in response.
My hope is that we can take fresh looks at the web and revisit its unique capabilities. There's a ton of value in the secure, linkable, indexable, composable, and ephemeral facets of the open web that closed app silos just can't match.