<!DOCTYPE html>
<!-- ========================================== kroc camen of camen design ============================================= -->
<title>code · The End of Video for Everybody!</title>
<link rel="stylesheet" type="text/css" href="/design/design.css" />
<meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=no" />
<link rel="alternate" type="application/rss+xml" href="/code/rss" title="Just code" />
<link rel="canonical" href="/code/end_of_vfe" />
<!-- =================================================================================================================== -->
	<h1><a href="/" rel="index">
		Camen Design
		<li><a href="/">all</a></li>
		<li><a href="/projects">projects</a></li>
		<li><a href="http://forum.camendesign.com">forum</a></li>
		<li><a href="/quote/">quote</a></li>
		<li><a href="/writing/">writing</a></li>
		<li><a href="/blog/">blog</a></li>
		<li><a href="/photo/">photo</a></li>
		<li><a href="/code/" rel="tag">code</a></li>
		<li><a href="/art/">art</a></li>
		<li><a href="/link/">link</a></li>
		<li><a href="/poem/">poem</a></li>
		<li><a href="/audio/">audio</a></li>
		<li><a href="/web-dev/">web-dev</a></li>
		<li><a href="/annoyances/">annoyances</a></li>
		<li><a href="/eve/">eve</a></li>
		<li><a href="/code-is-art/">code-is-art</a></li>
		<li><a href="/inspiration/">inspiration</a></li>
		<li><a href="/windows/">windows</a></li>
		<li><a href="/gift/">gift</a></li>
		<li><a href="/gaming/">gaming</a></li>
		<li><a href="/mac/">mac</a></li>
		<li><a href="/osnews/">osnews</a></li>
		<li><a href="/c64/">c64</a></li>
		<li><a href="/linux/">linux</a></li>
	<a rel="previous" href="/code/title-case">
		older article →
	</a><a rel="next" href="/code/developpeurs_sans_frontieres">
		← newer article
