I'm not sure how I missed it for so long, but I'm now reading every word of the Linux Hater's Blog. It's beautiful catharsis, and I say that as someone who used to serve as President of a university LUG and who writes open source software for a living.
Like the author of LHB, I've written my share of low-level Linux stuff and shudder in horror and how backward the linux desktop still is. X11 is an abomination and configuring sound or wifi or some new-ish device...well, I still have those scars. It wasn't that long ago that I was hacking together bits of kernel patches to get an early firewire iPod (a gift from Jennifer) working on my SuSE desktop. And I was using SuSE because it usually required the least futzing of the then-available distros. Even when Linux was my desktop OS of choice – I had since climbed down from my brief flirtation with OpenBSD – it was blindingly clear to me that building my own packages was a fool's game. My time is simply worth more than that. Perhaps the most cogent point I took away from reading the LHB archives is that building professional code for the "Linux Platform" is nearly impossible, not because it can't be done, but because it costs too damned much to justify the costs. The Linux crowd seems to mis-value the immediate vs. long term costs of choice. By failing to provide a binary-friendly environment, the Linux world creates conditions only friendly to Open Source software, crippling their platform and robbing it of the capital investment that would allow it to truly compete. Many people who suffer through some Linux distro as their desktop environment no doubt see this as a good thing. I, however, need to get some work done. The LHB cogently lays out why everyone else on the planet whose time is worth more than what Amazon charges for a CPU-hour on EC2 similarly dismisses Linux for anything but servers.
The almost religious belief that choice is good ignores the inability of most people (myself included) to fully judge the long-run costs of any given technology decision. Oddly, the web browser world seems stuck in a similar position. Choice in browsers is promoted like some sort of panacea, when in fact our big problem isn't choice, it's that browsers simply can't natively attempt the feats we need them to accomplish. Smart people don't replace their browsers, they use what works until it doesn't any more. No wonder it's taken Firefox so long to gain market share. Like linux distros, browsers evolve in hodge-podge was, never quite tracing a straight line toward real progress. The refrain of "standards will save us" seems to ignore the reality that, like the LSB, the existing W3C standards are absolutely insufficient to address the problems at-hand. Both CSS3 and HTML5 are nice first-stabs, but they don't get us "there". For Linux, the LHB points out that there's zero reason to not ship "the same bits", and for the web, the issue is that content can't tell the browser "no, really, use that renderer". Interestingly, Microsoft tried to convince the world that we should version our content and the standards zealots just shot them down without really considering the consequences. Instead of making the world safe for a better web, the HTML standards geeks instead did the most powerful thing they could do to prevent it from materializing. In essence, they preserved "choice" at the expense of utility. What a waste. Seriously, if these are the deep thinkers on "our team", why not go just use Flash to build everything?
Many people have gotten worked up about Microsoft's role in killing Netscape (although they tend to minimize Netscape's role in its own demise), but ISTM that the real long-term harm done here has been to remove the renderer as a profit center. Once Microsoft set the price of the browser at "free" they effectively killed browser evolution as part of anything but an OS-based platform play (in part, to preserve their existing OS-based platform play). Interestingly, then, web-based services have routed around the difficulties of the platform to date to deliver apps that seemed well out of reach of HTML 4.01 as implemented by IE 6, but well, we're a plucky lot, aren't we? The most progress being made right now seems to be coming from a large software vendor in Cupertino with an OS-based platform play that absolutely needs the web to sparkle in order to drive adoption of their OS and hardware.
Like Linux, the web will probably lurch forward this way for the forseeable future. The standards zealots smacked down the IE team so hard on content versioning that I don't think anyone else will have the testicular fortitude to try again for a good while. It's down to the whole "vision thing", and the web standards crowd doesn't seem to have any. It's about time someone took the punch bowl away from them once and for all. The open web needs real progress too badly to stall any longer.
Now, right this very minute, you can learn pretty much everything there is to know about Dojo thanks to 3 newly published books. Writing a book on Dojo is hard in the way the writing a book on Python is hard: there's so much to talk about, where do you start? When you could teach anyone anything, what do you focus on? Thankfully each of the books takes a different tack, talks to a different audience, and as a result I think the entire spectrum of web developers is pretty well served. Having reviewed 2 of the 3 books before they went to press (Dylan and Pete reviewed the other one), I've been amazed both by the depth of the books and by how different they are.
The Pragmatic book isn't shipping from Amazon yet (unlike the O'Reilly and Addison-Wesley books), but if you buy it from the Pragmatic Programmers directly, you can get a PDF of the book immediately while the dead-tree copy wends its way through the end of the supply chain.
Update: Andy Hunt emailed me to let me know that the Pragmatic book is indeed shipping, and last night, upon arriving home from a business trip, I found my copies of the book waiting. Andy informs me that Amazon is also shipping them, so if you prefer the "one click" experience, you can order there as well.
"Dojo: The Definitive Guide" really is. As a reference, you can't beat Matthew Russell's tome. Where "Mastering Dojo" teaches you the how's and the why's, "Dojo: The Definitive Guide" is the book you'll keep on your desk and reach back to when you're not entirely certain what the inheritance tree of the Dijit form widgets is (and therefore, which you need to subclass or mix in). "Dojo: TDG" is chock full of insightful commentary and explanatory diagrams, and where the Pragmatic book helps you learn the pieces and pull them together intelligently, TDG gives you more of the pieces and helps you really get a handle on the vast functionality available in many of the nooks and crannies of Dojo. Don't develop serious apps without them both.
There's probably still room in the market for 2 more books: one on using just
dojo.behavior for progressive enhancement, and one on advanced
dojo.data (there are a pleathora of stores and use-cases there) and visualizations like the Grid, Charting, and
dojox.gfx. I know that there are even more books in the works of, for, and by the Dojo community, and if the quality of those that come after is anything like these 3, it'll be just more proof that when the Dojo community does something, we do it right.
My personal congrats and thanks to all the authors who poured their lives into these books for months on end. The results are nothing short of spectacular.
There has been much discussion in the various Dojo fora of late regarding the need (and hassle) of requiring that all contributors send in signed Contributor License Agreements. These agreements state that:
- Those contributing to Dojo Foundation projects actually own what they contribute and therefore have the right to license it to someone else
- All of the rights needed to preserve the freedom of the code over the long haul have been contributed
Aside from some legal jargon, that's all that's in the agreement. So why have it? Why create the barrier to entry for newcomers who just want to pitch in? I have great sympathy for the impatient potential contributor huffing "why do I need to sign this, anyway?", so this blog post is an effort to boil it down. The reasons start with meritocracy.
Open Source projects often pride themselves on creating a more level playing field; when it works right those whose contributions are good are recognized while those whose contributions are bad are left with bit-rotting patches and hopefully some friendly direction on how to improve. In this way, it's the essential function of OSS projects to separate good contributions from bad. Oddly, the CLA process is a simple quality filtering function for weeding out the unserious, or simply another way to weed out potentially good contributions from bad.
CLAs are an annoyance to be sure, but consider what they attest to. I've heard the argument from time to time that "CLA's violate the spirit of Open Source" by limiting who can contribute, but that is indeed the point! Mature projects like Dojo don't accept patches without documentation, unit tests, and good code style...why should clean IP be any different? Indeed, CLAs allow us to be open yet rigorous at the same time. The CLAs process stands in stark contrast to many "open source"-in-name-only products which are produced by single companies or individuals but which don't provide any way to materially contribute back or become part of the project directly. The CLA process is both a sign that the project is open enough to allow you to "get your itches scratched" if you really want to contribute but also mature enough to manage the risks that come along with allowing everyone to potentially participate.
More to the point, do you really want to be taking code from a group of people who won't put in writing what everyone assumes about their contributions? And how seriously should you take an organization that hasn't thought hard enough about their own product to ensure that they actually have all the rights to the work they distribute? Remember, there's no requirement that anything be Open Source or that OSS products be developed as open projects, but the CLA process is in many ways a seal of quality: projects which require it are built to last (at least on an IP basis) and are also open enough to ensure that their community can grow.
One of the best aspects of the CLA process is that it gets people who are contributing to think about what it means to contribute. The CLA process means that they've printed out, signed, and hopefully read and understood that they are doing something serious and that they are joining a community of people who likewise take their work seriously. I really only want to work with people who are committed enough to making Dojo better that they'll take the time to think about how their work is licensed. Far from being just a task you need to do before you can contribute, the CLA process ensures that the people building Dojo are intellectually tall enough to ride.
Tall enough? Join us!
There are a lot of things about Open Source that are easy to get wrong, either intentionally or by accident. Given the number of folks who get it wrong, it's pretty clear that it takes real leadership for a project that's funded largely by a single company to commit to having external committers, manage IP rights in a responsible way, and really work to engage with a community outside of the folks who show up in the office every day. Speaking from experience, I can tell you that it takes real work to ensure that your project isn't just a code dump or even a read-only subversion repository that just happens to be released under an open license. Real, credible, honest-to-goodness, 100 point open source requires a effortful selflessness that rarely comes naturally to individuals and even less often to companies. I'm blessed to work for just such a company, but the web development landscape is littered with badge-ware, source-available-but-not-open projects, and other abuses of the spirit of the Open Source development model.
It's no small relief, then, to hear that Google is doing something incredibly mature: they're taking their name off of Gears. This comes in addition to their previous commitments to keep development truly open and to collaborate with anyone who will help them. From a purely corporate stand-point, it's the kind of move that takes cojones.
Google's de-branding of Gears stands in sharp contrast to Yahoo's half-assed Browser Plus effort which not only isn't Open Source, you can't even use it from non-Yahoo domains yet. It's impressive work technically, and Gears could learn some things from YBP's plugin architecture, but it's entirely unclear how such a closed product will help address the fundamental risk facing the web today: we need a trustable, open way to rev the web faster. One that can't be stopped in its tracks when a Microsoft or Netscape lose the interest or ability to push the web further on their own.
With Google's move, they're saying more clearly than ever to the Yahoo's of the world: "dude, seriously, put down the proprietary and help us make the web better". It's my sincerest hope that the Yahoo's, Ebay's and Amazon's, and IBM's of the world will all heed the call and work with Google to push a truly open Gears further, faster. The web needs the open process, mature leadership, and important feature set that Gears is delivering. No less.