Mike Shaver asked me about Mozpad the other day, and a few hours later Brian King posed the same question on his blog. Clearly it’s high time to take a step back and evaluate where we are and where we’re going.
The short answer is that not much has happened on the Mozpad front recently. To some degree this is just a case of things taking time. There is definitely ongoing interest in a XULRunner IDE, and ActiveState has brought this a whole whack closer to reality with their Open Komodo initiative. But the initial excitement and momentum has largely dissipated.
I was musing months ago that the group lacked a clear raison d’être. The problem isn’t so much a dearth of things to do, but the commitment and time investment that would be necessary to do them right. This isn’t just a case of setting up some discussion forums for technical support (Mozilla already has them) or an IRC chat room (Mozilla has several) or a great, user-editable documentation site (cause, well, you get the point). Turning XULRunner into a real product with branding, packaging, development tools and marketing is perhaps too big a task for a volunteer organization without any full-time participants. Once folks realized how hard it was going to be to achieve anything substantive without jeopardizing their other projects (including the ones that pay the rent), their initial enthusiasm cooled. I can’t claim to be an exception in this regard.
There are other issues as well. First of all, where are all those XULRunner projects we’ve heard so much about? When we started Mozpad, I was expecting a lot of that XUL dark matter to come out of hiding and express interest in what we were up to. This simply didn’t happen. We got a lot of love from Mozilla die hards who find the idea of an open, multiplatform application development framework appealing, but virtually none from companies that are actually using the technology. It has to be said that Robert O’Callahan’s speculation about “hundreds or even thousands” of stealth XUL projects was based on rather scant evidence. Or perhaps the main interest is in developing intranet applications using a web server and XUL, rather than desktop apps on top of XULRunner. Or, equally plausibly, people are using XULRunner but weren’t aware of Mozpad or were waiting to see concrete results before making their interest known.
Moreover, I have to admit that I’ve cooled somewhat on the idea of XULRunner as a general purpose framework because I’m so excited about the potential of Prism. Since I believe rich web apps are the future, I’d rather spend whatever time I have for Mozilla platform work improving Prism rather than documenting XULRunner APIs and the like. And whereas Mozilla has stated unequivocally that a standalone XULRunner product is not a priority, Prism clearly is. I proposed Mozpad to a large degree because I felt that Mozilla had dropped the ball on the whole “future of apps” thing. Now I’ve got crow casserole heating in the oven as they pick up the ball and sprint for the goal line. (And with that let me pledge publicly: no more ball metaphors in 2007.)
(To be absolutely clear: none of this should be construed in any way as diminishing the heroic work that has been put into making XULRunner a viable platform and getting Firefox to run on top of libxul. Apart from anything else, Prism is a natural consequence of this extraordinary vision, which has been gestating for over three years.)
All this to say that a lot has changed since May, and I’m not sure that we need a Mozpad to further our goal of helping Mozilla to play a defining role in the future of applications. ActiveState has expressed interest in helping out with the development of a XULRunner IDE on top of Open Komodo. All the usual mechanisms are available for those who want to contribute ideas, bug reports and code to the Mozilla platform. Personally I’ve been spending a fair amount of time working on Prism. From my perspective, things are going great despite Mozpad’s lackluster second act.
So here’s a moderately funny story. By way of background, I discovered podcasts a few months ago and became an instant addict. With ever-expanding piles of BitTorrent, RSS and other web content competing with books, magazines, cinema, golf and even occasional socializing for my precious leisure time, any medium that turns those tedious hours in the car or gym into a high bandwidth information injection is most welcome. So I’m always on the lookout for good podcasts, and a friend of mine has been bugging me for ages to check out the Gillmor Gang, which apparently resurfaced recently after a long hiatus.
I finally got around to doing so three or four weeks ago. I was on my way out the door to meet some friends, and I’d listened to everything interesting in my podcast roll, so I threw on the Gang. I was quickly bemused, however, by the fact that the show appeared to be composed of uncomfortable mumbling interspersed with long periods of complete silence. This was pretty annoying since I just wanted to be entertained during my fifteen minute walk and tram ride, and after a couple of minutes I stopped and fast-forwarded about fifteen minutes. By then they were actually talking to each other and quickly established that Steve Gillmor, the host, had intentionally left the call before it even started in order to prove to the world how vital he is to its success. All of this had something to do with an incident involving Gang participant Jason Calacanis, who had revolted against what he perceived as the poor job Steve was doing packaging and promoting the podcast.
I listened to another interminable segment of Steve whining about how he was at a loss about what to do about this mutiny in the ranks, followed by some chit chat about politics. Not to put too fine a point on it, I wasn’t that impressed. Since that particular episode was obviously an exceptionally gruesome train wreck, however, I did listen to the next episode out of respect for my friend’s opinion, seeing as he is a long-term fan. And indeed, there are some very smart folks on the show, and certain parts of the discussion are undeniably thought-provoking. I found Mike Arrington’s participation, in particular, to be worthwhile. But the overriding attitude was very clearly “screw the listeners, if they don’t like it they can unsubscribe.” So I did.
The funny part starts a couple of days later when I was standing in the entrance of LeWeb 3 conference in Paris talking to a friend when Cedric walked by with Mr. Arrington himself. We chatted for a few minutes, and I mentioned to him that I knew he was coming because he’d said so in the portion of the previous Gillmor Gang that I had listened to. I then launched into an abbreviated but impassioned rant about how annoying it was. That put a bee in my bonnet, and when I got back home I wrote Mike a mail in essence urging him to ditch the Gang and start his own rival podcast. I honestly do believe that there is a gaping niche for a tight, professionally produced show with smart technical debate and commentary, and Mike would be the perfect guy to do it. He has the brand and the network, and even an occasional podcast (TalkCrunch) that could serve as the launching pad for something more ambitious (and potentially lucrative).
In part one of this series I lamented Microsoft’s unwillingness to conform to web standards and the stifling effect this has on web innovation. I suggested two possible solutions: a paradigm shift (such as a move towards Rich Internet Applications) that makes it easier to deploy alternate runtimes without having to convince the user to switch browsers, or the use of ActiveX to integrate new web standards into Internet Explorer in spite of Microsoft. Yesterday Opera announced that it was adopting a third approach: sue the bastards.
It’s hard not to feel sympathetic to Opera’s cause. IE boasts a considerable majority of web users not through intrinsic merit but as a direct result of Window’s dominance. Like any market leader, Microsoft has the most to lose from browser interoperability, so it’s dug in its heels and refused to support fully standards such as CSS, JavaScript 2 and HTML 5. The main losers are not just browser vendors like Opera and Mozilla but anyone who uses the web, since much-needed improvement in web application infrastructure is massively hampered when the space’s two ton gorilla (with around 80% market share) refuses to play along.
Nonetheless, Opera’s tactics are problematic. First of all, it’s hard to shake the feeling that the litigation is at least partially a ploy on Opera’s part to garner publicity for its browser. Their CTO, Håkon Wium Lie, categorically denies this, but phrases like the following are bound to raise suspicions:
Opera has long held the position of innovator in the Web browser market, having introduced and pioneered features like tabbed browsing, Speed Dial, integrated search bar, mouse gestures, Opera Link™ and many others.
I have the greatest respect for Opera’s engineering prowess, and Håkon is a brilliant and genuinely nice guy. (Not to mention that he sports a cool little circle over his first name. Where can I get me one of those?) But even if there was no malice intended, it might have been a good idea to tone down the chest-thumping a bit in order to avoid a potential backlash from mean-spirited cynics like yours truly.
More critically, Mary Jo Foley is absolutely correct in pointing out that we don’t want the European Commission deciding what’s a proper web standard and what isn’t. The main web standards consortium, the W3C, doesn’t make real standards at all because it has no official standing. Instead it issues “recommendations”. There is thus no objective basis for deciding which technologies a browser vendor is supposed to support. As frustrating as this can sometimes be, we have to let the market make this determination.
Perhaps Opera will win its case and Microsoft will be forced to offer an IE-free Windows. This wouldn’t bother me one whit. But even were this to come to pass, I’m not sure how much it would accomplish. Both Firefox and Opera are free and could easily be bundled by hardware OEMs today if they felt this would offer them a competitive advantage. In fact, I predicted this would happen back in January 2006, and I’ve been sorely disappointed (for reasons I don’t entirely grasp). Microsoft’s intransigence is undeniably a tough nut to crack, but I’m not sure that litigation is the answer.
The other day we released AllPeers v0.75, with a number of improvements that we hope you’ll enjoy. One of the most frequent complaints we’re heard about previous versions is that, if someone who has shared files with you goes offline, downloads don’t resume automatically when they return. This is now fixed. We’ve also completely redesigned the procedure for restoring your account if you change computers or need to get your AllPeers account back for any other reason. This has been another very common support issue in the past.
We’ve made a number of changes to the user interface that we hope will make it more attractive and usable. And finally we’ve spent a lot of time tuning performance to make the software faster and more responsive. We hope you’ll enjoy the new version and we look forward to your feedback.
Consumer Reports provides a fascinating counterexample to the conventional wisdom that people won’t pay for content on the web, as reported by CNet (in some sort of vague collaboration with the New York Times). The author goes to great lengths to enumerate the unique factors that are enabling them to succeed with this model while other high profile purveyors of online paid content like the New York Times, the Economist and the Wall Street Journal have either eliminated their paywalls or are considering doing so. And indeed, I wouldn’t expect this article to change most people’s minds about the viability of charging for content on the web because it’s so easy to paint Consumer Reports as the exception that confirms the rule rather than a harbinger of things to come.
Yet there are many reasons to doubt that all future media will be financed by advertising. I’ve touched on this topic many times, notably in a March 2005 post in which I cited the ease of blocking online ads, among other things, as something that might motivate publishers to fall back on the more transparent mechanism of direct payments. The factor that led Consumer Reports to take this route, namely independence from corporate interests, is another that we might hope would be taken to heart by more publications. I mentioned one more the other day: it’s unclear that there is enough ad money out there to finance the entirety of content production as it moves online.
In the aforementioned piece from March 2005 I cited the arrival of mobile reading devices as one of the main triggers that I expected to force a shift in business models from advertising to paid content. This is starting to come true, most prominently with the Amazon Kindle, which famously embraces this approach even for traditionally free content like blogs. I’m not sold on the idea of a dedicated reading device, but I’m undeniably reading less and less printed pages now that the iPhone provides me with a usable portable device for consuming content online.
The main reason why publications like the New York Times broke down their paywall is that there is too much free content for readers to turn to rather than reaching for their wallets. The problem certainly isn’t that people are unwilling to pay for content: Consumer Reports proves that, as does the paradoxical success of the ring tone market, which has flourished in the absence of a free alternative. That’s why I hypothesized a tipping point in my musings on this topic two and a half years ago.
Here’s how this might pan out. More and more people will start to wonder, like me, why they pay to subscribe to the Economist when they can read the whole current issue online on their iPhone or other mobile reading device. As a result, publishers will see their overall revenues start to fall and will react by raising their advertising fees. Advertisers will take the hit for a while, but eventually they’ll start to fall back on other marketing techniques and use the savings to lower prices. Big web successes like Amazon, Google and Facebook don’t advertise, after all. Every newpaper and magazine out there will then find itself in the same position as Consumer Reports today, with no choice but to find a way to make paid content work. And the more publications that jump on this bandwagon, the less reason there will be for others to hold back.
Mark Zuckerberg’s mea culpa yesterday triggered a veritable tsunami of commentary on Facebook’s decision to atone for its sins by making its new Beacon advertising system less intrusive. The apology came too late to avert a medium-sized PR disaster, though I dare say there’s still plenty of life in them yet. And since the mere fact of piggybacking on a titular snowclone employed by the likes of Jobs and Zuckerberg makes me feel a teeny bit more important, I’ll chime in with a couple of thoughts of my own.
Now everyone knows that Facebook wants to be Google. Heck, everyone wants to be Google, but they’re the most plausible (or least implausible) contender right now. And that implies not just a great website and a lot of users but also an innovative, lucrative and scalable source of revenues. I can almost see their management team sitting down and brainstorming about the goose that would quack and waddle them forward in their quest for inevitable world domination amidst a pounding hailstorm of golden eggs. And what did they come up with? Advertising. Now where have I heard that before?
There are more than a few problems with this beyond the ham-handed way they handled Beacon’s rollout. As Tim O’Reilly points out, there isn’t enough ad money out there to finance the wholesale shift of media online. Facebook doesn’t share anything obvious with eBooks beyond the last five letters of its name, but I think the basic principle stills stands. Google has managed to go on minting ever greater sums to a large degree because its search engine drives such tremendous volumes of traffic. And that traffic is by nature intentional, as Alex Iskold rightly notes. I click on their ads because they might help me find that specific something I’m looking for.
Alex might be a bit harsh in condemning the whole notion of contextual advertising based on a flawed but ambitious product that is still only a few days old. But at the end of the day the whole idea that Facebook will justify its vaunted $15 billion valuation by pioneering the new new thing in targeted ads strikes me as unrealistic and facile. If I were them I would instead extend their application platform (which is truly innovative) to support paid services, taking a cut of partners’ revenues. I’m sure there are plenty of web developers out there who would love to take on eBay, Monster, iTunes and Match.com by leveraging Facebook’s gold mine of social features. Many would fail, of course, but who cares when the mother ship would book a percentage of whatever winning ideas an infinite number of monkeys scrappy startups can come up with?
On another note, did anyone else notice that Zuckerberg’s epistle of self-flagellation doesn’t mention the word advertising even once? Perhaps this is just another example of corporate spinmeistering at work, but I think there’s more to it than that. Ever since Jason Kottke’s seminal piece comparing Facebook to 1990’s AOL, freedom-loving folks (you know, the kind who wear sandals to business meetings and think they can hear the difference between FLAC and MP3) have lamented the rise of another online walled garden. How better for Facebook to counter this than to find a way to integrate their core functionality into the fabric of the web? The clever way that Beacon lurks in the background as you surf on other sites is an intriguing suggestion of the course they might take to make this happen.
UPDATE: Based on some discussion on IRC I probably should have given some more background to this post. In a nutshell, we are a Firefox extension and we store data in SQLite. For our extension’s user interface we want to generate markup (specifically HTML) from this data using templates that describe the page to generated, with placeholders for dynamic data. Something very similar to PHP, JSP, ASP, etc. in other words, but running on the client inside the Firefox process.
I’ve felt for some time that we need to change the way that AllPeers generates its user interface. For the most part, this is currently accomplished using a rather byzantine JavaScript-based framework loosely inspired by Eclipse. Experience has shown that this framework is a) rather slow, b) difficult for people to learn and understand and c) completely non-standard. At the same time, it’s proven challenging to find a viable alternative that meets all our requirements:
- Minimal code footprint
- Fast
- Support for recursivity (iterating hierarchical structures)
- Support for polymorphism (different template fragments for different types of data when iterating over a set)
- Support for streaming generated markup
- Execution possible in a background thread
-
- Simple syntax conducive for working with graphic designers
The last point rules out XSLT, in my mind, since it’s too difficult to work effectively with a graphic designer who creates static HTML pages. How are such pages to be maintained once they have been broken up into lots of little template rules? So we took a close look at the various open source templating engines out there. There are some appealing options based on Python, but we decided that shipping the Python runtime with AllPeers is not realistic, which narrowed the choice down to two C++-based solutions: CTemplate and Clearsilver.
Then I read a recent blog post by Mark Finkle, prompting me to look again at an option that’s been kicking around in my head for ages: using XUL Templates. When I first investigated this a couple of years ago, they didn’t appear up to the task, but substantial improvements have been made since then. The ability to graft straight onto a SQLite database, in particular, is of great interest to us.
The main issue I see with XUL Templates is that we may want at some point to move AllPeers to its own process, leaving only a thin UI layer in Firefox. This implies that our future template engine will have to generate markup to a stream rather than manipulating a DOM directly. In addition, we may want to do this in two phases, initially running the generator in a protocol handler inside the Firefox process. So it has to work on a background thread. To my knowledge, XUL Templates currently can’t do either.
Do we go ahead and adapt an outside framework like Clearsilver for our purposes? Or do we try to soup up XUL Templates to meet our additional requirements. I’d love to opt for the latter since I think these improvements might be of value to the Mozilla community at large. But it’s a tough call without knowing the answers to the following questions:
- Is anyone else out there interested in using XUL Templates to stream markup, run on a background thread, etc.?
- How much work would it be to adapt the XUL Template engine to our requirements?
- Is there a “third way” that I am missing?
Any input on either of these points would be greatly appreciated.