<!-- =================================================================================================================== -->
	<!-- date published or updated -->
	<time pubdate datetime="2010-02-07T13:56:00+00:00">
		<sup>1:56<abbr>pm</abbr> • 2010</sup>
		<abbr title="February">Feb</abbr> 7
	<!-- categories -->
		<li><a href="/code/end_of_vfe" rel="bookmark tag">code</a></li>
		<li><a href="/web-dev/end_of_vfe">web-dev</a></li>
		<li><a href="/code-is-art/end_of_vfe">code-is-art</a></li>
		<li><a href="/annoyances/end_of_vfe">annoyances</a></li>
	<!-- licence -->
		<a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_GB">c</a>
		share + remix
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<h1>The End of Video for Everybody!</h1>
	<strong>Video for Everybody</strong>—<a href="/code/video_for_everybody">the ugly kludge that it is</a>—has
	seen more success than anything else I’ve made. The whole spat over Flash and the iPad really raised awareness of
	the need to get video out of Flash and into HTML5 where possible. Everybody has
	<a href="http://farukat.es/journal/2010/02/385-so-long-and-thanks-for-all-the-flash">already</a> said it
	<a href="http://daringfireball.net/2010/01/blue_boxes">better</a> than I could.
		What I have noticed is that VfE has taken on its own kind of momentum. I’m seeing anything up to 50 tweets a day
	mentioning it, and almost every blog post and news article discussing Flash and the iPad includes someone posting a
	link in the comments, if the
	<a href="http://sitepoint.com/blogs/2010/02/02/ipad-vs-flash-developers-choose-wisely/">article itself</a> is not
	already linking to it.
		Anyway, getting to the point, VfE is a fall-back mechanism and as such as time goes by and browsers fall out of
	use, it doesn’t have to fall back so far any more and we can drop fall-backs—<em>Video for Everybody <strong>is
	a <a href="http://en.wikipedia.org/wiki/Vanishing_mediator">vanishing mediator</a></strong></em>. It exists to
	bridge the gap between the disparity of Flash and HTML5 and will fade away as legacy browsers are no longer needed.
		Personally, I’m ready to kill VfE now with the next version, but I think in reality it still needs another two
	years for it to reach developers everywhere and for HTML5 video (without requiring JavaScript sniffing) goes
	mainstream—and it will, because Flash will never reach as many and as diverse as platforms as we will have in many
	years time when—<a href="/quote/japan_web_usage">as it is in Japan</a> <em>right now</em>—more people browse
	from mobile devices than desktop browsers.
		VfE is just an empty template that creative developers
	<a href="http://twitter.com/pandastream/status/8387043166">who “get it”</a> can take and adapt to something
	more polished and practical for the mainstream. <a href="http://jilion.com/sublime/video">SublimeVideo</a> is not
	based on VfE but does demonstrate what’s possible with JavaScript controls and that other than legacy browsers
	Flash is not <em>required</em> for playing videos any more. Sublime makes the huge mistake of not falling back
	gracefully (no video download links), yet, and not being free <ins>for commercial use</ins>.
		VfE needs something that I am not able to provide it: a clever developer who can wrap VfE up in a developer
	friendly and <em>especially</em>, consumer friendly interface with beautiful, JavaScript-added
	(<abbr title="that is,">i.e.</abbr> hidden if JS disabled) controls that are mirrored in the Flash player (I can’t
	write Flash software). <a href="http://universvideo.org/">UniversVideo</a> kind of does this, but it needs to be
	more like SublimeVideo, use minimal JS and provide control compatibility between HTML5, QuickTime and Flash.
		I wrote VfE for two reasons. The first was developers were (and still are) doing HTML5 video <em>wrong</em>—no
	fallback message / download-links, non-free, <em>lots</em> of <a href="/blog/letter_to_mozilla_re_video">bad
	examples</a> of JS-only insertion and generally botched code and a complete lack of
	<a href="/code/video_for_everybody/test.html">testing</a>. It’s infuriating to think that so many
	developers—<em>especially</em> Mozilla, the very people who should “get it” the most—don’t seem to “get
	it”; that <samp>&lt;video&gt;</samp> is no more sophisticated than
	<a href="http://web.archive.org/web/20110709121809/http://diveintomark.org/archives/2009/11/02/why-do-we-have-an-img-element"><code>&lt;img&gt;</code></a>
	(which supports multiple ‘codecs’) and should never require any JS to insert into the page. This is
	<em>simple</em>. You people who are so beset with avoiding change are making this complicated—this is
	<em>nothing</em> like the days where every user had to install QuickTime, Real Player and Windows Media Player to
	view content online. VfE was therefore invented to shock developers into doing the right thing with its stunning
	obviousness and simplicity (No JavaScript, imagine that! <samp>:|</samp>).
		The second reason I wrote VfE was that because I <a href="/blog/flash-week">don’t have Flash installed</a> I
	discovered just how far developers have slipped into a comfort zone where nobody does accessible fall-backs of any
	kind, for anything.
	<img src="/code/end_of_vfe/adobe_opengov_flash_site.png" alt="Adobe’s “open” government website. A big, blank Flash square." width="640" height="437" />
	<figcaption>Adobe’s “open” government website. Image courtesy of <a href="http://arstechnica.com/tech-policy/news/2009/10/adobe-pushes-flash-and-pdf-for-open-government-misses-irony.ars">Ars Technica</a></figcaption>
	It’s shocking to think that so many websites already have H.264 video files that they want to show you, yet insist
	on wrapping it in a crashy, unreliable and slow Flash shell without any kind of fallback, not least allowing users
	to actually download the video in question so that—I don’t know—they can <em>view it</em>. This is absolute
	madness and indicative of a closed web lead by a company that blinds developers into being locked into a
	single-vendor solution.
	And this maddening scenario (being needlessly locked out of the videos I want to watch all for the lack of
	<strong><em>THIS</em> insanely difficult bit of code to grasp</strong>:
	“<code>&lt;video src="abc.mp4" /&gt;</code>”) is <a href="http://loadingreadyrun.com/blog/?p=695">still
	<br /><br />
	I include this e-mail I sent here, in the hopes that it helps get things moving.
		Dear <a href="http://loadingreadyrun.com" rel="external"><dfn title="LoadingReadyRun">LRR</dfn></a> Crew
		/ Staff of <a href="http://www.escapistmagazine.com/videos/view/loadingreadyrun">The Escapist</a>
		You’ve needlessly stopped me from being able to view your videos. This is not good. I don’t have Flash
		installed (something… bad… happened, in the past) and I relied upon your QuickTime uploads and hacking
		YouTube to use HTML5 video.
		The massive shitestorm surrounding Flash / the iPad should be a clear indicator that wrapping Flash around
		videos is not the way we get things done on the Internet in this day and age, no sirree. If the iPad ends
		up successful as the iPhone, then that’s a lot of people who can’t view your videos for the sake of
		what… branding? Adobe, a gun, and Stockholm syndrome?
		There are better ways—ways that involve me, actually being able to watch your videos! And nobody even
		gets hurt! It’s called <a href="/code/video_for_everybody">Video for Everybody</a>, and I made it so
		that website authors could easily provide a means for everybody to view their videos; yes, even those
		people who don’t watch <dfn title="LoadingReadyRun">LRR</dfn>.
		It works by using HTML5 video where available (Firefox 3.5+, Chrome 3+, Safari 3+, Opera 10.5), falling
		back to QuickTime if not available, and falling back to Flash if that’s not available. All without
		JavaScript or browser sniffing.
		Frankly, I’m disappointed <dfn title="LoadingReadyRun">LRR</dfn> / Escapist, and that makes me want to
		commit violent acts of violent video game violence. Violently. Please provide access to your videos in a
		more non-Flash way so that I may once again see them. I would even be willing to offer my programming
		skills—for free—to help the Escapist develop a custom HTML5 video player with all the bells and
		whistles. There’s a similar video player <a href="http://jilion.com/sublime/video">here:</a> that shows
		that HTML5 is perfectly capable of anything Flash is, without the crashing.
		Kind regards,
	<cite>Kroc Camen.</cite>
	The last thing to note is that I <em>am</em> well aware of the
	<a href="http://weblogs.mozillazine.org/roc/archives/2010/01/activex_all_ove.html">issues</a> with H.264 patents
	and costs, and others have called me out for being a hypocrite when it comes to me proselytising an open web when
	I’m supporting the H.264 patent trap with VfE. Video for Everybody was not written <em>for</em> me. It’s not
	something I will use on my own website for videos, I don’t have the bandwidth anyway. Video for Everybody was
	written so that website owners who are already using H.264 (inside Flash) can <em>let me see their content</em>.
	They already made the decision to use H.264, I haven’t changed that one bit, I’ve merely offered them some
	different HTML to show videos. I’m trying to be pragmatic because I know the mainstream web will simply not hold
	to my ideals of <a href="/hello">HTML purism</a> and creating a solution that nobody will use is useless.
	The H.264 thing will sort itself out in due time, Video for Everybody makes <em>no difference</em> to that as all it
	does is swap one H.264 decoder (Flash) for another, <strong>as well as guiding users to begin to provide Ogg as
	well</strong>. Just as Video for Everybody is a vanishing mediator between Flash and HTML5, so it is a vanishing
	mediator between H.264 and Ogg. Patience.
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
	<nav><a href="http://forum.camendesign.com">‹ Discuss this in the Forum ›</a></nav>
	<a href="mailto:kroc@camendesign.com">kroc@camendesign.com</a>
		<a href="/code/end_of_vfe.rem">Rem</a> •
		<a href="/code/end_of_vfe.html">HTML</a> •
		<a href="/design/">CSS</a> •
		<a href="/.system/">PHP</a> •
		<a href="/.htaccess">.htaccess</a>
	<form method="get" action="https://duckduckgo.com">
		<input type="hidden" name="sites" value="camendesign.com" />
		<input type="search" name="q" placeholder="search…" />
		<input type="submit" value="Go" />
<!-- =================================================================================================== code is art === -->