In this article I’d like to discuss the changes happening on the Web and argue that its future is not as problematic and endangered as a lot of people make it out to be. The article is based on the talk I’ve presented at the Smashing Conference1 a couple of days ago, and you can also see the slides2 and watch the screencast3 (see below).
I have been developing websites professionally for the greater part of the last 15 years, and written quite a few books and a lot of articles. Yet when I look around right now, I do feel incredibly… stupid and wonder if I should hang up my coat and do something else. Almost daily we see new tools, new best practices and systems to use, and a lot of them are very far removed from the original Web development technologies that are defined by the standards bodies.
I am also very confused about the message of doom and gloom we have right now about the Web. Many spokespeople look at the sales numbers of smartphones and call us out for not doing enough to keep developers interested and to get newcomers to start on the Web rather than somewhere else.
To me, not everything is doom and gloom, and the Web isn’t losing. I am actually very excited about what we are doing on the Web, and I see a lot of great things happening right now. I look back at what I had to work with in the past and see how professional and rich our development environments are now, and I am very happy indeed.
So, what happened? How come I am excited about the Web and its immediate future, while others feel an urge to protect it from certain doom?
Ubiquity And Speed Of Innovation
Two of the problems we see right now are ubiquity of technology and connectivity. The Web is not the cool new thing any longer. Instead, everybody seems to be on it and using it all the time — not like we did in the past with a desktop computer and browser, but through apps and short updates in social media.
Another issue is the speed of innovation. Almost monthly, something exciting comes out that makes the last big new thing seem boring and unwieldy.
One thing is that we perceive constant new demands from our end users and people who spend money on marketing in our environment. A lot of this is just people repeating things they’ve heard — suspension of disbelief. A video4 is going around of people being handed an iPhone 4S and being told it is the new iPhone 5. What did they think of it? Nearly all of them found something extraordinarily cool about it and said it is better than the last one — even people who owned the same version!
“Let’s put this in context: mobile Internet usage has doubled last year, and right now about 20% of all Web traffic in the US is from mobile devices. This means Retina screens will soon become the norm.”
It is a very myopic way of thinking, though. The Web is worldwide, and first of all, only a few of us can afford these devices. Secondly, a big chunk of us cannot get these devices where we live. Thirdly, people forget that when the initial investment hurts, people don’t want to replace their hardware a few months after. Not to mention that high-speed connectivity is not as ubiquitous as we consider it to be, especially for mobile devices.
Don’t Always Trust The Web
We seem to be not quite at ease with what we are doing at the moment, despite the fact that our job market being ridiculously good and that we get paid very well for a relatively easy job. Instead of considering this, we constantly measure ourselves against success stories that have been inflated by tech blogs that exist to inflate such stories. Or, as Steve Furtick puts it:
“The reason we struggle with insecurity is because we compare our behind-the-scenes with everyone else’s highlight reel.”
At TechCrunch Disrupt, Mark Zuckerberg was interviewed, and in the immediate coverage by the tech press, he was quoted as saying that HTML5 was a big mistake. The quote that was repeated all over went like this:
“I think that the biggest mistake that we made as a company was betting too much on HTML5 as opposed to native, because it just wasn’t there.”
The interesting bits, though, were ignored in the coverage:
“It’s not that HTML5 is bad. I’m actually long-term really excited about it. And one of the things that’s interesting is we have actually more people on a daily basis using mobile Web Facebook than we have using our iOS or Android apps combined. So, mobile Web is a big thing for us.”
It seems that the main failure was Facebook’s approach to and internal system for creating HTML5 apps — not the technology itself:
“But there’s no doubt that we went for this approach, we built this internal framework that we called Faceweb, which was basically this idea that we can take the infrastructure that we built out for pushing code everyday, not having to submit to an app store, building Web code on the Web stack that we have, and that we can translate that into mobile development. We just were never able to get the quality of it we wanted…”
It seems to me that the path to keeping your sanity in this world of ours is not to care about the shouting news outlets that need clicks to make money.
It’s All About Hardware
A few things are going wrong right now, and most of them are related to the fact that we emulate native apps and the practices of thick client development, rather than embracing the fact that the Web is a different challenge. Yes, it is software. No, it is not a defined platform with established processes.
There is a secret behind all of the failures of HTML5 in the mobile market, and it is actually very annoying: it is all about the hardware.
We can innovate HTML5 until we are blue in the face, and we can optimize browser performance to reach rocket ship-level speed, but if the hardware and operating system providers don’t allow us to be on their hardware or give early access, then there is no way browsers can perform as well as native code.
When you think about it, most of the money on mobile devices comes from app sales. And the Web gets in the way of app sales as they exist now. So, there is not really much incentive to make Web apps perform well or access all of the good parts in the hardware because then developers wouldn’t have to become part of a vendor’s program or pay to get access to their sales platform.
The lack of drivers that would enable apps written in Web technologies to access the whole hardware is the biggest issue. This even affects laptops and desktop machines — a lot of WebGL cannot even be used in brand new computers.
The Beautiful Side Of The Web
But that is by the by. Let’s go back and see why the Web actually is a great idea for us to work with. Mozilla Webmaker129 (which I’m involved in) is an ongoing project to turn pure consumers of the Web into makers. We teach basic Web editing skills, how to publish and mix video with online content, and basic ways to keep safe and have a good time on the Web. Attending one of these events is not only humbling but incredible. It is amazing to see how things that we consider boring and “common knowledge” make people go crazy for creating and doing things they haven’t done before.
A lot of the frustration we see stems from people — us included — having forgotten the main principles that the Web is based on. I am right now reading New Model Army10 by Adam Roberts, a science-fiction book about a war in England between the traditional army and the New Model Army, a group of mercenaries organized via the Web and wikis.
The main difference of the NMA is that there is no hierarchy — everything is voted upon and decided on the spot. They are almost impossible to defeat because they move much faster as a result of not having to wait for orders from above. They are also professional soldiers, there to fight other soldiers without any ideological or national interference. All they defend is the right to be truly democratic in their decision-making.
The Starfish and the Spider13 is another book that talks about a principle that makes the Web what it is. It explains that organizations without a single point of failure are much more likely to succeed than those that have a massive hierarchy and are likely to be crushed by their own size. App markets are those things.
One of the main issues, though, is that the Web exists, driven by the open and free technologies that we advocate. It works, and it has outlived many of the other closed technologies that were always heralded as its end. But this is not at all a time to sit on our laurels. There is no doubt that the Web has lost a lot of its appeal to new people.
Partly this is because we’ve become mainstream. The Web is not the edgy cool new technology that we can play with any way we want. We have to consider that mainstream media is powering a lot of it with advertising and cross-promotion of real-world events and products. Thus, we should be in the productive phase of the hype cycle14, but somehow we’ve missed this point and are still struggling to find a way to turn over a lot of products without reinventing.
“I often think that command-line editors like Vi and Emacs were made by sadists who enjoy making people feel stupid, frustrated and helpless.”
Whenever we talk about the Web, sooner or later the talk is about text editors and writing a lot of code by hand. We should be better than that by now, and we should make it easier for anyone to create on the Web.
The success of other platforms with new developers is that they are simple to learn. You are in a fixed environment, you get a few Lego bricks to play with, and you can build your first thing.
Old Tales Of The Web
Instead of concentrating on being as fast on our feet, we keep boring people with the same old tales of how the Web came around and how HTML got better and we can add semantic value with microformats, and many other tales of yesterday. In a world where all browsers run the same incredibly forgiving parser, talk about the purity of HTML and semantics falls on the deaf ears of those just starting out, and it is actually a deterrent. We’ve failed to make semantics matter — microformats are a great idea, but when no browser does anything visible or useful with them and they don’t bring any benefit with search engines, then they are superfluous to people who just want to publish their work.
We’ve even failed to think about a packaged format for an HTML5 app. Portability means that we have installers and de-installers, instead of running an app in a browser. Right now we have no one-size-fits-all approach to that. The W3C widgets were not the right format, so Chrome, Mozilla and PhoneGap all came up with their own formats instead.
We’re always so proud of the portability of our Web technologies and that they are so easy to learn and use and that they adapt to whatever you throw at them. But when you look at it from an outsider’s point of view, a lot of what we do is not portable or reusable. Every single HTML slide system is a great example of that. Or try sending an HTML file to someone who doesn’t know HTML — they’ll open it in Word and everything will break.
And we don’t help the cause much. We repeat the mistake we’ve make in the past of building solutions for one browser or demanding that the end user turn on things and change their setup. Many open solutions demand that the user takes five steps where one installer would be the right thing, and we expect people to like setting up a lot of tools using the command line. This doesn’t help us win against closed technology.
Getting Out Of The Comfort Zone
How do we win back the hearts and minds of developers? I think we need to create new products and take different approaches than we have in the past. We should focus on making things easier for people, not striving for purity and delivering like we have in the past. We need to leave our comfort zone, because that is when the magic happens.
Bret Victor’s “Inventing on Principle16” talk is a great start for this. Bret’s big principle is to enable creation by making the step from creating to seeing the results as short as possible. He shows off a few tools that not only are WYSIWYG but that work in both directions. You write a game by playing and adjusting the position of the player along a timeline. Thus, your testing happens while you develop.
In-browser developer tools are a step towards a world like that. We create and change in the browser, rather than having to reload every time we change our code. Live reloading with editors works the same way. Having this immediacy where it happens makes a lot of sense, and we should be more vocal that every browser these days is also a creation tool.
Other big things I am very excited about are Web Components18 (which define the missing app widgets we need), X-Tag19 (which makes those available cross-browser) and the Mortar20 and WebGame stub21 systems. The last two enable any developer to start an app or game from building blocks and with a deployment script that uses GitHub as the host. You even create it offline, and the app will manifest for you. Watch out for this.
In general, I think we need tools much, much more. A very interesting move was made by Adobe — yes, the Adobe behind the evil Flash — which released Brackets23, an editor that also ties into live rendering in the browser. It is pretty alpha, but the very important point here is that the company that makes all of its money from tools and that rules the graphics-creation market supreme is playing with open source. It wants developers to work with it and make Brackets better and see how it works for them. This is a good chance to work with a company that knows how to build good tools and get it to open up more.
“Today is the tomorrow you expected yesterday.”
All in all, there is no doom and gloom here. But we should have a sense of urgency. We have an incredible amount of good things to share and talk about, but if we fail to do so, we’ll look like an outdated group of experts. Today is the day you can help the Web be sexy again.
Step One: Write And Share
The first step is simple. Write and share your wisdom. Do not do it in random places. Instead, join one of the open systems that already contain great content and make it better:
- Mozilla Developer Network25
- HTML5 Rocks26
- Move the Web Forward27
- Opera ODIN28
- Smashing Magazine :-)29
- and many more.
Step Two: Complain In Right Channels
The second step is to reconsider our ways of complaining. Yes, venting on Twitter or on our blogs when things are broken feels good, but that doesn’t give you the feedback you need. And you’re not reaching the people who can fix your problems. You’re merely advertising that the Web is not ready and that people are not even fixing the problems. And that is not true; when you file bugs and complain on channels where browser developers and standards makers are available, things do change for the better.
One thing that has come about in recent years is a massive amount of collaborative development tools that enable you to host a development issue and get it fixed by others with you directly there. Use them, because having an issue fixed with an immediate result works much faster than long-winded explanations about what can be done:
- Etherpad / Google Docs / Piratepad
Step Three: Support Open Training Tools
Last but not least, support the open training and education tools that are mushrooming all over the Web right now. A lot of them are funded and need content. The earlier we get people to play with the Web, the harder it will be for them to get messed up again by traditional education. I’d wager that all of us came to the Web because of our interest and from tinkering with things, rather than by graduating from a course. Let’s make that the way in for new makers of the Web, too:
The Future Is Bright!
When you try to get people excited about the Web, remember to point out the good things about it. We are far too good at complaining openly about things that are broken, while failing to share our excitement. Let’s do that more.
“A movie in which a wife and all but one child in a family are brutally murdered. The last child gets kidnapped, and the father undertakes a desperate search to find it, his only ally being a mentally challenged woman.”
- 1 http://www.smashingmagazine.com/2012/09/18/smashing-conference-liveblog-day-2/
- 2 http://icant.co.uk/talks/h5/smashingconf.html
- 3 http://www.youtube.com/watch?feature=player_embedded&v=38udaIApS4M
- 4 http://www.youtube.com/watch?v=rdIWKytq_q4
- 5 http://mir.aculo.us/2012/09/11/is-learning-to-make-your-website-or-app-retina-friendly-worth-your-time/
- 6 http://www.mozilla.org/en-US/b2g/
- 7 http://techsnafu.com/mobile/firefox-os-mobile-2013/
- 8 http://arewemobileyet.com
- 9 https://webmaker.org
- 10 http://www.amazon.co.uk/New-Model-Army-Adam-Roberts/dp/0575083611
- 11 https://webmaker.org
- 12 https://webmaker.org
- 13 http://www.starfishandspider.com/
- 14 https://en.wikipedia.org/wiki/Hype_cycle
- 15 https://twitter.com/LeaVerou/status/246295024919252992
- 16 https://vimeo.com/36579366
- 17 http://vimeo.com/36579366
- 18 http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html
- 19 https://wiki.mozilla.org/Apps/x-tag
- 20 https://github.com/mozilla/mortar
- 21 https://github.com/mozilla/webgamestub
- 22 https://developer.mozilla.org/en-US/demos/detail/bananabread
- 23 http://brackets.io/
- 24 http://www.thelostthing.com/
- 25 http://developer.mozilla.org
- 26 http://www.html5rocks.com/en/
- 27 http://movethewebforward.org/
- 28 http://my.opera.com/ODIN/blog/
- 29 http://www.smashingmagazine.com/
- 30 http://dropbox.com
- 31 http://cloud9ide.com
- 32 http://jsbin.com
- 33 http://jsfiddle.net
- 34 http://codepen.io
- 35 http://dabblet.com/
- 36 http://tinker.io
- 37 https://thimble.webmaker.org/en-US/
- 38 http://www.udacity.com/
- 39 http://www.codecademy.com/
- 40 http://changedu.org/
- 41 http://www.khanacademy.org/
- 42 http://en.wikipedia.org/wiki/Finding_Nemo