» tagged pages
» logout

sorted by: recent | see : popular
Content Tagged with AllPeers + Software

Prism, AIR and TechCrunch Groupies

TechCrunch is running a guest post of mine about the exciting new field of site-specific browsers. Needless to say, it’s a honor to be on TechCrunch, and I hope my article will help to increase awareness of what SSBs are and why they’re important. Personally I’m convinced that they represent the future of web apps.

I haven’t seen any sign yet of the “gaggles of groupies” that Mike promises in the post’s comments, but I’m sneaking out the back door to pick up a sombrero and some wraparound sunglasses, just in case.

AllPeers: Blog

Can Your Trust Your Software?

I’ve just come across this horror story about G-Archiver, a windows shareware which backs up your gmail account to your local hard drive but also emails your username and password to the creator!

When we initially launched AllPeers, the client was not open-source but we always said our goal was to do it. At the time, the source code was not clean enough to open but we knew this was the only way for us to prove we were genuine and not planning on spying on our users.

When we finally opened the code, some people saw it as a desperate move on our part. It was not. It was a way for us to be transparent and to say “if you don’t trust us, just look at our code”.

There are a lot of advantages about developing open-source software but trust and security are certainly high on the list.

Now forget about open-source software and think about all these websites who ask you for your login credentials in order to “import your contacts”. Can you really trust them and if so how? How paranoiac are you about this? I usually tend to trust the sites but is a nice design and a groovy name enough to earn my trust when it comes to my email credentials?

AllPeers: Blog

Are Europeans Too Lazy to be Software Entrepreneurs?

Mahalo founder Jason Calacanis caused a blogostorm with his candid treatise on making every startup dollar count. The controversy is not especially surprising when his list of tips for thrifty includes such items as “fire people who are not workaholics” (which provoked so much ire that he felt compelled to change it to “fire people who don’t love their work”). Some went as far as to label Calacanis a “prick“, with the obligatory observation that they’ve never heard or his company, but love to death the products of cooler companies who pay for their employees to go backpacking.

I’ve seen both approaches in action in my day. More than one startup founder has told me that they keep the hours reasonable because they “don’t want to burn out their staff.” Sorry, but what I heard was “I’m too lazy to work long hours so I can’t expect my staff to.” Of course, it depends to some degree on your ambitions. If your goal is to earn a good living with a bunch of smart, like-minded folks tackling some not-too-intractable problem, with plenty of free time to bungee jump from helicopters or make erotic origami, that is doable. But if you want to create a world-beating company, Mike Arrington has it nailed: your odds of succeeding are long enough without four-day weeks and ambling trips to the local juice bar five times a day.

Besides which, software geeks don’t have the same view of life/work balance as most people. In their response to Jason’s post, 37signals explain that:

Working with interesting people is more interesting than just working. If all you got going for your life is work, work, work, the good team-gelling lunches are going to be some pretty boring straight shop talk. Yawn. I’d much rather hear more about your whittling project, your last trek, how your garden is doing, or when you’ll get your flight certificate.

Probably the guy who wrote this is a graphic designer or something, since for all the real programmers I know, the most interesting subject imaginable is the software project they are currently working on. That’s why our social skills suck so bad. When we run into someone who isn’t a geek, we have no idea what to talk about. Naturally this gets old eventually, and even the pocket protector set ends up settling down, getting a dog and starting a family. Ever wonder why most startups are populated mainly with 20-somethings?

Which brings me to my real point: in light of this state of affairs, does Europe have a chance in the software biz? I’ve been working in European software startups for 15 years (and running them for 10). Having grown up in America, I’ve always been frustrated by the lack of obsessiveness when it comes to driving the company’s success. Programmers on this side of the pond work a lot harder than, say, post office clerks, but traditionally it’s still been a far cry from the mattress-under-your-desk workathon of the American startup nerd. When Arrington mocked the idea of “three weeks vacation” I had to smile. Over here, the big question is whether we can beat our staff down from five to only four weeks.

The good news is that the situation is changing. I’m seeing more and more startups built up around the American model. Globalization, more awareness of “cool” company cultures like Google’s and a few European home runs (such as Skype) are helping to reshape attitudes on this side of the pond. Lack of precedents for success, paucity of venture capital, stifling regulation and excessive risk aversion have conspired with our generally sedate work habits to lock Europeans into second-class citizen status in the software world. As we overcome these obstacles, I expect we’ll mount a much more credible challenge to America’s technological dominance.

