<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Infrequently Noted &#187; work</title>
	<atom:link href="http://infrequently.org/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://infrequently.org</link>
	<description>Alex Russell on browsers, standards, and the process of progress.</description>
	<lastBuildDate>Thu, 16 May 2013 00:07:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Why What You&#8217;re Reading About Blink Is Probably Wrong</title>
		<link>http://infrequently.org/2013/04/probably-wrong/</link>
		<comments>http://infrequently.org/2013/04/probably-wrong/#comments</comments>
		<pubDate>Wed, 03 Apr 2013 21:00:17 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[openweb]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://infrequently.org/?p=2005</guid>
		<description><![CDATA[By now you&#8217;ve seen the news about Blink on HN or Techmeme or wherever. At this moment, every pundit and sage is attempting to write their angle into the annoucement and tell you &#8220;what it means&#8221;. The worst of these will try to link-bait some &#8220;hot&#8221; business or tech phrase into the title. True hacks [...]]]></description>
				<content:encoded><![CDATA[<p>By now you&#8217;ve seen the news about <a href="http://chromium.org/blink">Blink</a> on HN or Techmeme or wherever. At this moment, every pundit and sage is attempting to write their angle into the annoucement and tell you &#8220;what it means&#8221;. The worst of these will try to link-bait some &#8220;hot&#8221; business or tech phrase into the title. True hacks will weave a Google X and Glass reference into it, or pawn off some &#8220;GOOGLE WEB OF DART AND NACL AND EVIL&#8221; paranoia as prescience (sans evidence, of course). The more clueful of the ink-stained clan will constrain themselves to objective reality and instead pen screeds for/against diversity despite it being a <a href="http://ccs.mit.edu/papers/CCSWP135.html">well-studied topic</a> to <a href="http://scholar.google.com/scholar?cites=5594983873856483033&#038;as_sdt=2005&#038;sciodt=0,5&#038;hl=en">which they&#8217;re not adding much</a>.</p>
<p>May the deities we&#8217;ve invented forgive us for the tripe we&#8217;re about to sell each other as &#8220;news&#8221;.</p>
<p>What&#8217;s bound to be missing in most of this coverage is what&#8217;s plainly said, if not in so many words, in the <a href="http://blog.chromium.org/2013/04/blink-rendering-engine-for-chromium.html">official blog post</a>: <em>going faster matters</em>.</p>
<p>Not (just) code execution, but <em>cycle times</em>: how long does it take you to build a thing you can try out, poke at, improve, or demolish? We mere humans do better when we have directness of action. <a href="http://vimeo.com/36579366">This is what Bret Victor points us towards</a> &#8212; the inevitable constraints of our ape-derived brains. Directness of action <em>matters</em>, and when you&#8217;re swimming through build files for dozens of platforms you don&#8217;t work on, that&#8217;s a step away from directness. When you&#8217;re working to fix or prevent regressions you can&#8217;t test against, that&#8217;s a step away. When compiles and checkouts take too long, that&#8217;s a step away. When landing a patch in both WebKit and Chromium stretches into a multi-day dance of flags, stub implementations, and dep-rolls, that&#8217;s many steps away. And each step hurts by a more-than-constant factor.</p>
<p>This hit home for me when I got my first workstation refresh. I&#8217;d been working on Chrome on Windows for nearly a year in preparation for the Chrome Frame release, and all the while I&#8217;d been hesitant to ask for one of the shiny new boxes that the systems people were peddling like good-for-you-crack &#8212; who the hell was I to ask for new hardware? They just gave me this shiny many-core thing a year ago, after all. And I had a linux box besides. And a 30&#8243; monitor. What sort of unthankful bastard asks for more? Besides, as the junior member of the team, surely somebody else should get the allocation first. </p>
<p>Months later they gave me one anyway. Not ungrateful, I viewed the new system with trepidation: it&#8217;d take a while to set up and I was in the middle of a marathon weekend debugging session over a crazy-tastic re-entracy bug in a GCF interaction with <code>urlmon.dll</code> that was blocking the GCF launch. If there was a wrong time to change horses, surely this was it. At some point it dawned that 5-10 minute link times provided enough time to start staging/configuring at the shiny i7 box.</p>
<p>A couple of hours later the old box was still force-heating the eerily dark, silent, 80-degree floor of the SF office &#8212; it wasn&#8217;t until a couple of weeks later that I mastered the after-hours A/C &#8212; when my new, <em>even hotter</em> workstation had an OS, a checkout, compiler, and <a href="http://msdn.microsoft.com/en-gb/windows/hardware/gg463009.aspx">WinDBG + cargo-culted symserver config</a>. One build on the new box and I was <em>hooked</em>. </p>
<p>5-10 minute links went to 1-2&#8230;and less in many cases because I could now enable incremental linking! And HT really worked on the i7&#8242;s, cutting build times further. Hot damn! In what felt like no-time at all, my drudgery turned to sleuthing/debugging bliss (if there is such a thing). I could make code changes, compile them, and be working with the results in less time than it took to make coffee. Being able to make changes and then <em>feel</em> them near-instantly turned the tide, keeping me in the loop longer, letting me explore faster, and making me less afraid to change things for fear of the time it would take to roll back to a previous state. It wasn&#8217;t the webdev nirvana of ctrl-r, but it was <em>so</em> liberating that it nearly felt that way. What had been a week-long investigation was wrapped up in a day. The launch was un-blocked (at least by that bug) and the world seemed new. </p>
<p>The difference was directness.</p>
<p>The same story repeats itself over and over again throughout the history of Chrome: shared-library builds, ever-faster workstations, trybots and then faster trybots, <a href="https://code.google.com/p/gyp/">gyp</a> (instead of Scons), many different forms of distributed builds, make builds for gyp (courtesy of Evan Martin), <a href="http://clang.llvm.org/">clang</a>, and of course <a href="http://martine.github.com/ninja/">ninja</a> (also Evan&#8230;dude&#8217;s a <em>frickin hero</em>). Did I mention faster workstations? They&#8217;ve made all the same sort of liberating difference. Truly and honestly, in ways I cannot describe to someone who has not felt the difference between ctrl-r development and the traditional Visual Studio build of a massive project, these are the things that change your life for the better when you&#8217;re lashed to the mast of a massive C++ behemoth.</p>
<p>If there is wisdom in the Chrome team, it is that these projects are not only recognized as important, but the very best engineers volunteer to take them on. They seem thankless, but Chrome is an environment that rewards this sort of group-adaptive behavior: the highest good you can do as an engineer is to make your fellow engineers more productive.</p>
<p>And that&#8217;s what you&#8217;re missing from everything else you&#8217;re reading about this announcement today. To make a better platform faster, you must be able to iterate faster. Steps away from that are steps away from a better platform. Today&#8217;s WebKit defeats that imperative in ways large and small. It&#8217;s not anybody&#8217;s fault, but it <em>does</em> need to change. And changing it will allow us to iterate faster, working through the annealing process that takes a good idea from drawing board to API to refined feature. We&#8217;ve always enjoyed this freedom in the Chromey bits of Chrome, and unleashing Chrome&#8217;s Web Platform team will deliver the same sorts of benefits to the web platform that faster iteration and cycle times have enabled at the application level in Chrome.</p>
<p>Why couldn&#8217;t those cycle-time-improving changes happen inside WebKit? After all, much work has happened in the past 4 years (often by Googlers) to improve the directness of WebKit work: EWS bots, better code review flow, improved scripts and tools for managing checkins, the commit queue itself. The results have been impressive and have enabled huge growth and adoption by porters. WebKit now supports multiple multi-process architecture designs, something like a half-dozen network stack plug-ins, and similar diversity at every point where the engine calls back to outside systems for low-level implementation (GPU, network, storage, databases, fonts&#8230;you name it). The community is now committed to enabling porters, and due to WebKit&#8217;s low-ish level of abstraction each new port raises the tax paid by every other port. As <a href="https://plus.google.com/104985880647110483202/posts">James Robinson</a> has observed, this diversity creates an ongoing drag when the dependencies are intertwined with core APIs in such a way that they can bite you every time you go to make a change. The <a href="http://www.chromium.org/developers/content-module/content-api">Content API boundary</a> is Blink&#8217;s higher-level &#8220;embedding&#8221; layer and encapsulates all of those concerns, enabling much cleaner lines of sight through the codebase and the removal of abstractions that seek only to triangulate between opaque constraints of other ports. Blink gives developers much more assurance that when they change something, it&#8217;s only affecting the things they think it&#8217;s affecting. Moving without fear is the secret of all good programming. Putting your team in a position to move with more surety and less fear is hugely enabling.</p>
<p>Yes, there are losses. Separating ourselves from a community of hugely talented people who have worked with us for years to build a web engine is not easy. The decision was wrenching. We&#8217;ll miss their insight, intelligence, and experience. In all honesty, we may have paid too high a price for too long because of this desire to stay close to WebKit. But whatever the &#8220;right&#8221; timing may have been, the good that will come from this outweighs the ill in my mind.</p>
<p>Others will cover better than I can how this won&#8217;t affect your day-to-day experience of WebKit-derived browser testing, or how it won&#8217;t change the feature-set of Chrome over-night, or how the new feature governance process is more open and transparent. But the most important thing is that we&#8217;ll all be going faster, either directly via Blink-embedding browsers or via benchmarks and standards conformance shaming. You won&#8217;t feel it overnight, but it&#8217;s the sort of change in model that enables concrete changes in architecture and performance and <em>that</em> is something to cheer about &#8212; <a href="http://fronteers.nl/congres/2012/sessions/the-web-platform-and-the-process-of-progress-alex-russell">change is the predicate for positive change, after all</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2013/04/probably-wrong/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Origin(al) Sins</title>
		<link>http://infrequently.org/2012/12/original-sins/</link>
		<comments>http://infrequently.org/2012/12/original-sins/#comments</comments>
		<pubDate>Tue, 04 Dec 2012 13:01:52 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[openweb]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://infrequently.org/?p=1949</guid>
		<description><![CDATA[Video is now up from a talk I gave in October at OWASP&#8217;s AppSec USA conference &#8212; something of a departure from my usual speil: Origin(al) Sins &#8211; Alex Russell from OWASP AppSec USA on Vimeo. I made some pretty glaring errors in the talk: you can&#8217;t combine sandboxing with seamlessness for cross-origin content. It&#8217;s [...]]]></description>
				<content:encoded><![CDATA[<p>Video is now up from a talk I gave in October at OWASP&#8217;s AppSec USA conference &#8212; something of a departure from my usual speil:</p>
<p><iframe src="http://player.vimeo.com/video/54157396?badge=0" width="500" height="275" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
<p><a href="http://vimeo.com/54157396">Origin(al) Sins &#8211; Alex Russell</a> from <a href="http://vimeo.com/appsecusa">OWASP AppSec USA</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>I made some pretty glaring errors in the talk: you can&#8217;t combine sandboxing with seamlessness for cross-origin content. It&#8217;s something I&#8217;m hoping we can improve on in the browsers/specs, but it&#8217;s not the current state of play. I also failed to mention that CSP is Mozilla&#8217;s brain-child and they deserve huge credit for pushing it down the field. Similarly, I failed to mention that IE 10&#8242;s CSP support is actually <a href="http://caniuse.com/contentsecuritypolicy">quite shite, supporting only the <code>sandbox</code> directive</a>. Lastly, my objections to the OCAP worldview may have been oblique so, before the flames arrive in the comments, let me try again:</p>
<p>I think that you&#8217;ll always end up with some variant of &#8220;object capabilities&#8221;, if only through wrapper objects that hide protocol details. The OCAP world calls these &#8220;membranes&#8221; for particularly high-fidelity versions of this. When you have a word for it, it&#8217;s probably common. Vending objects that represent capabilities is natural at some level, but I strongly resist the urge to take the pun too far. Don&#8217;t get me wrong, I&#8217;m a huge fan of capabilities as the model for building apps that have real security by default; and I hope their pervasive use combined with more restrictive, separated execution contexts creates the world we all want to be in. My only quibble is on the developer ergonomics front. OCAP encourages the (perhaps naive) programmer to build many things inside the same &#8220;vat&#8221; (heap, context, whatever), leading to brittleness whereas protocols and true sandboxing can create secure boundaries that, importantly, <em>look</em> like boundaries. Systems that provide big &#8220;this is a security boundary!&#8221; disclaimers on their APIs while making it hard to screw them up stand a better chance of weathering the storms of human imperfection. Can you do OCAP right? Sure, it&#8217;s possible, but as I argue in the  talk, betting on humans to do the right thing is eventually and inevitably a loser. So I favor large, knobby interfaces over which you can send messages and no more. Wrap &#8216;em up with an RPC layer&#8230;cool&#8230;whatever. But design a protocol with side-effects that are straight-forward to reason about on both sides &#8212; not an object which can be easily intertwined with many others in a dense graph &#8212; and you&#8217;ve got my vote. I&#8217;m even in favor of building those protocols and then wrapping them with easier-to-use APIs (call it &#8220;CAP->O&#8221;, if you will), but eliding the step of a large boundary over which you can only send data, and making it relatively hard to cross? Nah, I&#8217;ll be over here with the easy-to-reason about solutions that don&#8217;t make my small-ish brain melt, thanks.</p>
<p>Also, I wasn&#8217;t sure to <a href="https://vimeo.com/channels/appsecusa/54087885">what extent Doug was joking about &#8220;incompetent&#8221; programmers in his talk</a>, so our disagreements may not be what they seem. Caveat emptor.</p>
<p>Thanks to <a href="http://jeremiahgrossman.blogspot.co.uk/">Jeremiah</a> and the other organizers for taking a risk and inviting someone who&#8217;s been out of the security space for so long to give a talk. I promise to them that should they be so foolish in the future, I&#8217;ll be sure to duck out and get one of my betters on the Chrome Security Team to stand in instead ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2012/12/original-sins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Misdirection</title>
		<link>http://infrequently.org/2012/02/misdirection/</link>
		<comments>http://infrequently.org/2012/02/misdirection/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 23:04:26 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[chrome]]></category>
		<category><![CDATA[economics]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[openweb]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://infrequently.org/?p=1724</guid>
		<description><![CDATA[As the over-heated CSS vendor prefix debate rages, I can&#8217;t help but note the mounting pile of logical fallacies and downright poor reasoning being deployed. Some context is in order. Your Moment Of Zen The backdrop to this debate is that CSS is absolutely the worst, least productive part of the web platform. Apps teams [...]]]></description>
				<content:encoded><![CDATA[<p>As the over-heated CSS vendor prefix debate rages, I can&#8217;t help but note the mounting pile of logical fallacies and downright poor reasoning being deployed. Some context is in order.</p>
<h3>Your Moment Of Zen</h3>
<p>The backdrop to this debate is that CSS is <em>absolutely</em> the worst, least productive part of the web platform. Apps teams at Google are fond of citing the meme that &#8220;CSS is good for documents, but not for apps&#8221;. I push back on this, noting the myriad ways in which CSS is <em>abysmal</em> for documents. That isn&#8217;t to minimize the pain it causes when building apps, it&#8217;s just that the common wisdom is that CSS surely must be <em>fantastic</em> for <em>somebody else</em>. Once we find that person, I&#8217;ll be sure to let you know. In the mean time we should contemplate how very, very far behind the web platform is in making it delightful to build the sorts of things that are work-a-day in native environments.</p>
<p>But it&#8217;s worse than simply being under-powered: CSS has the weakest escape hatches to imperative code and demands the most world-view contortion to understand its various layout modes and their interactions. Imagining a more congruent system isn&#8217;t hard &#8212; there are many in the literature, might I humbly suggest that now might be a good time to read <a href="http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.101.4819">Badros &#038; Borning</a>? &#8212; and even CSS could be repaired were we able to iterate quickly enough. Things have been moving faster lately, but fast enough to catch up with the yawning gap in platform capabilities? We&#8217;ll come back to the speed/scale of change later.</p>
<p>For now, consider that the debate (as <a href="http://folktrash.com/css-vendor-prefixes/">captured by Nate Vaughn</a>) is about the <em>retrospective</em> implications of the few things that have already gotten better for some set of developers in <em>some</em> situations. That this sort of meaningful progress (corners, gradients, animations, transitions, flexing boxes, etc.) is rare makes the debate all the more bone-chilling to me. We finally got a few of the long list of things we&#8217;ve been needing for a decade or more, and now because the future is unevenly distributed, we&#8217;re about to blow up the process that enabled even that modicum of progress? How is it we&#8217;re extrapolating causality about engine usage from this unevenness, anyhow? None of this is obvious to me. The credible possibility of losing prefixes as a way to launch-and-iterate is mind-exploding when you realize that the salient competition isn&#8217;t other browsers, it&#8217;s <em>other platforms</em>. Either the proponents of squatting other vendor&#8217;s prefixes haven&#8217;t thought this through very hard or they&#8217;re bad strategists on behalf of the web as a platform&#8230;not to mention their own products. The analysis that we&#8217;re being asked to accept rests on an entire series of poor arguments. Lets start with the&#8230;</p>
<h3>Uncomfortable Assumptions</h3>
<p>In an <a href="http://www.alistapart.com/articles/the-vendor-prefix-predicament-alas-eric-meyer-interviews-tantek-celik/">interview out yesterday with Eric Meyer</a>, <a href="http://tantek.com/">Tantek Çelik of Mozilla</a> tried to present this debate as a question of barriers to the adoption of non-WebKit based browsers, specifically <a href="http://www.mozilla.org/en-US/mobile/">Firefox Mobile</a>. Opera has made a similar case. What they ommit is that the only platforms where they can credibly ship such browsers are Android and S60 (a dead end). That&#8217;s <a href="http://en.wikipedia.org/wiki/File:World-Wide-Smartphone-Market-Share.png">a large (and growing) chunk</a> of the world&#8217;s handsets &#8212; good news for me, as I now work on Chrome for Android here in London &#8212; but for whatever reason it appears that <a href="http://marketshare.hitslink.com/browser-market-share.aspx?qprid=0&#038;qpcustomd=1">iOS users surf a whole lot more</a>.</p>
<p>Let that sink in: on the devices that are the source of most mobile web traffic today, it&#8217;s not <em>even possible</em> to install a browser based on a different engine, at least not without a proxy architecture like the one used in the excellent <a href="https://market.android.com/details?id=com.opera.mini.android&#038;hl=en">Opera Mini</a> or <a href="http://amazonsilk.wordpress.com/">Amazon&#8217;s Silk</a>. iOS and Windows Phone are both locked-down platforms that come with only one choice of engine (if not browser shell). When folks from the vendors who want to appropriate others&#8217; prefixes talk about &#8220;not being able to compete&#8221;, remember that competition <em>isn&#8217;t even an option</em> for the most active users of mobile browsers. And it&#8217;s prefixes that are keeping us down? We must go deeper.</p>
<p>The tension comes into focus when we talk in terms of <b>conversion</b>, <b>retention</b>, and <b>attrition</b>. Conversions are users who, if able, <em>switch</em> to a new product from an old one. Retention is a measure of how many of those users <em>continue to use</em> the product after some period of time. Today (and since Windows first included a browser), the <em>single largest factor</em> in the conversion of users to new browsers is <em>distribution with an OS</em>. This is the entire rationale behind the <a href="http://arstechnica.com/microsoft/news/2010/02/microsofts-eu-browser-ballot-approved-arrives-march-1.ars">EU&#8217;s browser choice UI, mandated on first start of new Windows installs</a>. Attrition is the rate at which users stop choosing to use your product day after day, and for most desktop installed software, attrition is <em>shockingly</em> high after 3 to 6 months. The attrition rate is usually measured by cohorts over time; users who installed on the same day/week/month to measure what % of that group continue to use the product over increasingly long periods of time. The rate of decay falls, but the overall attrition invariably continues to rise. You might not get un-installed, but that doesn&#8217;t mean you&#8217;ll still be the go-to icon on the user&#8217;s home screen or desktop. Eventually every device is recycled, wiped, or left for history in a drafty warehouse and along with it, your software. A key factor in getting attrition under control for Chrome has been evangelism to improve site compatibility, e.g. &#8220;I&#8217;m not using your browser because my bank website doesn&#8217;t work with it&#8221;. That argument &#8212; that site compatibility is key to ensuring a competitive landscape for what otherwise are substitutes &#8212; puts the entire thing in some perspective. Attrition isn&#8217;t the same thing as conversion, and conversion is driven primarily by integrations and advertising. Implicit in the arguments by Tantek and others is a sub-argument of the form:</p>
<blockquote><p>Our product would have measurably more users if sites were more compatible.</p></blockquote>
<p>Thanks to what we know about what drives conversions, in the short run this is simply false. Long term, what invariably gives you more users is <em>starting with more users</em>. The set of things that are most effective at convincing users to swap browsers, even for a day, include: advertising, word-of-mouth, a superior product, distribution/bundling, and developer advocacy. Depressingly, only one of those involves <em>actually being a better product</em>, and the prerequisite for all of them is the ability to switch (thanks, Android team!). There&#8217;s a similar dynamic at work when doing advocacy to web developers: if you&#8217;re nowhere in their browser stats, they&#8217;re adding support for a standard or worse a second prefix in order to do service to a cause, not because it&#8217;s <em>measurably good for them</em>. Clearly, that&#8217;s going to be somewhat less effective. Where, then, is the multi-million dollar advertising campaign for Fennec? The carrier and OEM rev-share deals for bundling on new Android phones? Hmm. To hear Tantek et. al. tell it, non-WebKit-based browsers would be prevalent on mobile if only it weren&#8217;t for those damned browser prefixes causing users of other browsers to receive different experiences! Also, those kids and that damned dog.</p>
<p>Over the long haul compatibility can have a dramatic effect on the rate of attrition by changing the slope of the curve &#8212; which, remember, is a rate with decay and not a single % &#8212; but it begs the next uncomfortable question: what do we mean by &#8220;compatibility&#8221; here? What sorts of incompatibility <em>cause</em> attrition? Is it content that looks <em>slightly worse</em> but still essentially works (think grey PNG backgrounds on IE6) or does it simply turn you away, not allow you to play in any way, and generally fails (think the ActiveX dependencies of yore)?</p>
<h3>Inaccessible or Ugly?</h3>
<p>Eric was good enough to call out what I view as a key point in this debate: what sort of &#8220;broken&#8221; are we talking about? Tantek responded with a link to side-by-side screenshots of various properties rendered on <a href="http://people.mozilla.com/~atrain/mobile/Evangelism/chrome-compare/chrome-compare.html">Chrome for Android&#8217;s Beta and current Fennec</a>. In some of these cases we may be looking at Fennec bugs. <a href="http://wordpress.com">WordPress.com</a> serves the same content to Fennec which seems to bork what <code>float: left;</code> means. That, or some media query is preventing the main blocks from being floated; it&#8217;s hard to tell which from a quick <code>view-source:</code>. For the versions of google.* included in the list, the front end is simply serving the desktop version to Fennec which makes the wonky button rendering even stranger. Is there room to improve what gets sent to Fennec? You bet, but that&#8217;s not what&#8217;s being argued in the main. Ask yourself this: is what you see on that page worth destroying the prefix system for? &#8216;Cause that&#8217;s what the advocates of prefix-squatting would have you believe. In effect, they&#8217;re suggesting that <em>nothing</em> will cause developers to test on non-pervasive engines, a deeply fascinating assertion. Even if we accept it, it doesn&#8217;t point clearly to a single tactic to resolve the tension. It certainly doesn&#8217;t argue most strongly for prefix-squatting.</p>
<p>An important point Eric failed to follow up on was Tantek&#8217;s assertion that Mozilla will be cloaking user-agent strings. Does he imagine that the only thing that might be cause someone to send different content is CSS support? API support for things like touch events differs, the performance characteristics of device classes and browsers vary wildly, and application developers are keen to deliver known-good, focused experiences. The <a href="http://code.google.com/mobile/articles/webapp_fixed_ui.html">endless saga of <code>position: fixed;</code> as plumbed by Google teams</a> and others is a story of competing constraints: browser vendors optimize for content, content fights back. Repeat. What does Mozilla imagine is going to happen here? Maintained content will react to the browser usage of end-users (and as we&#8217;ve covered, compat != conversions). Unmaintained content, well, that&#8217;s what fallback is all about. And bad things deserve to lose. Assuming that your browser is 100% compatible with developer expectations and testing if you only switch the UA and implement a few prefixes is NPAPI-level crazy all over again, and it&#8217;s entirely avoidable. Tantek and Brendan, of all people, should be able to reason that far. I guess they&#8217;ll find out soon enough &#8212; although we will have all been made poorer for it.</p>
<p>Now, what about the related argument that Mozilla &#038; Co. are only going to be doing this for properties which are &#8220;stable&#8221; (nevermind their actual <a href="http://www.w3.org/Style/CSS/current-work">standardization status</a>)? The argument says that because something hasn&#8217;t changed in another vendor&#8217;s prefixed version in a while, it must be safe to squat on. Not only is this (again) incredibly short-sighted, it says that instead of forcing a standard over the line and clobbering both developers and other vendors with the dreaded label of &#8220;proprietary&#8221; (the usual and effective tactic in this situation), they&#8217;re instead willing to <em>claim ownership and therefore blame</em> for the spread of this soon-to-be-proprietary stuff, all the while punting on having an independent opinion about how the features should be structured and giving up on the standards process&#8230;and all for what?</p>
<h3>Product vs. Platform</h3>
<p>Perhaps there wasn&#8217;t space in Tantek&#8217;s interview with Eric, but both of them chose not to be introspective about the causes of WebKits use in so many mobile browsers, with Tantek merely flagging the use of a single engine by multiple products as &#8220;a warning sign.&#8221; But a warning of what, exactly? Eric didn&#8217;t challenge him on this point, but I sorely wish he had. Why did Safari, the Android Browser, Chrome, Silk, Black Berry, and many others all pick WebKit as the basis for their mobile browsers?</p>
<p>WebKit <em>isn&#8217;t a browser</em>. It&#8217;s just not. To make a browser <em>based</em> on WebKit, one might bring along <em>at least</em> the following bits of infrastructure which WebKit treats as bits to be plugged in:</p>
<ul>
<li>Networking</li>
<li>Caches of some sort</li>
<li>Graphics rendering</li>
<li>A build system</li>
<li>POSIX or other platform plumbing</li>
</ul>
<p>And that&#8217;s a <em>minimum</em>. Competitive ports tend to include WebSQL, LocalStorage, and Indexed DB back-ends, video codecs, 3D infrastructure (deeply non-trivial), perhaps an alternative JavaScript engine (V8 or other), and alternative/additional image decoders (e.g., <a href="http://code.google.com/speed/webp/">WebP</a>). All of that is in addition to needing to create your own UI for bookmarking, navigation, etc. WebKit is an <em>engine</em>, not a fully-functioning vehicle. Therein may lay some of the difference in the relative success of the WebKit and Gecko on mobile to date. Want to build a Gecko-based browser? Great, first clone <a href="https://wiki.mozilla.org/Mobile/Build/Fennec#Install_build_dependencies_.28non-Maemo.29">the <em>entire Firefox codebase</em> from Mercurial</a>, then layer your stuff on top/around. Oh, wait, things might not cleanly be factored to allow you to plug in your own X, Y, or Z? Your builds take forever? Welcome to life in the Mozilla universe where your product is always second fiddle to Firefox. Now, that&#8217;s not by way of criticism, mind you. <em>It is entirely reasonable</em> for a product like Firefox not to pay coordination costs with other vendors/users of their code. God knows the overhead over here in WebKit land of trying to keep the menagerie of ports building against all changes is downright daunting. Mozilla (the organization) has made choices that prioritized the success of their <em>product</em> (Firefox) over their <em>codebase</em> (Gecko). WebKit was structured as platform only (no product), both forcing enormous costs onto every port while also freeing them from swimming upstream against a single product&#8217;s imperatives in the codebase.</p>
<p>What we&#8217;re witnessing isn&#8217;t open vs. closed, it&#8217;s differences in initial cost of adoption. In JS terms, it&#8217;s jQuery (focused core, plugins for everything else) vs. Sencha or Dojo (kitchen sink). Entirely different target users, and both will find their place. Nobody should be shocked to see smaller, more focused bits of code with good plugin characteristics spreading as the basis for new projects. The Mozilla Foundation wants to help prevent monoculture? In addition to making the Firefox product a success, there are concrete engineering things they can do to make Gecko more attractive to the next embedder, Firefox-branded or not. I haven&#8217;t heard of progress or prioritization along those lines, but I&#8217;m out of the loop. Perhaps such an effort is underway, if so, I applaud it. Whatever the future for Gecko, Product success isn&#8217;t related to platform success as a first approximation. Having a good, portable, pluggable core increases the odds of success in evolutionary terms, but it&#8217;s absolutely not determinant; see MSIE.</p>
<p>Speaking of IE&#8230;I respect those guys a lot, but the logical leap they&#8217;re asking us to swallow is that <em>the reason people return Windows Mobile phones is that some CSS doesn&#8217;t work</em>. That&#8217;s what attrition means on a platform where they&#8217;re the only native runtime. Data would change my mind, but it&#8217;s a hell of a lot to accept without proof.</p>
<h3>The Time Component</h3>
<p>Lets take a step back and consider Tantek&#8217;s claim that Mozilla has gotten very little traction in evangelizing multi-prefix or prefix-free development for the past year: Firefox for Android has been available since Oct. 2010 and stable for just 6 months. Opera Mobile on Android has been stable for just over a year. IE 9 (the only IE for mobile you could ever seriously consider not serving fallback experiences to) only appeared with Windows Phone 7.5 (aka &#8220;Mango&#8221;), shipped to users an <em>entire</em> 6 months ago.</p>
<p>And we expect webdevs to have updated all their (maintained) content? Never mind the tenuous correlation between the sorts of soft incompatibilities we&#8217;re seeing at the hands of CSS and user attrition; the argument that even this lesser form of harm hasn&#8217;t been blunted by evangelism appears suspect. Taking the incompatibilities seriously, I can quickly think of several other measures which are preferable to destroying the positive incentives towards standardization the prefix system creates (from least to most drastic):</p>
<ul>
<li>Continued evangelism to web developers with particular focus on major sites</li>
<li>Political pressure on browser vendors to start dropping prefixes (i.e., we&#8217;d all be <em>equally</em> disadvantaged until users pick up the standard version)</li>
<li>UA spoofing <em>without</em> prefix squatting</li>
<li>Blacklists to trigger alternative identity (UA/prefixes) on a subset of sites</li>
</ul>
<p>All of these are less blow-up-the-world than what MSFT, Mozilla, and Opera are proposing. It&#8217;s not even an exhaustive list. I&#8217;m sure you can think of more. Why these have either been not considered or dismissed remains a mystery.</p>
<h3>It&#8217;s More Complicated Than That</h3>
<p>In all of this, we&#8217;re faced with an existential question: what right do web developers have to shoot themselves in the foot? Is there a limit to that right? What sort of damage do we allow when some aspect of the system fails or falls out of kilter for some period of time? It&#8217;s a question with interesting parallels in other walks of life (for a flavor, substitute &#8220;web developers&#8221; with &#8220;banks&#8221;).</p>
<p>Can we show active harm to other browsers from the use of prefixes? The data is at best unclear. Arguing that any harm rises to a level that would justifies destroying the prefixes system entirely is rash. I argued many of the reasons for this in my <a href="http://infrequently.org/2011/11/vendor-prefixes-are-a-rousing-success/">last post</a>, but lets assume in our mental model that developers respond to incentives in <em>some</em> measure. If, concurrently with achieving as-yet un-managed distribution, Mozilla et. al. implement others&#8217; prefixes, what should we expect developers to do in response? After all, they will have reduced whatever tension might have been created by content that &#8220;looked wonky&#8221; and, where standards exist, will have reduced the incentive to switch to the standard version.</p>
<p>Now lets play the model one more turn of the wheel forward too: assume that Chrome or Safari (or both!) act in good faith and contemplate removing the <code>-webkit-*</code> prefix support for standardized features at a quick clip&#8230;and Mozilla doesn&#8217;t. You see how this quickly leads to a Mexican standoff: web developers won&#8217;t stop using prefixed versions because those are the way you get 100% support (thanks to Mozilla&#8217;s support for them); vendors won&#8217;t un-prefix things because <em>others</em> who squat their prefixes will then have a compatibility advantage; and nobody will be keen to add new things behind prefixes because they can no longer be assumed to be experiments that can change. Lose, lose, lose.</p>
<p>Some on the other side of the debate are keen to cite game theory as a support for their course of action, but the only conclusion I can draw is that their analysis must be predicated on a set of user and developer motivations that are entirely unlike the observable world we inhabit.</p>
<h3>A Call To Reason, Not Arms</h3>
<p>Based on a better understanding of the landscape, what should the various parties do to make the world better for themselves now and in the long run and for the web as a platform?</p>
<ul>
<li><b>Web Devs</b>: first, do no harm; test in multiple runtimes, pointedly including a &#8220;fallback&#8221;. Then enhance with prefixes. Do not apologize for giving some (or even many) of your users a better experience. That, after all, is your <em>job</em>. But know this: prefixed properties are not supported, <em>will</em> go away, and when something you didn&#8217;t test the fallback for falls over, it&#8217;s <em>your</em> fault.</li>
<li><b>Browser Vendors</b>: invest in advocacy and distribution enhancing moves for your product before threatening to blow up effective standards policies. If you&#8217;re going to implement a prefixed version, please have a different opinion or push to ram a standard through to Recommendation ASAP. Incompatible right-hand-sides help developers understand that things are still evolving. <em>DO NOT</em> squat on prefixes. It&#8217;s both relative ineffective and will make developer&#8217;s lives harder when they want to <em>legitimately</em> move to standard or support your prefixes.</li>
<li><b>Vendor CSS WG Reps</b>: get it through your heads, you&#8217;re <em>behind</em>. It&#8217;s not quaint and it&#8217;s not excusable. The platform needs more powerful CSS features, and stat. It&#8217;s long past time to start stealing good ideas from the pre-processors. Appeals to a lack of manpower to implement must never block others and shouldn&#8217;t block standardization, so please stop making them. If you care about the platform&#8217;s success, let those who are able and willing to take risks do so.</li>
<li><b>The CSS WG (as a whole)</b>: get the lead out. It&#8217;s not exclusively the W3C&#8217;s fault that things are slow, but the current MTTR (Mean Time To Recommendation) is still glacial. It is unreasonable to expect vendors to drop prefix support immediately upon standardization, but the W3C has a role here to advocate for quick sunsetting. Daniel Glazman is, as ever, right on most of this, but more can be done to streamline the process post CR.</li>
<li><b>The WebKit Project</b>: Add build flags to allow WebKit-based products to enable/disable vendor prefix support independently.</li>
<li><b>Chrome/Safari/Other-prefix-supporting-browsers</b>: Sunset prefixes as soon as is practicable post-standardization. Similarly, don&#8217;t ship prefixed features you&#8217;re not willing to be on the hook for via your reps to the CSS WG. Disabling them may be painful, but it&#8217;s the only good-faith thing to do.</li>
</ul>
<h3>Endnotes</h3>
<p>I&#8217;ve left a lot out of this post, but it&#8217;s too long already. I do truly hope it&#8217;s the last I write on prefixes because, as I said up front, we have <em>much</em> bigger fish to fry. Stat. Prefixes <em>do</em> work, they&#8217;re essential to delivering a future platform that can compete, and yes, they should be torn down at the same pace they&#8217;re erected.</p>
<p>A few things that folks have asked about as tangents to this debate:</p>
<ul>
<li>It&#8217;s never a good thing for there to be homogeneity in the experimentation phase. The <em>explicit goal</em> of the prefixes system is to enable diversity of early opinion and fast coalescing around the best answer, thereby enabling the writing of a standard which is likely to need less revising and iteration. Diversity provides some value, the market tests the alternatives, and we deliver the most value we can over time through the <em>standard</em> version. It has always been thus, but prefixes make it less risky&#8230;assuming we don&#8217;t start stepping on everyone else&#8217;s toes.</li>
<li>If the reasoning behind prefixes is to set up and tear down large-scale experiments, iterate, and collect feedback then Lea&#8217;s <a href="http://leaverou.github.com/prefixfree/">-prefix-free</a> approach and PPK&#8217;s <a href="http://www.quirksmode.org/blog/archives/2012/02/alpha_and_beta.html"><code>-alpha-*</code>/<code>-beta-*</code></a> proposals are equally counter-productive and should be avoided at all costs. Making prefixes less painful to use reduces the natural incentives for migrating to a standard while blindly assuming the same right-hand for a future standard version as we have for <em>some</em> prefixed versions is plainly idiotic. What were they thinking?</li>
<li><code><a href="http://felipe.wordpress.com/2012/02/02/a-proposal-to-drop-browser-vendor-prefixes/">@-vendor-unlock</a></code> is only slightly smarter, but in every possible way inferior to <a href="http://lists.w3.org/Archives/Public/www-style/2011Mar/0478.html">CSS Mixins</a>. Would that the WG spent as much time on Mixins as they have on this prefix kerfuffle.</li>
<li>Yes, I was in Paris when the CSS WG F2F was happening. No, I wasn&#8217;t at the meetings. Duty (Chrome for Android) called.</li>
<li>If you&#8217;ve read this far, congrats. You may be the only one. I&#8217;ve been assured by CSS WG delegates that nobody cares what I think, which statistically seems to just be rounding down by a tiny bit. Fair enough.</li>
</ul>
<p><em><b>Update</b>: <a href="http://infrequently.org/2012/02/misdirection/comment-page-1/#comment-239566">Michael Mullany of Sencha adds epicly good, epicly long context about what causes developers to target UAs and what the incentives that&#8217;ll change their minds about supporting a given browser really are.</a></em></p>
<p><em>Thanks to <a href="http://fberriman.com/">Frances Berriman</a>, <a href="http://jakearchibald.com/">Jake Archibald</a>, <a href="http://gent.ilcore.com/">Tony Gentilcore</a>, and <a href="http://www.xanthir.com/blog/">Tab Atkins</a> for reviewing earlier versions of this post. Errors of fact and form are all mine, however. Updated occasionally for clarity and to remove typos.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2012/02/misdirection/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Non-Admin Chrome Frame, Now Stable!</title>
		<link>http://infrequently.org/2011/08/non-admin-chrome-frame-now-stable/</link>
		<comments>http://infrequently.org/2011/08/non-admin-chrome-frame-now-stable/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 04:17:28 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[chrome]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[openweb]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://infrequently.org/?p=1638</guid>
		<description><![CDATA[The title says it all: you can now put a link like this in your app and users will get the stable version of either admin or non-admin Chrome Frame, depending on what rights they have on their system: &#60;!--[if lt IE 9 ]&#62; &#60;p&#62;Your browser is &#60;em&#62;ancient!&#60;/em&#62; &#60;a href=&#34;http://microsoft.com/ie&#34;&#62;Upgrade&#60;/a&#62; or &#60;a href=&#34;http://www.google.com/chromeframe/?redirect=true&#34;&#62; install Google [...]]]></description>
				<content:encoded><![CDATA[<p>The title <a href="http://blog.chromium.org/2011/08/non-admin-chrome-frame-reaches-stable.html">says it all</a>: you can now put a link like this in your app and users will get the stable version of either admin or non-admin Chrome Frame, depending on what rights they have on their system:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="html" style="font-family:monospace;">&lt;!--[if lt IE 9 ]&gt;
&lt;p&gt;Your browser is &lt;em&gt;ancient!&lt;/em&gt;
&lt;a href=&quot;http://microsoft.com/ie&quot;&gt;Upgrade&lt;/a&gt; or
&lt;a href=&quot;http://www.google.com/chromeframe/?redirect=true&quot;&gt;
   install Google Chrome Frame&lt;/a&gt; to experience this app.
&lt;/p&gt;
&lt; ![endif]--&gt;</pre></td></tr></table></div>

<p>The <code>redirect=true</code> ensures that once the the install completes, users are automatically redirected back to your site (slick, huh?) and the conditional comments keep the prompt from being shown to folks with modern browsers.</p>
<p>At the top of your document you&#8217;ll still need to add the <a href="http://www.chromium.org/developers/how-tos/chrome-frame-getting-started#TOC-Making-Your-Pages-Work-With-Google-">header or meta tag to your apps/pages</a> to opt-in to Chrome Frame rendering:</p>
<pre>
    <b>&lt;meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"&gt;</b>
</pre>
<p>Couldn&#8217;t be easier, and if you&#8217;re using a starter kit like the excellent <a href="http://html5boilerplate.com/">HTML5 Boilerplate</a>, it&#8217;s already in there!</p>
<h3>Nearly forgot&#8230;</h3>
<p>So, why, you might ask, did it take this long from <a href="http://www.youtube.com/watch?v=3YkEUpJQP3o">showing user-mode at I/O</a> to get this to the the world?</p>
<p>Good, if convoluted question. The answer is long, complicated, and involves a harrowing-yet-seamless transition of hundreds of millions of Chrome installs to a new installer infrastructure, but I&#8217;ll skip to the punch line: <em>millions of users won&#8217;t even have to download Chrome Frame</em> to install it. Chrome Frame&#8217;s quick-enable mode is available on every system that has Chrome installed &#8212; even if Chrome isn&#8217;t being used as the default browser &#8212; which means that for many of your users installing Chrome Frame can be nearly instant. No download, no traditional install process. Just &#8220;activate&#8221;, &#8220;accept&#8221; and those users are on their way back to your site to experience the HTML5 goodness you&#8217;ve built.</p>
<p>If you&#8217;re contemplating adding a prompt to your site or app, know that you&#8217;re not alone either. As promised, GMail is asking all IE 6 and 7 users to upgrade or install Chrome Frame. A growing list of sites like <a href="http://chrome.angrybirds.com">Angry Birds</a> couldn&#8217;t have been built without assuming Chrome Frame as a solution to &#8220;the IE problem&#8221;.</p>
<p>Chrome Frame is all about turning HTML5 from a &#8220;someday&#8230;&#8221; prospect to a reality for your very next project, even if you&#8217;re deploying to users and organizations that can&#8217;t join us here in the future by adopting modern browsers. Only the trailing edge has been standing still, and now that we&#8217;re all free of it I can&#8217;t wait to see we build.</p>
<p>The web is about to get better a whole lot faster.</p>
<p><b>Update:</b> Erik Wright informs me that we don&#8217;t even need the <code>prefersystemlevel</code> now! Post updated to reflect this.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2011/08/non-admin-chrome-frame-now-stable/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chrome Frame Now Stable!</title>
		<link>http://infrequently.org/2010/09/chrome-frame-now-stable/</link>
		<comments>http://infrequently.org/2010/09/chrome-frame-now-stable/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 19:00:40 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[chrome]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[chromeframe]]></category>
		<category><![CDATA[gcf]]></category>
		<category><![CDATA[stable]]></category>

		<guid isPermaLink="false">http://infrequently.org/?p=1456</guid>
		<description><![CDATA[Exactly a year from the original announcement, we&#8217;ve just launched a stable, ready-for-prime-time version of Chrome Frame (with MSI packages). In addition to heroic work by the whole team on improving GCF stability in the face of poorly written extensions, the biggest change in the Stable release is an astounding improvement in cold start performance [...]]]></description>
				<content:encoded><![CDATA[<p>Exactly a year from the original announcement, we&#8217;ve <a href="http://blog.chromium.org/2010/09/google-chrome-frame-stable-and-speedy.html">just launched a stable, ready-for-prime-time version of Chrome Frame</a> (<a href="http://www.google.com/chromeframe/eula.html?msi=true">with MSI packages</a>). In addition to heroic work by the whole team on improving GCF stability in the face of poorly written extensions, the biggest change in the Stable release is an astounding improvement in cold start performance (greater than 3x faster in many cases). Faster startups mean that your users wait less to experience a better web and that GCF is appropriate for a wide range of applications that can benefit from HTML5 features. Faster starts also mean that JavaScript heavy sites benefit even more from V8 since the engine can start running your code faster, sooner.</p>
<p>Like Chrome, GCF is on the <a href="http://blog.chromium.org/2010/07/release-early-release-often.html">6 week release cycle</a>, so expect features like per-user install and even faster starts that are arriving in the <a href="http://www.google.com/chromeframe/eula.html?extra=devchannel&#038;hl=en">Dev Channel</a> to become available quickly.</p>
<p>So what are you waiting for? Say no to legacy baggage and start saying yes to HTML5 and the future <a href="http://www.chromium.org/developers/how-tos/chrome-frame-getting-started#TOC-Making-Your-Pages-Work-With-Google-">by adding the GCF header/tag</a> to your sites and apps. It&#8217;s nearly zero effort. When you&#8217;re comfortable, you can <a href="http://www.chromium.org/developers/how-tos/chrome-frame-getting-started#TOC-Detecting-Google-Chrome-Frame-and-P">add a prompt</a> and free yourself to build sites and apps against only the modern web. When you do, you&#8217;ll see how fast and productive web development can really be. I promise you won&#8217;t want to go back. Thanks to GCF, you won&#8217;t have to.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2010/09/chrome-frame-now-stable/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Chrome Frame Dev Channel and Testing Gotchas</title>
		<link>http://infrequently.org/2010/07/chrome-frame-dev-channel-and-testing-gotchas/</link>
		<comments>http://infrequently.org/2010/07/chrome-frame-dev-channel-and-testing-gotchas/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 21:17:03 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[chromeframe]]></category>
		<category><![CDATA[gcf]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=1361</guid>
		<description><![CDATA[So you&#8217;re making the new shiny &#8212; &#8217;cause that&#8217;s how you roll &#8212; and you&#8217;re thinking to yourself &#8220;hrm, I&#8217;ve told users of legacy browsers to get Chrome Frame or upgrade, but there&#8217;s this new awesome feature in the Chrome Developer Channel&#8230;but it&#8217;s not in the version of Chrome Frame I&#8217;m testing with. I thought [...]]]></description>
				<content:encoded><![CDATA[<p>So you&#8217;re making the new shiny &mdash; &#8217;cause that&#8217;s how you roll &mdash; and you&#8217;re thinking to yourself &#8220;<em>hrm, I&#8217;ve told users of legacy browsers to get <a href="http://google.com/chromeframe">Chrome Frame</a> or upgrade, but there&#8217;s this new awesome feature in the <a href="http://dev.chromium.org/getting-involved/dev-channel">Chrome Developer Channel</a>&#8230;but it&#8217;s not in the version of Chrome Frame I&#8217;m testing with. I thought I was on the Dev channel?</em>&#8221;</p>
<p>Indeed, if you installed GCF prior to the Beta release, you would have been on the Dev version, but when the Beta was pushed, all existing GCF users were moved to it as a one-time transition. That means you might not be getting the new shiny features we&#8217;re pouring into Dev as quickly as you anticipated&#8230;but fear not! There&#8217;s a new <a href="http://www.google.com/chromeframe/eula.html?extra=devchannel">Dev Channel Release</a> available. If you&#8217;re developing sites with GCF and you want to see what&#8217;s coming, I highly recommend getting and testing against this version. You won&#8217;t be moved to Beta again, so this uninstall/reinstall is a one-time change.</p>
<p>As folks begin to use and test with GCF, one of the first many try is <a href="http://www.chromium.org/developers/how-tos/chrome-frame-getting-started#TOC-Testing-Your-Sites">to use the <code>OptInUrls</code></a> registry key to over-ride a site&#8217;s preference about which renderer to use. This tends to cause confusion and spurious bug reports because many sites employ server-side <code>User-Agent</code> detection to send different content to different browsers. Since GCF uses IE&#8217;s network stack and reports a <a href="http://alex.dojotoolkit.org/10/il_devfest_2010/gcf.html#slide18">slightly modified IE <code>User-Agent</code></a> instead of Chrome&#8217;s UA, server-side detection may send IE-specialized content instead of Chrome-friendly content. This includes many large sites like Yahoo, GMail, and most sites built with <a href="http://code.google.com/webtoolkit/">GWT&#8217;s server-side detection</a>.</p>
<p><em>These are not bugs</em>.</p>
<p>Those sites are working as intended and GCF is operating correctly. What&#8217;s happening, instead, is that by adding sites to the <code>OptInUrls</code> list that do not understand GCF, you&#8217;re breaking the contract at the core of how GCF works: existing content works the way it always has. It&#8217;s only when you&#8217;re sure that a site is sending browser-neutral content (usually when it&#8217;s <em>your site</em>) that you should ever add a site to the <code>OptInUrls</code> list for your system or organization. As usual, if you&#8217;ve got questions about GCF that aren&#8217;t answered in the <a href="http://code.google.com/chrome/chromeframe/faq.html">FAQs</a> or <a href="http://www.chromium.org/developers/how-tos/chrome-frame-getting-started">docs</a>, you can ask them on the <a href="https://groups.google.com/group/google-chrome-frame?pli=1">Google Group for the project</a>. The whole team is subscribed to the list and we&#8217;re focused on helping you make awesome apps, so stop by, say howdy, and let us know how it&#8217;s going.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2010/07/chrome-frame-dev-channel-and-testing-gotchas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perspective Is Not A Liquid Asset</title>
		<link>http://infrequently.org/2009/05/perspective-is-not-a-liquid-asset/</link>
		<comments>http://infrequently.org/2009/05/perspective-is-not-a-liquid-asset/#comments</comments>
		<pubDate>Tue, 05 May 2009 20:11:27 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[chrome]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/2009/05/perspective-is-not-a-liquid-asset/</guid>
		<description><![CDATA[ZDNet has an article out discussing a study that shows that that Chrome&#8217;s (Open Source) auto-update system makes the browser more secure than the alternatives. Disclosure: Google co-authored the study. I work for Google, on Chrome. Caveat emptor. Back when I did security for a living, I quickly noted a distinction between those who saw [...]]]></description>
				<content:encoded><![CDATA[<p>ZDNet has <a href="http://blogs.zdnet.com/security/?p=3316">an article</a> out discussing <a href="http://www.techzoom.net/publications/silent-updates/">a study that shows</a> that that Chrome&#8217;s (<a href="http://alex.dojotoolkit.org/2009/04/omaha-goes-open-source/">Open Source</a>) auto-update system makes the browser more secure than the alternatives. Disclosure: Google co-authored the study. I work for Google, on Chrome. Caveat emptor.</p>
<p>Back when I did security for a living, I quickly noted a distinction between those who saw things as white vs. black and those who viewed things in risks. White vs. black is the mentality of the attacker (you only need to pwn one system, not every system) and of green defenders who can&#8217;t yet distinguish severity or haven&#8217;t been thought to think about defense in depth. A risk-based view of security pays a lot more attention to questions of who you&#8217;re securing a system against and for how long. In this world view, threats are risks to be evaluated and mitigated, not a constant stream of sky-is-falling crises. A risk based view says &#8220;yes, the sky might be falling somewhere, but what are the odds it&#8217;s falling on <em>me</em>? And even if it is, what&#8217;s the worst that can happen?&#8221; If the likelihood is high and the severity is high, spend a lot of time on it. When you view security in terms of risks to be mitigated, you make very different tradeoffs. If you think you need to (or even can) control and eliminate every risk, than you might be tempted to build brittle systems. If, on the other hand, you acknowledge that humans are invoked (and are fallible) and that sometimes things break, you might give up a little control to get to a better place on average and be willing to suffer some minor setbacks on the way there.</p>
<p>The difference between Chrome&#8217;s update system and that of other browsers is that the Chrome updater turns the dial all the way in the direction of mitigation, treating the window of vulnerability as the most important factor in the risk of an attack. It&#8217;s more important in this world to mitigate an attack than to have asked the user if they want their system to be updated. Is there any other right answer to that question for most users than &#8220;yes&#8221;?</p>
<p>Here&#8217;s where the knives come out: rational people with very different perspectives often want totally different things. System administrators for large organizations &ndash; tallented people whose job it is to personally assess and deal with risks &ndash; may disagree with this policy since it introduces new risks which they can&#8217;t effectively mitigate. The Chrome answer to these concerns has been to treat them as the special case they are. <a href="http://www.google.com/chrome/eula.html?standalone=1">You can easily get the standalone installer that doesn&#8217;t include auto-update</a>, but it&#8217;s not something that&#8217;s advertised on the <a href="http://www.google.com/chrome">main download page</a>. Why? Because it&#8217;s not what will keep <em>most</em> users secure.</p>
<p>The default Chrome update model is designed around the perspective of the average Chrome user. Not the vocal minority of those who know enough to build Chrome from source or even for corporate IT administrators. Their needs are real, and their perspective is valid, but it is not common and should not dominate the discussion about what is best for the majority. If we&#8217;ve learned anything through most GUI Open Source projects, it&#8217;s that developers have a hard time empathizing with the needs and skills of most users. This shows up in many places, but perhaps the most curious place of all is the extra confirmation box that asks you if you&#8217;d like to have a secure browser or an insecure browser. To anyone but an IT administrator or a developer, it&#8217;s not a legitimate choice, it&#8217;s an opportunity for failure with the deck stacked against you. </p>
<p>I&#8217;m glad the Chrome team has prioritized security <em>through</em> convenience at the expense of the illusion of control. It&#8217;s one of those things that&#8217;s obvious once you change your perspective. Too bad it&#8217;s not nearly as easy as it sounds. Everyone&#8217;s selling their point of view, but there are predictably few buyers amongst the already enfranchised.</p>
<p><i>Hat tip: Glen&#8217;s excellent <a href="http://www.chatgraph.com/?q=chrome">ChatGraph</a>.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2009/05/perspective-is-not-a-liquid-asset/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ending The ga.js Wait</title>
		<link>http://infrequently.org/2009/04/ending-the-gajs-wait/</link>
		<comments>http://infrequently.org/2009/04/ending-the-gajs-wait/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 04:10:16 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=908</guid>
		<description><![CDATA[Google Analytics is ubiquitous, not least of all because it&#8217;s better at what it does than most of the alternatives. Also, it doesn&#8217;t require any install or maintenance. And it&#8217;s free. What&#8217;s not to like? Frankly, not much, but if I had to nit pick, I&#8217;d note that the worst part of Google Analytics is [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.google.com/analytics/">Google Analytics</a> is ubiquitous, not least of all because it&#8217;s better at what it does than most of the alternatives. Also, it doesn&#8217;t require any install or maintenance. And it&#8217;s free. What&#8217;s not to like?</p>
<p>Frankly, not much, but if I had to nit pick, I&#8217;d note that the worst part of Google Analytics is the <a href="http://www.google-analytics.com/ga.js"><code>ga.js</code></a> script that does the actual tracking of content. It&#8217;s not bad, in and of itself, but it tends to load slowly. There are several reasons for this:</p>
<ul>
<li><b>Another DNS lookup to resolve <code>http://www.google-analytics.com/</code></b>. This DNS entry is likely to be &#8220;warm&#8221; given how frequently <code>ga.js</code> is used on the web, but as <a href="http://blog.chromium.org/2008/09/dns-prefetching-or-pre-resolving.html">Jim Roskind explained on the Chromium blog</a>, it&#8217;s the outliers that kill you.</li>
<li><b>It&#8217;s kinda big</b>. At 9K on the wire (22K unzipped), <code>ga.js</code> is kinda chunky for what it does most of the time, namely tracking a single page load.</li>
<li><b>The <a href="http://code.google.com/apis/analytics/docs/tracking/gaTrackingOverview.html">default instructions</a> are bone-headed</b>. They direct you to do a <code>document.write()</code> which is a blocking, synchronous operation WRT page loading. This is tres <a href="http://raibledesigns.com/rd/entry/oscon_2008_even_faster_web">dumb</a>. Reasonable people should just include <code>ga.js</code> with a <code>&lt;script&gt;</code> tag, but nearly nobody does. Turns out that sane defaults still matter.</li>
<li><b>Load times seem totally random.</b> As with DNS lookup, <code>ga.js</code>&#8216;s latency varies wildly. This isn&#8217;t backed up by anything empirical, but many pages feel blocked by <code>ga.js</code> for a near eternity.</li>
</ul>
<p>So how to fix this? Dojo 1.3&#8242;s <code>dojox.analytics.Urchin</code> to the rescue!  Given that I was going to be including Dojo on the page to do other things anyway, I can use 1.3&#8242;s new Urchin system to help amortize the cost of using Google Analytics. The code running on this blog now includes the following code (more or less):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;script type=&quot;text/javascript&quot;
  src=&quot;http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js&quot;&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
  dojo.addOnLoad(function(){
    setTimeout(function(){
      dojo.require(&quot;dojox.analytics.Urchin&quot;);
      dojo.addOnLoad(function(){
        var tracker = new dojox.analytics.Urchin({
          acct: &quot;UA-XXXXXX-X&quot; // your tracking # here
        });
      });
    }, 100);
  });
&lt;/script&gt;</pre></td></tr></table></div>

<p>You can see the real thing by looking at the bottom of this page which pulls in <a href="http://alex.dojotoolkit.org/wp-content/themes/sandbox/custom.js">custom.js</a> which includes this logic. <a href="http://higginsforpresident.net/2008/06/google-analytics-after-onload/">Pete Higgins blogged about how the module works when he first wrote it</a>, and the strategy is to load Dojo from a CDN (since the page wanted it for other things) and wait until after the page has loaded to include <code>ga.js</code>. This delayed loading ensures that the page is responsive before we start doing anything related to tracking. The nested calls to <code>dojo.addOnLoad</code> show how we can wait for one set of modules to finish before kicking off another group, and in this case we also wait until after the page is responsive to load <code>dojox.analytics.Urchin</code>. This module further delays loading of <code>ga.js</code>, meaning that it doesn&#8217;t matter how long it takes for things like DNS to resolve and for Google to serve <code>ga.ja</code> since it&#8217;s not ever blocking the user.</p>
<p>Looking at the &#8220;before&#8221; and &#8220;after&#8221; shots in firebug gives you some idea of how this technique can really make a difference:</p>
<div style="padding-left: 50px; font-style: italic;">
<div id="attachment_940" class="wp-caption aligncenter" style="width: 310px"><a href="http://alex.dojotoolkit.org/wp-content/uploads/2009/04/before_loading_detail.png"><img src="http://alex.dojotoolkit.org/wp-content/uploads/2009/04/before_loading_detail-300x103.png" alt="onload waits for ga.js" title="before_loading_detail" width="300" height="103" class="size-medium wp-image-940" /></a><p class="wp-caption-text">onload waits for ga.js</p></div></p>
<p><div id="attachment_941" class="wp-caption aligncenter" style="width: 310px"><a href="http://alex.dojotoolkit.org/wp-content/uploads/2009/04/loading_detail.png"><img src="http://alex.dojotoolkit.org/wp-content/uploads/2009/04/loading_detail-300x102.png" alt="using dojox.analytics.Urchin, we can get a responsive page and *then* track usage" title="loading_detail" width="300" height="102" class="size-medium wp-image-941" /></a><p class="wp-caption-text">using dojox.analytics.Urchin, we can get a responsive page and *then* track usage</p></div>
</div>
<p>We get page tracking and the user gets an interactive page faster. Rad.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2009/04/ending-the-gajs-wait/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Notes To A Future Self: Getting Productive On WinXP</title>
		<link>http://infrequently.org/2008/12/notes-to-a-future-self-on-de-sucking-xp/</link>
		<comments>http://infrequently.org/2008/12/notes-to-a-future-self-on-de-sucking-xp/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 21:15:20 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=844</guid>
		<description><![CDATA[Windows XP is truly a horrid desktop OS, particularly if you&#8217;re a programmer. The default install contains roughly nothing useful, and even getting a development environment going requires grabbing the likes of cygwin, Visual Studio, and a zillion patches from Microsoft. The truly dispiriting thing, though, is how badly cmd.exe still sucks. I fully admit [...]]]></description>
				<content:encoded><![CDATA[<p>Windows XP is truly a horrid desktop OS, particularly if you&#8217;re a programmer. The default install contains roughly nothing useful, and even getting a development environment going requires grabbing the likes of cygwin, Visual Studio, and a zillion patches from Microsoft.</p>
<p>The truly dispiriting thing, though, is how badly cmd.exe still sucks. I fully admit that my personal programming proclivities are not normal, but to be reasonably productive I need a Unix-like shell, a terminal that works (can be resized, has reasonable VT100 emulation, etc.), and the ability to fix the &#8220;Caps Lock&#8221; key to do the right thing &ndash; namely, have it fire the &#8220;Ctrl&#8221; key instead. This is all relatively straightforward to do on Linux and OS X. Here&#8217;s how I got it done with Windows:</p>
<h4>Do the MSFT Patch Dance</h4>
<p>Make coffee?</p>
<h4>Install Cygwin</h4>
<p>We&#8217;ve all <a href="http://www.cygwin.com/">done it a thousand times</a>. This&#8217;ll make 1001. It&#8217;s kind of comforting that the Cygwin home page hasn&#8217;t changed perceptibly in nearly a decade.</p>
<h4>Get SharpKeys</h4>
<p>Instead of fugly registry hacks, <a href="http://www.randyrants.com/2006/07/sharpkeys_211.html">SharpKeys</a> allows you to map the dreaded and useless &#8220;Caps Lock&#8221; key to something actually useful. If your key-mapping preferences swing some other way, SharpKeys can likely handle that too. Not sure why it&#8217;s not built into Windows, frankly.</p>
<h4>Set Up Puttycyg</h4>
<p>Having cygwin is nice, but having a terrible shell with Cygwin? Not so nice. Enter <a href="http://code.google.com/p/puttycyg/">Puttycyg</a>, a small hack on the venerable <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">Putty</a> SSH client for windows that provides an option to launch a local Cygwin session in lieu of connecting to another system. </p>
<p>Once I extracted it and ensured the Puttycyg directory was in my windows PATH, I created a desktop shortcut to the <code>putty.exe</code> included in the distribution and configured the shortcut (right-click) to read:</p>
<pre>
"C:\Documents and Settings\slightlyoff\Desktop\puttycyg\putty.exe" -cygterm -
</pre>
<p>And then set the &#8220;Shortcut key:&#8221; to be:</p>
<pre>
Ctrl + Alt + T
</pre>
<p>Now, whenever I want a fully functional shell from my desktop, I just hit that key combination and it All Works (TM).</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2008/12/notes-to-a-future-self-on-de-sucking-xp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Joining Google</title>
		<link>http://infrequently.org/2008/11/joining-google/</link>
		<comments>http://infrequently.org/2008/11/joining-google/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 21:48:40 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[openweb]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[sitepen]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=840</guid>
		<description><![CDATA[Starting next month, I&#8217;ll be a Googler. To my great surprise, I&#8217;ve been at SitePen two and a half years. It has been nothing short of wonderful which may explain why it doesn&#8217;t feel like it has been that long. When I look back at what we&#8217;ve accomplished it&#8217;s also surprising that we&#8217;ve been able [...]]]></description>
				<content:encoded><![CDATA[<p>Starting next month, I&#8217;ll be a Googler.</p>
<p>To my great surprise, I&#8217;ve been at SitePen two and a half years. It has been nothing short of wonderful which may explain why it doesn&#8217;t feel like it has been that long. When I look back at what we&#8217;ve accomplished it&#8217;s also surprising that we&#8217;ve been able to do all if it in such a short timeframe. Between the huge client projects and re-building Dojo from the ground up, it has been busy bordering on nutty.</p>
<p>It already makes me sad to leave behind working with the SitePen crew, many of whom I helped to hire in and who I count among my closest friends. But I won&#8217;t be entirely gone. I&#8217;ll still be contributing to Dojo in my new role, if less frequently. Not that it&#8217;ll slow the project down any. Pete, Bill, Adam, and Tom have Dojo well in hand and have been driving things forward at a furious rate. Dojo has always been a team effort, and I&#8217;m excited about the improvements coming in 1.3. I&#8217;ve gotten a dis-proportionate amount of the credit over the years (and not enough of the blame), and as Dojo evolves from here it will continue to be because companies like <a href="http://sitepen.com">SitePen</a>, <a href="http://uxebu.com/">Uxebu</a>, <a href="http://aol.com">AOL</a>, and <a href="http://ibm.com">IBM</a> have all been able to contribute to make it happen and that leaders like Pete Higgins have stepped up to lead and teach and learn with the community. My deepest thanks go to Dylan and SitePen for having let me be a part of that process on a daily basis for the last couple of years.</p>
<p>So what could possibly pry me away from such a sweet, sweet gig at SitePen? </p>
<p>In a word, <a href="http://www.google.com/chrome">Chrome</a>.</p>
<p>Three years after many of my friends joined Google, the appeal of getting to fix the &#8220;web as platform&#8221; problem from the inside has finally proven irresistible. There&#8217;s much to do, and the WebKit platform seems like the best shot that we have (collectively) at forging a future that&#8217;s not just open, but also markedly better. At SitePen I&#8217;ve had the chance to make the web a better place through Dojo. At Google I&#8217;ll have a chance to do it from the browser itself.</p>
<p>To the friends I&#8217;m leaving, it was a privilege to work with you. To the friends I&#8217;m joining, thanks for your trust and faith.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2008/11/joining-google/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>A Lovely Box For Your Toolkit</title>
		<link>http://infrequently.org/2008/07/a-lovely-box-for-your-toolkit/</link>
		<comments>http://infrequently.org/2008/07/a-lovely-box-for-your-toolkit/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 18:15:13 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sitepen]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=686</guid>
		<description><![CDATA[I&#8217;m incredibly excited about the SitePen Dojo Toolbox AIR app that just launched. I&#8217;ve been using early versions for a couple of weeks now, and in that time it has earned a privileged place on my desktop. Being able to make local builds without delving to the command line is something that I&#8217;ve wanted to [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sitepen.com/labs/toolbox/"><img src="http://www.sitepen.com/blog/wp-content/uploads/2008/07/launcherexpanded.png" style="width: 70px; padding-right: 15px; border: none;" align="left" /></a></p>
<p>I&#8217;m incredibly excited about the <a href="http://www.sitepen.com/blog/2008/07/08/dojo-toolbox-first-look/">SitePen Dojo Toolbox</a> <a href="http://www.adobe.com/products/air/">AIR</a> app that just launched. I&#8217;ve been using early versions for a couple of weeks now, and in that time it has earned a privileged place on my desktop. Being able to make local builds without delving to the command line is something that I&#8217;ve wanted to be able to show new Dojo users for <em>years</em> and this tool finally makes it easy. There&#8217;s more work to do around configuring the profiles themselves, but the new tool demystifies many of the build configuration options significantly. Having a searchable API viewer available is also a godsend. Huge props to the team that put it together!</p>
<p><b>Edit:</b> I forgot to note one of my favorite parts of the project, namely that because the Dojo build system is written in JavaScript (thanks to <a href="http://tagneto.blogspot.com/">James Burke</a>&#8216;s awesome work), the build system in the Toolbox doesn&#8217;t require Java. Instead, SitePen was able to port the few Rhino dependencies in the build tool to work with the native JavaScript engine in AIR. It&#8217;s a minor thing, but it speaks to the excellent engineering behind Dojo&#8217;s tooling and the power of having actual web-native technologies inside a desktop app.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2008/07/a-lovely-box-for-your-toolkit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Kris Zyp Joins SitePen</title>
		<link>http://infrequently.org/2008/01/kris-zyp-joins-sitepen/</link>
		<comments>http://infrequently.org/2008/01/kris-zyp-joins-sitepen/#comments</comments>
		<pubDate>Thu, 03 Jan 2008 01:23:11 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[sitepen]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=643</guid>
		<description><![CDATA[Some time back I posted about an opening in SitePen&#8217;s R&#038;D &#8220;group&#8221;. The responses I got back were astounding, and I couldn&#8217;t be happier that Kris Zyp is joining me to help work on things that we feel are important to the future of the open web. This is yet another high point in our [...]]]></description>
				<content:encoded><![CDATA[<p>Some time back I posted about an <a href="http://alex.dojotoolkit.org/?p=616#comments">opening in SitePen&#8217;s R&#038;D &#8220;group&#8221;</a>. The responses I got back were astounding, and I couldn&#8217;t be happier that <a href="http://www.JSON.Com/2008/01/02/joining-sitepen/">Kris Zyp is joining me</a> to help work on things that we feel are important to the future of the open web. This is yet another high point in our recent string of <a href="http://blog.sitepen.com/">great hires</a>. SitePen has never been a better place to work, and that&#8217;s saying something.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2008/01/kris-zyp-joins-sitepen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DWR Joins The Dojo Foundation, Joe Walker Joins SitePen</title>
		<link>http://infrequently.org/2007/12/drw-joins-the-dojo-foundation-joe-walker-joins-sitepen/</link>
		<comments>http://infrequently.org/2007/12/drw-joins-the-dojo-foundation-joe-walker-joins-sitepen/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 20:25:45 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[comet]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[Dojo Foundaton]]></category>
		<category><![CDATA[openweb]]></category>
		<category><![CDATA[sitepen]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=639</guid>
		<description><![CDATA[Dylan has the short-and-sweet writeup of what&#8217;s happening with DWR and the Dojo Foundation and Joe Walker has a bit more Q&#038;A. I can&#8217;t really add much to the &#8220;news&#8221; bit of the news other than to say that I&#8217;m tremendously excited about it. The DWR community has been amazingly level-headed in its deliberations, and [...]]]></description>
				<content:encoded><![CDATA[<p>Dylan has the <a href="http://www.sitepen.com/blog/2007/12/11/london-calling/">short-and-sweet writeup</a> of what&#8217;s happening with DWR and the Dojo Foundation and <a href="http://getahead.org/blog/joe/2007/12/11/changes_for_dwr.html">Joe Walker</a> has a bit more Q&#038;A. I can&#8217;t really add much to the &#8220;news&#8221; bit of the news other than to say that I&#8217;m tremendously excited about it. The DWR community has been amazingly <a href="http://www.nabble.com/DWR-and-the-Dojo-Foundation-to13766527.html#a13767547">level-headed</a> in its deliberations, and I can&#8217;t wait to work with them in the future.</p>
<p>I&#8217;ve been concerned a bit that it may appear as though Joe joining SitePen may carry with it the perception that the Dojo Foundation is an arm of SitePen in some way or that DWR will now need to become Dojo-centric. Luckily neither is the case, although reading assurances to that effect on this blog should be taken with a grain of salt. The Foundation has an open door for deserving projects which need a good legal umbrella and don&#8217;t want a lot of process or formality, and we&#8217;ve extended personal invitations to many non-Dojo-centric projects over the years to join  (including direct competitors).</p>
<p>For anyone still worried about the DWR/DF arrangement, working it backwards from both perspectives should yield some comfort. It does very little good for Dojo to be shoved down someone&#8217;s throat by the choice of some orthogonal tool in the same way that it would be tremendously foolhardy for the Foundation to lose its independence in any way. Neither would be very meritocratic and in particular the independence of the Foundation and its track record of providing a level playing field is most of what it has going for it. To that end, putting DWR at the Foundation and not under the <a href="http://getahead.org/">getahead legal entity</a> should help to make the distinction between commercial interest and community development even clearer than it previously was.</p>
<p>An umbrella organization to help support projects in meeting their goals is the under-appreciated bit of what separates successful stand-alone projects from projects which can&#8217;t escape the yolk of either a closed development process or a sponsoring company that just can&#8217;t let go of assumed control or brand affinity. Having your work backed by a legal entity is essential <a href="http://alex.dojotoolkit.org/?p=609">if you&#8217;re not going to pick a GPL-ish license</a>, but having that entity be a brand-neutral known quantity helps get projects adopted by organizations which have both lawyers and some experience with OSS. For component software like <a href="http://getahead.org/dwr">DWR</a>, <a href="http://cometd.com">Cometd</a>, and <a href="http://dojotoolkit.org">Dojo</a> that&#8217;s nearly all of the users which an OSS license alone won&#8217;t convince. The independent nature of the Foundation also isolates users from the employment decisions of key contributors. Through the Foundation, Dojo&#8217;s licensing has survived wholly in-tact through changes in employment status of nearly all of its <a href="http://www.ohloh.net/projects/3548/analyses/latest/contributors">most prolific contributors</a>.</p>
<p>Having &#8220;external&#8221; committers, a <a href="http://webkit.org/coding/commit-review-policy.html">reasonable process for minting new ones</a>, and a peaceful atmosphere where developers can build trust along with software isn&#8217;t rocket science but it does require some amount of prioritization of those concerns over personal and corporate directives. We&#8217;re not perfect at this at the Dojo Foundation, and we haven&#8217;t yet encountered the wrenching attempts at &#8220;brand drafting&#8221; which Apache deals with on a regular basis, but we&#8217;re committed to keeping the process as hands-off as we can and working to ensure that the umbrella doesn&#8217;t imply more than it really provides.</p>
<p>Our door is open. All that we require of new projects is that all committers on the project <a href="http://dojotoolkit.org/cla/">sign a CLA</a>, that the lineage of the code be &#8220;clean&#8221; (within reason), that the project community is relatively healthy, and that you can convince the existing committers <a href="http://dojotoolkit.org/pipermail/foundation/2007-December/thread.html">that yours is worthy of Foundation support</a>. It has always been the intent of the Foundation to host projects that have nothing to do whatsoever with Dojo and it&#8217;s my sincere hope that the DWR announcement drives this home, but we&#8217;re not going to leave it to chance. More on this in a forthcoming post.</p>
<p>Until then, my congrats again to Joe and the entire DWR community. Thanks for giving the Foundation the opportunity to make good on the trust you&#8217;ve invested in us.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2007/12/drw-joins-the-dojo-foundation-joe-walker-joins-sitepen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Licensing</title>
		<link>http://infrequently.org/2007/10/on-licensing/</link>
		<comments>http://infrequently.org/2007/10/on-licensing/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 07:42:30 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[Dojo Foundaton]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sitepen]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=609</guid>
		<description><![CDATA[So you&#8217;re starting an OSS web project. At some point in the evolution of your project from a couple of files on-disk to something you&#8217;re maintaining on google code or sourceforge, you&#8217;re going to be asked what the project is called and what the license is. I can&#8217;t help with naming, but on the licensing [...]]]></description>
				<content:encoded><![CDATA[<p>So you&#8217;re starting an OSS web project. At some point in the evolution of your project from a couple of files on-disk to something you&#8217;re maintaining on google code or sourceforge, you&#8217;re going to be asked what the project is called and what the license is. I can&#8217;t help with naming, but on the licensing bit there are some things you should know. Unless you&#8217;ve already spent a lot of time thinking about licensing, this can be daunting. How should you pick a license? Will it even matter which one you pick? Why not just pick GPLv3? And what about Open Source Foundations (Apache, Eclipse, Dojo, etc.)? And since this is such a quagmire, why can&#8217;t I just put it in the public domain?</p>
<p>Lets take a look at each of those in order.</p>
<p><span id="more-609"></span></p>
<p>First, the obligatory <a href="http://en.wikipedia.org/wiki/IANAL">IANAL</a> disclaimer. That I happen to deal with some of the licensing policy stuff for Dojo does not mean that you should trust your project&#8217;s licensing doctrine to my (mis)understanding of the law. At Dojo we do retain lawyers to help answer our questions and I strongly recommend you do the same. You might even be able to get some advice <a href="http://www.softwarefreedom.org/">that&#8217;s worth more than you pay for it</a>. Lastly, lots of other stuff is much more important that licensing in the future of your project. Getting these bits right won&#8217;t matter if your software sucks, so make sure that&#8217;s your first priority.</p>
<h4>How the heck should I pick a license?</h4>
<p>My personal take on this is that you should pick a license for your project based on your personal goals with regards to the software you&#8217;re giving away (or maybe not giving away). If your goal is to get your code into the most people&#8217;s hands with the least fuss, go BSD/MIT/Apache-ish. If you care about software freedom at the expense of potential users, or if you want to be able to sell your code later without real competition, go (L)GPL-ish. Those are gross oversimplifications of the choices involved, but as we&#8217;ll see they largely line up on-side because they imply that you sort of have an idea of who you want your users to be. Is your project a success if it is the basis for commercial products that you&#8217;re not involved in? Or do you personally want people to know that <em>you did that</em>? If Microsoft (or whoever you cast as &#8220;evil&#8221;) starts using your code, would you be upset or happy?</p>
<p>These decisions are inherently social. They lay the groundwork for how others perceive you, your code, and the people you may attract to your project. Much like a university degree, these perceptions may have <em>absolutely no basis in fact</em> other than that you did, indeed, pick a particular license. The things others assume about your project as a result are very likely to be wrong, but like a lot of statements of values, you should pick a license whose social contract implies something that you want your project to be when it grows up. By doing this you&#8217;re setting a flag which potential contributors to your project and consumers of your software will look to to get a feeling for &#8220;what is it?&#8221;.</p>
<p>At the Dojo Foundation, our licensing goals are explicitly tactical: adoption over control, 100% of the time. We&#8217;ve picked the <a href="http://svn.dojotoolkit.org/dojo/dojo/trunk/LICENSE">AFL and BSD licenses</a> because they are &#8220;friction free&#8221; in conjunction with the rigor of the Foundation (which I&#8217;ll get to). They set the flags for &#8220;commercially friendly&#8221;, &#8220;anyone can play&#8221;, and &#8220;politics unwelcome&#8221;. Are those things strictly true? Probably not. But they say a lot about the ideals we&#8217;d like Dojo Foundation projects to embody. Other organizations have very different sets of goals, and their licenses reflect that. The <a href="http://www.fsf.org/">FSF&#8217;s</a> licensing policies throw the flags of &#8220;your rights matter&#8221;, &#8220;politics acceptable&#8221;, and &#8220;commerce tolerated (on our terms)&#8221;. In the particulars of any individual project these sets of flags <em>may be indistinguishable from each other</em>, but how others perceive them has an impact upon who will show up to &#8220;play&#8221; at your project.</p>
<p>So what does all of that mean for how you should pick your license? It implies that you need to figure out why you&#8217;re giving your work away. Is it just a way to get adoption (BSD-ish) or is it The Right Thing To Do (GPL-ish)? Once you&#8217;ve figured that, the rest is just mechanics. There&#8217;s no wrong answer, but there are consequences for doing the mechanics wrong.</p>
<h4>So does it matter which one I pick?</h4>
<p>As you may have gathered from the preceding comments, it may matter which license you chose. Or not. Some very large organizations won&#8217;t touch code that is of (L)GPL origins if they can help it, but those same organizations will back hugely successful GPL projects when they&#8217;ve already won the market. Other organizations and individuals prefer (L)GPL-ish code.</p>
<p>Reasonable people apparently disagree on which style is right, so maybe we should rephrase the question a bit: &#8220;How can I ensure the success of my project through my licensing decision (insofar as it matters)?&#8221;</p>
<p>First, you&#8217;re going to need to consider the cultural impact of licensing. You&#8217;re more easily going to be able to contribute to a Debian-centric project if you use the GPL since that community &#8220;gets&#8221; and appreciates the freedoms embodied by that license. You&#8217;ll have a tough rode to hoe, though, if you want to then take that code to FreeBSD and expect it to be &#8220;blessed&#8221; without a license change. Ensuring that your code can be mixed with other code that you care about is often down to licensing, so look around and see what others are doing before you pick. If your boat can rise in their tide, it&#8217;s a good bet you&#8217;ll want to use their license too.</p>
<p>Secondly, consider commercial use. Big Open Source companies like IBM and Sun have a strong preference for clean BSD-ish code. It&#8217;s no wonder, then, that enterprise software vendors are beating down the doors of the Eclipse and Apache Foundations to get their projects accepted and released under those licenses. Doing so makes them both presumptive &#8220;winners&#8221; in those communities for their target feature sets, but it also signifies that the code is palatable for many of the largest corporate consumers.</p>
<p>Next, remember that your project isn&#8217;t just trying to court new users, it&#8217;s also trying (hopefully) to find new developers to pitch in and make it even more awesome. If you pick a license that people don&#8217;t know or aren&#8217;t familiar with, you raise the bar to acceptance in both groups. Going with a &#8220;well known&#8221; or &#8220;name brand&#8221; license can help steer your clear of those shoals, even if the license itself isn&#8217;t as strong or accurate as the one you&#8217;d prefer to use.</p>
<p>Lastly, remember that licensing may be a no-op. Even if you throw all the right flags with your licensing, your code may still suck or your UI may be totally unusable. See Debian vs. Ubuntu for a graphic demonstration of how energy spent on licensing may be utterly wasted. No matter how culturally deft and no matter how clean your code, if your app/toolkit sucks, you&#8217;re not likely to win.</p>
<h4>What do you mean by &#8220;clean&#8221;?</h4>
<p>Cleanliness usually boils down to &#8220;what are the odds that someone can sue me down the road for using this code?&#8221;. No one can know those odds up-front, and success (or distribution, if you define &#8220;success&#8221; differently) increases the likelihood of legal antics. You, the OSS project lead/maintainer may never be directly affected by these kinds of machinations, but your potential users think long and hard about them. Dojo is still a tiny fish in the Open Source pond and even I field questions from corporate legal counsels on a weekly basis. Each of those messages means someone is paying lawyerbucks to figure out if they feel comfortable using Dojo. That&#8217;s a lot of money. Clearly it&#8217;s got to be worth it to them to have peace of mind.</p>
<p>So how do we keep code &#8220;clean&#8221;? The short answer is &#8220;by knowing where it came from and having a license to back it up&#8221;.</p>
<p>If you pick a GPL-ish license, a lot of that solution is baked into the license itself. Since no one can create derived works that are under less permissible (or more permissible) terms, and since the GPL speaks to patent as well as copyright rights, code under these licenses usually only needs to have some sort of public lineage (anonymous access to project SVN will do) to allay fears of lawsuits coming out of the sky.</p>
<p>Assuming that you have the right to put that code under such a license in the first place, that is.</p>
<p>The biggest weakness not solved by any OSS license (yet) is that things which are assumed to be under a particular license may not be &#8220;cleanly&#8221; given. For instance, a well-intentioned employee at Big Co. Inc. decides in her spare time to get involved in Dojo. Now, generally, Big Co. has an employment agreement with some really nasty language about &#8220;intellectual property&#8221;, and the take-away is usually that no matter what our mythical employee thinks up while she works there, it belongs to the company. Usually these things are written in such a way as to ever cover what she does on her &#8220;own time&#8221;. </p>
<p>So what happens when our well-meaning (but not a lawyer) employee wants to start working on OSS in her spare time? If she donates code without first getting approval from the company, the odds are pretty high that the project will then be (potentially) screwed, no matter how &#8220;share alike&#8221; the license may be. This is a Bad Thing for the project. Most OSS projects guard against it by either asking very pointed questions of new contributors or by getting a legal contract in place from the contributor which makes them state in a legally binding way that they are actually giving a license to the code to some other entity (typically a Foundation) and that they have the right to do so. That last bit is important. By having folks attest to the fact that they either own or have the right to donate the code in question, the project has done its best to make sure that the right-to-donate hole is filled. It also prevents &#8220;malicious contributors&#8221; (think SCO) from claiming later that they didn&#8217;t actually mean to donate the rights and IP embodied in the code to users of your project.</p>
<p>These contributor contracts, or &#8220;<a href="http://dojotoolkit.org/cla">Contributor License Agreements</a>&#8221; have been made prevalent through the hard work of the Apache Foundation. Notably, though, they require a legal entity on the other end of the line to sign a contract with. Hrmmmm&#8230;.</p>
<h4>What about those Foundations?</h4>
<p>Foundations like Eclipse, Mozilla, Apache, and the FSF all provide legal resting places for rights embodied in code. By acting as umbrellas against personal liability amongst contributors and by providing a legal structure in which to execute license agreements and CLAs, Open Source Foundations are a handy (but time consuming) legal structure that successful projects have employed to help promote their adoption. Generally organized as non-profit corporations, Open Source Foundations are time-consuming to set up, but may be essential to ensuring the cleanliness of your project&#8217;s code, particularly if it&#8217;s under a BSD-ish license like Apache, Eclipse, or MIT.</p>
<p>So should you set up a Foundation for your new project?</p>
<p>Probably not. Setting up a Foundation is a PITA, and the odds are pretty high that you don&#8217;t want much out of the Foundation&#8230;at least not until the project is successful. Your best bet is to start your new project inside the umbrella of an existing Foundation. If that&#8217;s not possible, you might be able to re-purpose an existing CLA to be between contributors and yourself (personally) to ensure that you hold all the rights to all the code or simply not allow much in the way out outside contributions. I&#8217;ve used both strategies in the past with success.</p>
<p>Alternately, if you&#8217;re going to try to get your project accepted at an existing Foundation (recommended!) sometime in the future, you may just want to ask that all new contributors sign a CLA with <em>that foundation</em> before submitting code to your project. Until your project is accepted under that Foundatin&#8217;s legal umbrella, you&#8217;ll still be out on a limb, but at least you&#8217;ll have set the stage for success later and may unblock development in the short term. I don&#8217;t know the legal ramifications of this approach, and you might want to augment it with assignment of copyright to you personally as well. Regardless, getting your project out from under your own name (and therefore, personal liability) is a Good Thing (TM). Find a good home for your code ASAP, and if that means setting up a new Foundation, so be it. When you&#8217;re drowning in paperwork, though, remember that you were warned.</p>
<p>Shameless plug: the Dojo Foundation wants to help young projects avoid the licensing fate of many of the currently popular JavaScript toolkits which didn&#8217;t pay enough attention to licensing up-front. We&#8217;re easy to work with and provide just enough of an umbrella to help grow your community without suffocating a small project with process. If you&#8217;re starting a new OSS web project and need a good home for it, <a href="mailto:alex@dojotoolkit.org">send me mail</a>. The Dojo Foundation may not wind up being the right home for your code, but we&#8217;ll try to help however we can.</p>
<h4>Dual licensing: good or bad? And can I change the license later?</h4>
<p>Firstly, if you&#8217;ve already released some code and you&#8217;ve taken patches from someone from a mailing list (without a CLA), or if you&#8217;ve borrowed code from someplace and didn&#8217;t think too hard about it because it was &#8220;obvious&#8221; or &#8220;open source too&#8221;, you can stop reading here. Unless the patches are blindingly trivial (think less than 5 foreheadslappingly-obvious lines), your project is no longer &#8220;clean&#8221; and you&#8217;ve probably already shot any hope of being able to dual-license or re-license in the foot. Since the code that you&#8217;re integrating from other people starts <em>with their copyright</em>, you can&#8217;t just change the terms of their licensing decisions retroactively any more than they can say that your software is governed by the Windows EULA without your permission. If you haven&#8217;t taken patches or if you think you can easily track down your contributors and get them to sign CLAs, you&#8217;re in a very good place. Either way, now&#8217;s the time to figure our your strategy for accepting contributions. </p>
<p>The <a href="http://dojotoolkit.org/cla">CLA that Dojo requires</a> of all contributors provides the Foundation with a broad license to the rights over donated code. Original authors keep their original authority over their copyright and patent interests, but they also &#8220;cut us in&#8221; on the ground floor. The CLA gives the Foundation the ability to repurpose the donation as it needs to (under the oversight of the Foundation Board) by providing sub-licensable access to both copyright and patent for the code. Practically speaking, this type of arrangement allows an Open Source project to &#8220;dual license&#8221; without asking every contributor for permission all the time. In the case of the Dojo Foundation, we use that power to offer Foundation projects under BSD-ish licenses which promote adoption, and other licenses on a one-off basis where it will encourage adoption. We wouldn&#8217;t be able to put the Perl bits of Cometd under the Artistic <em>and</em> AFL licenses if the Foundation didn&#8217;t have a license to all the rights for that code.</p>
<p>At the Dojo Foundation, we use the rights which we&#8217;ve accumulated through CLAs to do what&#8217;s necessary to make Foundation projects successful. If that means that the dominant license in the Python community is the General Foo License, we&#8217;ll probably adopt it alongside the AFL for Python code we release to make sure it&#8217;s got the maximum chance for success in that community. That doesn&#8217;t mean that dual-licensing is always a good idea, though. It can create confusion with users, and many people associate &#8220;dual license&#8221; with something very different.</p>
<p>Other kinds of organizations do dual-licensing for different ends, but use much the same mechanism. By controlling all of the copyright and patent interests in a bit of code, many companies that provide their products under Open Source licenses can also turn around and charge users of that software money under a different license agreement. Projects like MySQL, QT, and EXT can&#8217;t accept &#8220;external&#8221; patches for the bits that they sell, and they manage that tension with their community in different ways. In the case of MySQL, you can <a href="https://shop.mysql.com/enterprise/">pay for</a> packaged, tested releases with support and extra features. This allows the community to develop the core as GPL&#8217;d software without needing a CLA for every little change. QT and EXT, on the other hand, have pursued strategies which put the entire project development process behind the &#8220;rights wall&#8221;. This means that they can offer the whole thing with particular guarantees to commercial users and even proscribe commercial use without purchase of a license. What affect this has on communities (often negative) and on the quality of the software itself (often positive) is a matter for a different article, but if you&#8217;re thinking about dual-licensing in order to start a business around your code, just know that you&#8217;ll need to decide early on to keep control or else you&#8217;ll be looking at the services/support/add-ons model for making money from the project.</p>
<p>As for changing the license on your project, note that you&#8217;re going to require all the rights to all the code in order to make a full license change. Think of it as adding a license (dual licensing) and dropping one. Your project will need to have accumulated CLAs or have a &#8220;rights wall&#8221; in order to pull it off. Alternately, you can ask everyone who ever contributed for permission. Oof.</p>
<h4>This is a pain. Can&#8217;t I just put it in the Public Domain?</h4>
<p>It&#8217;s unclear. At Dojo, we&#8217;d put all of our code into the public domain if we thought we reasonably could. We&#8217;ve even asked our laywer (at length) about this. Her reply has left us feeling squeemish enough about the legal underpinnings of the Public Domain to question whether or not we can actually use it. If you&#8217;re looking to get your new project adopted widely, I&#8217;d recommend against trying to go this route. Until the situation is much clearer, a liberal license like BSD, MIT, or Apache + a CLA system seems to be the best way to provide users with the broad rights the public domain would imply and also the assurance that they&#8217;re not going to get sued over it.</p>
<p>I know i&#8217;ve glossed over a lot of the pertinent legal issues in this post, but hopefully it&#8217;ll help new project leads help themselves before it&#8217;s too late. If I had to sum it all up to someone asking my advice, I&#8217;d just say &#8220;find a Foundation that will take your project when it&#8217;s still very small&#8221;. By the time your project is medium-sized, it&#8217;s probably too late and that&#8217;s the very time when setting the right flags may matter most. Setting them won&#8217;t guarantee your project success, but you&#8217;ll never get hit but the bus of destiny if you don&#8217;t stand in the middle of the road.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2007/10/on-licensing/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Sweet Gig</title>
		<link>http://infrequently.org/2007/08/sweet-gig/</link>
		<comments>http://infrequently.org/2007/08/sweet-gig/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 11:49:46 +0000</pubDate>
		<dc:creator>alex</dc:creator>
				<category><![CDATA[openweb]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sitepen]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://alex.dojotoolkit.org/?p=616</guid>
		<description><![CDATA[SitePen is hiring. To be honest, SitePen is usually hiring, so why the blog post? Because I&#8217;m hiring for a SitePen R&#38;D Associate. This isn&#8217;t your average programming job. Not only will all the work from this new position be released as Open Source software,it&#8217;s a self-directed research job. Combined with SitePen&#8217;s completely-virtual structure, you [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://sitepen.com">SitePen</a> is <a href="http://sitepen.com/jobs.php">hiring</a>.</p>
<p>To be honest, SitePen is <em>usually</em> hiring, so why the blog post? Because <em>I&#8217;m</em> hiring for a SitePen R&amp;D Associate. This isn&#8217;t your average programming job. Not only will all the work from this new position be released as Open Source software,it&#8217;s a self-directed research job. Combined with SitePen&#8217;s completely-virtual structure, you can work on what you feel is important and live wherever you want.</p>
<p>Read on for the full description:</p>
<p><span id="more-616"></span></p>
<blockquote>
<h3>Position</h3>
<p>R&amp;D Associate (title negotiable)</p>
<h3>Description</h3>
<p>
			SitePen is a fast-growing services company with deep roots in Open Source web software and an ongoing commitment to give back to the Open Web. The problems we solve for clients sit at the intersection of Computer Science and Interaction Design while cutting across a wide variety of problem domains. As an R&amp;D Associate at SitePen you&#8217;ll be responsible for investigating and developing solutions to the thorniest problems in real-world web application development and since everything you do will be Open Source, your impact will be both meaningful and lasting.
		</p>
<p>
			Some topics currently of interest to SitePen include:
		</p>
<ul>
<li>web framework scalability</li>
<li>parametric CSS</li>
<li>ES3/ES4 implementations across VMs</li>
<li>publish/subscribe messaging and scalability</li>
<li>web-based interaction design/analysis tools</li>
<li>Open Data portability and metadata normalization</li>
<li>browser-based data visualization</li>
</ul>
<p>
			But those are just the problems that keep us awake at night. What we&#8217;re <em>really</em> interested in is hearing about how you&#8217;d like to make a difference in the evolution of the web. At SitePen, you&#8217;ll have the freedom to pursue your interests and a mandate to work with broader communities to make your ideas reality.
		</p>
<h3>Required Qualifications</h3>
<ul>
<li>contributor to at least one Open Source project (active committers preferred)</li>
<li>fluent in one functional or scripting language (C experience a plus)</li>
<li>must be able to author technical papers</li>
<li>must be comfortable presenting and defending work to groups of various sizes</li>
<li>permanant legal right to work in the United States</li>
</ul>
<h3>How To Apply</h3>
<p>
			Send a plain-text email to &#8220;alex@sitepen.com&#8221; with the subject line &#8220;R&amp;D Associate Application&#8221;. In the body of the email, please explain why you think you&#8217;d be good for the job, what research interests you would like to pursue, and if you have one, a link to your website/blog. Please include links to your Open Source involvement and note major contributions (planning, design, features implemented, research contributed, UI/UX/IxD, etc.).  Also, either include a link to an online resume or attach one in plain-text or PDF format.
		</p>
<p>
			There is no deadline for application, but the earlier you apply the better your odds.
		</p>
<h3>Benefits</h3>
<ul>
<li>Senior Engineer grade pay</li>
<li>Comprehensive health insurance</li>
<li>All work product Open Source</li>
</ul>
<h3>Additional Information</h3>
<ul>
<li>
				<b>Location:</b> anywhere you damn well please. SitePen is an entirely virtual organization.
			</li>
<li>
				<b>Travel:</b>10-25% travel, depending on personal choices regarding conferences and symposiums. Presenting papers and speaking on your work is encouraged.
			</li>
<li>
				<b>Job Type:</b> Full Time
			</li>
<li>
				<b>Reports To:</b> Director of R&amp;D (Alex Russell)
			</li>
</ul>
</blockquote>
<p>Uniquely for an R&amp;D job, there are no minimum education requirements. We only care how effectively you can advance the state of the art on the Open Web. If that sounds like a calling you can get behind, I&#8217;d love to hear from you.</p>
]]></content:encoded>
			<wfw:commentRss>http://infrequently.org/2007/08/sweet-gig/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