AllPeers: Blog

Extending Firebug

Honza Odvárko, our user interface developer extraordinaire, has been doing some work on the excellent Firebug extension. He’s published the first two parts of a tutorial on extending Firebug on his new blog: Software is Hard (part one and part two). Anyone interested in developing and debugging web applications should check it out.

AllPeers: Blog

Add Blame Links to MXR

You think you’ve put it all behind you, but one tiny script and you tumble off the wagon. Such is the fate of the Greasemonkey addict. Someone mentioned yesterday that MXR search results should include a link to CVS Blame. (Regular readers of this blog are used to ignoring me when they don’t know what I’m talking about, right?) Rumor has it that real support for this is in the works, but I went ahead and wrote a script, just because I could. After all, the hallmarks of a good Greasemonkey script are quick-and-dirty hacks and planned obsolescence, and this one emphatically has both:

// ==UserScript==
// @name           Add MXR blame links
// @namespace      http://justdiscourse.com
// @description    Add links to CVS Blame to MXR search results
// @include        http://mxr.mozilla.org/*search?string*
// ==/UserScript==

var results = document.getElementsByTagName("ul");
for (var i = 0; i 

Click here to install (Greasemonkey required).

It’s incredibly empowering to have this kind of client-side control over your browsing experience. One of these days someone is going to do this right and it’ll take over the world.

AllPeers: Blog

Fixing Bugzilla Platform Defaults

It’s a minor thing, to be sure, but it’s always irked me that Bugzilla defaults the platform and OS for a new bug to those of the reporter. This makes sense for bugs from “normal users” since it’s important to know where the bug occurred, but for the most part I file generic bugs or enhancements requests. So the first thing I have to do every time I file a new bug is to set those two fields manually to “All”. This takes me about five seconds, so if I file a bug a day (on average) that could be as many as 25 minutes a year. Twenty-five minutes that I could have spent taking movie quizzes on Facebook! This is unacceptable.

I asked around, and apparently fixing the problem is hard for some reason. Just now it dawned on me that I could take matters into my own hands. I used to be a Greasemonkey maniac, and I wrote a few pretty complex scripts back in the day. (None of these work anymore, I’m sure, due to changes in the associated websites, Firefox and Greasemonkey itself, but perusing the source code will bring you hours of enjoyment.) Wikiproxy and Bloglines Sidebar Squeezer even made it into Mark Pilgrim’s Greasemonkey Hacks.

Anyway, here’s the script I wrote to fix the Bugzilla nit:

// ==UserScript==
// @name           Bugzilla Platform Defaults
// @namespace      http://justdiscourse.com
// @description    Changes the default platform and OS to ALL
//                 when filing a new bug
// @include        https://bugzilla.mozilla.org/enter_bug.cgi*
// ==/UserScript==

resetDropDownList("//select[@name='rep_platform']");
resetDropDownList("//select[@name='op_sys']");

function resetDropDownList(xpath) {
  var dropdown = document.evaluate(xpath, document, null, 9, null).
    singleNodeValue;
  dropdown.selectedIndex = 0;
}

Click here to give it a spin. (You must have Greasemonkey installed.)

AllPeers: Blog

The Rise and Fall of the Tech Blogosphere

The inimitable Robert X. Cringely, who writes a much-read weekly tech column for PBS, brings new insights to the white-hot Microsoft/Yahoo merger story in this week’s piece. Cringely may or may not be talking out of his hindquarters with his speculation that Microsoft’s main motivation for the takeover attempt is to achieve a culture shift inside the company, but at least he brings something new to the party. Indeed, the most interesting part of the article is arguably the first paragraph:

It’s a challenge for a journalist coming late to a story like Microsoft’s proposed acquisition of Yahoo. I had literally just pressed the SEND key on last week’s column when news hit the wire. What to do? The way things are structured at PBS I couldn’t just pump out another column (that structure may be changing by the way), so the big question was whether the passage of seven days would make pointless anything I would have to say. So I waited and waited, and it is a testament to the shallowness and endless repetition of both the tech and business media that there is still plenty to say about the deal, the true nature of which few people yet understand.

Quite. I’m not entirely sure whether I’ve simply become bored with the self-referential ranting of the tech blogosphere or whether it has actually become boring. I still read Techmeme every day, but I’m increasingly drawn to a select group of publishers: mainstream publications (New York Times, Wall Street Journal, Business Week, etc.), a small handful of professional-quality tech news/analysis blogs (Ars Technica, Read/Write Web, sometimes TechCrunch), individuals with real credentials (Nick Carr, John Battelle, etc.), speciality blogs (The Unofficial Apple Weblog, TorrentFreak, etc.), company blogs and the occasional random article that catches my eye.

Granted, this is still a pretty broad group, but I don’t read all of them all the time. I try to get news about a given story from the best, most authoritative sources. For example, for analysis of the Microhoo sturm und drang, I read articles in the NYT and WSJ and the announcement on Microsoft’s web site. Why would I spend the time reading six or seven rehashings on all the “A list” tech news blogs out there? What purpose do these me-too pieces actually serve?

I predict a slow decline in the number of such blogs. It’s kind of harsh to put it this bluntly, but if you don’t do any real reporting, don’t write exceptionally well and stir up interest mainly through wild speculation, your long-term prospects probably aren’t great. Instead, the mainstream news outlets (and their blogging arms, like Bits and AllThingsD) will win the battle for general tech news and analysis. They’ll buy the best blogging networks, so TechCrunch and Read/Write Web are heading for a big payday. The other A listers will fade into oblivion as tech news junkies like me realize that they have better ways to spend their time.

The other area that has a bright future is specialty blogging. Rather than reading what some dude who has built up a big audience by blogging something generic about absolutely every story that crosses the wires has to say about the ruckus du jour, folks will seek enlightenment from the blog best placed to have inside information or true insights. Incidentally, that’s one of the main reasons I decided to set up my own specialty blog, Just Browsing, rather than continue to pen my own uninformed opinion pieces on random topics here on Peer Pressure. Yes, like this one.

AllPeers: Blog

Just Browsing: Uberpulse’s Interview with Opera Developer


Uberpulse has posted a interview at CES with David Rosen, a developer at Opera Software. The interview is entitled “Opera Browser Coming To The iPhone”, but the first 99% of the video have nothing to do with the iPhone, proving yet again that like sex, the iPhone sells. David isn’t able to demo the Opera for Devices because of the lack of wifi (when will conferences finally get a grip on this?), but he gives a good overview of the new product’s features.

Read the rest…

AllPeers: Blog

Should We Listen to a Guy Who’s Only Famous for Being Dead Wrong?

I can’t resist this one. I was already shaking my head in disbelief when prominent Wall Street idiot Henry Blodget pipped the blogging world at the post by publishing what is doubtless the worst idea of 2007 on December 29th. Does anyone still believe the laughable notion that a failed, tired brand has some great intrinsic value? If so, perhaps they should consider for a moment the purchase of the Napster brand by Roxio in 2002 for $5 million. Brands have momentum, and if someone had snapped up the Napster name in its heyday to launch a legal music service, it would doubtless have been worth much, much more. As it transpires, Napster was dead and gone in letter and spirit by the time Roxio bought it, and as of May 2006 the service had lost them a further $175 million. But hey, the Netscape brand has done so much for AOL, right? It takes some serious balls to make this proposal in the face of (nay, as a consequence of) direct proof that it has already resulted in one dismal failure.

His previous bout of Mozilla blathering having presumably resulted in a satisfying bump in traffic, Blodget is back with an even stupider idea: a Mozilla IPO. My issue with the post isn’t that an IPO would be counter to the open source ethos or that it would alienate the all-important Firefox community, although there are strong cases to be made for both of these. I’ve argued in the past that Mozilla would benefit from stronger capitalist motivations. Nor do I dispute his assessment of Mozilla’s value. If anything, $4 billion seems conservative for a company with its assets.

No, the real issue is his total lack of understanding of the Mozilla community ethos. Again, this mind set often frustrates me, but the reality is that Mozilla management would never, ever contemplate an IPO, anymore than they would plaster ads on the Firefox start page to generate more revenue (another of Blodget’s priceless suggestions). It’s more than a bit like suggesting that the Dalai Lama could make a mint by setting up an international “Dalai’s Lama Hut” franchise chain (”buy two tender Bodhisattva Burgers and get a Spiritual Strawberry Shake absolutely free of charge!”). Ain’t gonna happen. Sorry.

Even more to the point: isn’t this totally, utterly illegal? Can a non-profit launch a multibillion dollar IPO? Wouldn’t that amount to tax evasion on a stupendously massive scale? Maybe I’m wrong, but I would have thought that Blodget, supposedly a financial expert, would have at least addressed this.

But then let’s remember why he’s famous in the first place: for jumping on the dot.com hype bandwagon in front of the curve and looking like a genius for a total of, what, two odd years, until it all crashed back to earth around him? Why should we care that he turned out to be completely off target, or that he was then booted off Wall Street for securities-related improprieties? I guess it’s oddly appropriate that in the modern media environment, you can become famous and influential simply for being wrong on a sufficiently heroic scale.

AllPeers: Blog

How to Save the Web, Part Three: Opera’s Litigation

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.

AllPeers: Blog

Help Us Choose a Mozilla Markup Generation Solution

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.

AllPeers: Blog

How to Save the Web, Part Two

I’ve had some time to reflect on my recent musings about how to push forward innovation on the web without ceding dominance to closed, proprietary technologies. Several people pointed out that I was embarrassingly uninformed with regard to ECMAScript 4 support in Internet Explorer. The ScreamingMonkey project has been around for a while with the aim of achieving exactly that. And I’m so open-minded that I still think this is a fantastic idea, even though it apparently isn’t mine.

I read more closely what the Microsoft people have to say about the situation, and I’m actually finding myself sympathetic to both sides of the argument. Microsoft’s line is that a substantially revised JavaScript language doesn’t make much sense since there are already mature languages like Python and Ruby that could serve our second-generation web scripting needs. Backwards compatibility is all well and good, but people are still going to be reluctant to use new language features if they aren’t widely supported by browser vendors. I’m not a language designer so I can’t speak definitively about the challenges of supporting both ES3 and ES4 syntaxes, but this is bound to introduce a fair amount of complexity and redundancy into the scripting engine implementation. Simply adding Python support might be a more sensible path.

On the other hand, JavaScript has amazing mindshare on the web, and from a pure marketing standpoint it may be easier to achieve widespread usage of modern scripting constructs if they are promoted under the JavaScript brand. Moreover, Brendan has undoubtedly forgotten more about language design than I’ll ever know, and he is obviously convinced that ES4 will provide a smoother transition path than an entirely new language like Python. On a strategic level, Microsoft considers JavaScript to be a Mozilla technology, explaining why the former is eager to jettison it while the latter wants to see it reinvigorated. That’s how the market works (and works well).

The other pillar of the future web (and another favorite topic here on Peer Pressure) is markup. The shortcomings of HTML for application development (as opposed to document representation) are clear. At the same time, I find it hard to get too enthusiastic about XUL. This may be a case of familiarity breeding contempt, but in my experience XUL user interfaces are more functional than attractive. I’m not crazy about certain XUL features like XUL Templates, whose syntax strikes me as obscure. There are some very cool XUL-related technologies like XBL (if it had better error reporting), but the bottom line is that the idea of XUL on the web hasn’t gained much traction.

In the long term, someone like WHATWG may address HTML’s shortcomings as a language for app development. But as with the scripting debate, it’s worth considering whether there isn’t an existing language that could fit the bill. The obvious choice is Adobe’s MXML, which is used by Flex to build user interfaces. Whereas XUL UIs tend to be rather drab, the flashier Flex demos I’ve seen had me positively drooling. Adobe has already open sourced Flex, and it has donated its open source Tamarin virtual machine to the Mozilla project (something that still warms my heart every time I think about it). I’ve already blogged about Brendan blogging about a potential harmonization of XUL and MXML. And while Flex is still a relatively recent innovation, Flash continues to be astonishingly successful, and it’s reasonable to expect that Flex will be able to leverage to great effect the huge Flash development community and near ubiquitous Flash runtime.

From Mozilla’s perspective I can’t really see any downside to this scenario. All other considerations aside, it would reduce the number of wholly owned technologies that they have to maintain, leaving more bandwidth to deal with innovation in other areas (Mozilla 2, Prism, etc.). XUL would need to supported for some time to come as the language of Firefox’s chrome and that of its hundreds of third-party extensions. But this can probably be bridged with a fairly straightforward mapping of XUL tags into their MXML equivalents. More to the point is the question of what Adobe might gain from this approach.

A few months ago I gave a talk about web application development and mentioned the oft-cited statistic that the Flash runtime is available on 99% of web browsers. Afterwards, one of the other speakers pulled me aside and explain that this is due primarily to the fact that some crufty old version of Internet Explorer came preinstalled with an equally old and crufty version of Flash. The number of machines with the newest version of Flash installed, he claimed, is far smaller. I haven’t confirmed this, but it has the ring of truth to it.

Adobe has staged one strategic coup after another since its brilliant acquisition of Macromedia two years ago, but it still lacks one vital strategic asset: a killer app. Bundling Firefox with a future, open source Flash would fill this gap and have a salutary effect similar to the aforementioned IE bundle (though admittedly on a smaller scale). This is particularly true because Firefox has a great upgrade story, virtually ensuring that users stay current with new versions. In addition, Adobe and Mozilla are facing a similar challenge from Microsoft’s Silverlight and will be better able to counter it if they combine forces.

For all I know (and I don’t), discussions along these lines are already underway. It’s intriguing to note that, were this to take place, the distinction between Prism and AIR (both of which would be using Tamarin, Flex and SQLite) would boil down to choice between the Gecko and Webkit rendering engines. And that, many would contend, would also be a good thing.

AllPeers: Blog

How to Save the Web

Brendan Eich delivers a vicious smackdown to Microsoft for dissembling their motives regarding ECMAScript 4 (JavaScript 2). In essence, Microsoft is pushing back against ES4, claiming it is unnecessarily complex, while simultaneously touting its own full-blown web development framework (C#, .NET, Silverlight and friends). The reeks of hypocrisy and serves as further proof that Microsoft is continuing to employ its famous “embrace and extend” strategy on the web.

I can’t resist pointing out that, when I made a similar argument for improving web markup, the very same Brendan smacked me down for pragmatic reasons:

jgraham already pointed out the Prisoner’s Dilemma facing browser vendors trying to gain market share. Cooperate with the purity police while IE continues to defect? You lose.

Be that as it may, we’re all on the same side here, and the real question is how to push forward innovation on the web despite the daunting inertia of a billion legacy web browsers, most of which are controlled by a corporate entity that is pursuing its own strategic agenda. Whether we’re talking about better markup or better scripts, we quickly bump up against the “Prisoner’s Dilemma” that Brendan evokes.

I can see two possible solutions. One is a true paradigm shift. If people stop using web browsers as we currently know them in favor of, say, Rich Internet Application platforms like AIR or Prism, there will be an opportunity to deploy superior technologies that break with the past. In this scenario backwards compatibility is nice-to-have but not essential. For example, Google might decide to implement some future generation of Gmail on top of an RIA runtime in order to provide a more compelling user experience. In this case, I could easily see them opting for Mozilla’s open Prism technology rather than Adobe’s or Microsoft’s proprietary stack. If most people end up with Mozilla’s runtime on their machines, strategic control of web technologies would slip from Microsoft’s grasp.

The other option is to out-embrace and out-extend Microsoft. This might involve taking a page out of Adobe’s book by developing an ActiveX for IE that let’s users run ES4 and other goodies without having to convince Microsoft itself to play along. As it transpires, an ActiveX control for the Gecko rendering engine already exists, so there may not be too many technical obstacles to achieving this. Much more of a challenge, of course, is getting the deployment story right so that enough people end up installing the control in their browser.

The sad fact is that cooperating with web standards efforts that threaten the viability of its own strategic web initiatives is simply not in Microsoft’s interest, maddening as this may be. It won’t be easy, but pulling an end run around the Evil Empire and beating them at their own game is probably the only real option. And it’ll be oh so satisfying if we can pull it off.

AllPeers: Blog

What Does Prism Mean for AllPeers?

I’ve come out of the closet recently as a big fan of WebRunner, so it was incredibly exciting to see Mozilla officially take the project under its wing with a great new name and branding. As far as I’m concerned, this is where the future’s at.

Since I’m all about putting my money where my mouth is, this raises the intriguing question of what it would mean to port a complex extension like AllPeers to Prism. We’ve certainly got a lot of mileage out of AllPeers as an extension, leveraging the full functionality of Firefox including the relatively easy extension installation process. Nonetheless, the need for explicit downloading and installation of a lot of code (mostly compiled C++) is a drag. Turning AllPeers into a true web app would remove all of the remaining friction for potential adopters.

The first question is how much existing functionality could be rewritten in JavaScript. Clearly JavaScript 2 will ease this task since it brings a lot of new programming constructs to the party that simplify the implementation of complex application logic. Tamarin is also a virtual must since its just-in-time compilation will have a major impact on performance. It should theoretically be possible to implement our entire resource management framework and networking layer in JS (although this would be painful since it implies rewriting a lot of existing code). I’m pretty sure some additional low-level networking code would have to be exposed by Mozilla, since we make extensive use of NSS directly.

The only remaining essential binary code in AllPeers is our codec support: we embed both FreeImage and the FFmpeg libraries in order to extract metadata from media files (height, width, length, bitrate, etc.) and generate thumbnails. With the work that Stuart Parmenter has done on Mozilla’s support for image encoding/decoding and the planned video and audio tags, it isn’t too much of a stretch to imagine a future Firefox where codecs can be installed in a manner similar to plugins and made available to JavaScript code. (Mike Shaver touched on this during his talk on future browser features at Mozilla 24.)

We also need some way to store our data in an efficient local database. Something like Google Gears would presumably fit the bill. It doesn’t look to me like DOMStorage will scale for a large repository of highly structured data, but I might be mistaken about that. I’m not sure how much traction (if any) Google Gears has outside of Google itself, but if it doesn’t catch on then some other persistent storage mechanism will be needed that gives applications control over the database at the SQL level.

The other issue that springs to mind is how to overlay AllPeers-as-a-web-app onto Firefox. We’ve had many people express interest in running AllPeers in a separate process, but a lot of the product’s appeal, in my opinion, stems from the fact that it is right there in your browser when you need it. This means that web apps need to be able to modify browser chrome: adding a sidebar, toolbar and status bar panels, at very least. This raises all kinds of security concerns, I’m sure, but at the end of the day if the app is written entirely in JavaScript with standard web privileges, it can’t do anything too heinous. Perhaps the biggest barrier is cracking the nut of dynamically loading and unloading overlays. This is tricky and it doesn’t look like anyone’s working on it right now. Hopefully someone will pick up the ball since this is, in my opinion, one of the biggest barriers to adoption of Firefox extensions in general. Perhaps the best approach would be to start a green field effort to enable web apps to modify the browser’s chrome in controlled ways, rather than trying to adapt the existing extension mechanism.

Based on this analysis, it isn’t going to be feasible to deploy something like AllPeers as a Prism app until Mozilla 2 (i.e. 2009 timeframe). But we’re moving in the right direction, and the official launch of the Prism initiative is a big step forward.

AllPeers: Blog

Extending Extensions

I wrote a while back about our intern Luděk’s work on demonstrating how AllPeers can be extended by installing additional Firefox extensions that we call “extras”. The first extras added support for uploading images to Flickr and links to del.icio.us as part of the sharing process. They aren’t really ready for primetime, but they are good demonstrations of how one extension can extend another (in general) and how new features can be added to AllPeers (specifically).

Since then, Luděk has been hard at work writing additional AllPeers extras. It is certainly a goal for these to be useful to some AllPeers users. With a bit of luck they will also be useful for those thinking about the requirements for adding real support for extension dependencies to Firefox. And, ideally, we’ll eventually see third parties motivated to write extras for AllPeers. You can see all the extras currently available on our new extras page.

As far as the Flickr and del.icio.us extras are concerned, it occurred to me recently that a better approach would be for these (and potentially other services) to be available in a way analogous to normal contacts. So I can share an image with my friends Bob, Fred and “Flickr”. The latter would result in the image being uploaded to their website rather than being shared via the AllPeers network. Luděk seems to agree so expect to see this in a future version.

Another cool extra provides operating system shell integration. After installing it you get a new context menu option in your file manager to share files with AllPeers. This makes it quicker and easier to share files without having to go through a potentially cumbersome drag-and-drop process. It works both on Windows and on GNOME’s Nautilus, KDE’s Konqueror and Dolphin and XFCE’s Thunar (which I like to refer to collectively as “Linux stuff”).

The final extra lets you set up a special user who will automatically receive any files you share. So if you have one machine that’s always on, you can install the caching user there and be sure that your files will always be available even if the computer you shared from (e.g. your laptop) isn’t. This is an elegant solution to the “no sources” problem that plagues all peer-to-peer networks.

I hope that these will be of both educational and practical value to others. I’ll blog about other extras as they appear. If anyone has ideas, drop me a line.

AllPeers: Blog

Is Apple Evil?

As someone who unlocked his iPhone (living, as I do, in the Czech Republic), I’ve been observing carefully the brouhaha surrounding Apple’s statement that unlocked phones might be “bricked” by the next firmware update. A CNet blog entry is typical of the commentary spewed forth by the chattering classes. As I’ve noted, every hype wave has an equal and opposite antihype backlash, and the iPhone is about as hyped as a story can be without somehow involving Paris Hilton. Some degree of bellyaching was inevitable.

Nonetheless, Don Reisinger , the author of the piece, misses the point entirely. Apple isn’t being a mean jerk just because it likes to stomp on its customers and make them cry. Ask yourself why Apple locked up the iPhone in the first place. How could a company that is so obviously consumer ubersavvy be so consumer unfriendly? The reason is simple: Apple locked up the iPhone so it wouldn’t have to check the compatibility of a zillion third-party applications every time it updated the firmware. (Note to self: use more bold face and you might become an A-list blogger like Marc Andreessen.)

So now Apple is in a bind. It didn’t want to have to deal with all this crap, but a bunch of hackers went ahead and cracked the phone, and now it has two choices. Either it can try to test all the infinite permutations of apps that people might have illicitly installed (the same process that caused Vista to arrive years late while still sucking) or issue a statement that warns people that the next firmware update might break their phones. You can’t really blame them for choosing the latter.

I will blame Apple for getting a bit fat and arrogant lately. Like that talented and self-absorbed friend who stopped talking to us once they finally hit the big time (confirming what their ego always believed), Apple is following in the footsteps of Microsoft, Netscape, Google and every other technology superstar in getting more difficult to deal with the higher its star climbs. Don absolutely has a point that it is losing out to the likes of Amazon in negotiations with the music majors because it’s gotten just a little too big for its britches. This is hardly the end of the world, however, for Apple or for us. A bit of serious competition is exactly what the doctor ordered to bring them back to earth.

AllPeers: Blog

iPhone and the Future of Apps

When the iPhone was released, there was plenty of bellyaching about the lack of an SDK for third-party apps. Then Apple stepped up and announced that the “SDK” for the new device would be the Safari web browser, combined with Web 2.0 techniques (i.e. gobs of JavaScript on the client). Some hailed this as a visionary idea while others griped (somewhat paradoxically) that “web apps are not applications”. The situation became muddier when rogue developers quickly released a user interface toolkit and a package manager that makes it braindead simple to install native (albeit unauthorized) OS X apps designed for the iPhone.

I’ve been plugging the idea of web apps as the future of applications for a while, with a particular emphasis on WebRunner. So naturally I’ve been intrigued by Apple’s decision to make the web their official SDK. Having got my hot little hands on one, however, I’m disappointed by the current lack of features that would make this direction viable. As far as I can see, you can’t even add an app to the pretty grid of colorful icons that serves as the iPhone’s main menu. Besides integration with the underlying OS, there are many other gaps if the browser is to serve as an application platform: offline storage, Flash, more sophisticated web forms, etc. (Mike Shaver had a great overview of future web browser features at Mozilla 24.)

When Apple announced Safari for Windows I hypothesized that this would allow them to roll out exactly these kinds of proprietary browser-as-a-platform features. I still think that the use of web apps as the standard iPhone development paradigm is brilliant, but the current offering is totally inadequate. I predict that Apple will start to announce fancy new features for Safari or (hopefully) jump on board of existing efforts like XUL, Flex, Google Gears and the like.

AllPeers: Blog

Scoble on Twitter

Robert Scoble lists some plausible rules of etiquette for Twitter users, then goes on to explain how he gleefully breaks them. The key takeaway for me is not that we should contort ourselves to the requirements of a specific service. At the same time, I’ve absolutely unsubscribed from people on Twitter because they were filling up my feed and obscuring more important people (like my family and close friends). What Twitter needs is much better filtering options. Facebook is slightly better in this regard but still very far from adequate. Ideally, we’d have some sort of horizontal filtering system that takes all your “social feeds” and lets you indicate which information you’re interested in seeing.

AllPeers: Blog

Another Brick Thrown at the Wall

So Joseph Smarr, Marc Canter, Robert Scoble, and Michael Arrington are calling for a Bill of Rights for users of the Social Web which can be summarized with 3 words: Ownership, Control and Freedom.

Well well well… How interesting! This is exactly what I have been writing about for the last 2 days and what we’ve been saying amongst ourselves for 4 years. It is so refreshing to see that people are waking up to this. I’m not sure where this will go but it is definitely a step in the right direction.