MozillaZine

November 24, 2009

Gervase Markham -- Bugzilla API 0.3 Released


">
">Version 0.3
of the Bugzilla REST API has been released. New in this version:

  • name=value search for arbitrary fields; e.g "&cf;_mycustomfield=somevalue"
  • All timestamps are now in UTC, ISO 8601 format
  • Support for OPTIONS
  • Access-Control-Allow-Origin header now on all responses (permits cross-site requests)
  • Support for downloading bug data for multiple bugs, in full, in a single request (see docs for search to find out how)
  • Text searches now default to "contains_all" (as substrings, space-sep)
  • Initial support for decent error codes - however, don't rely on them not changing!

Compatibility Notes:

  • Note that the timestamps format change is backwardly-incompatible.
  • All API capabilities now work against bugzilla.mozilla.org, now that it's been upgraded and patched.
  • An advance warning: in the next release, the Configuration object's "groups" hash will change to be keyed by ID rather than name (and so also the "id" field will disappear to be replaced by a "name" field).


">
">File bugs
|
">
">Feedback and discussion
.

Full Article

November 24, 2009 05:01 PM

Asa Dotzler -- before and after

before.jpgafter.jpg

There you have it. Before and after.

Full Article

November 24, 2009 05:08 AM

November 23, 2009

Vladimir Vukicevic -- Following Firefox Android Work

Just a heads up -- I'll be using bsmedberg's Status Board to push updates about the Android porting work; as other people get involved, you should see their updates there as well.

Full Article

November 23, 2009 07:29 PM

November 22, 2009

Vladimir Vukicevic -- Droid Almost Does

I purchased a Droid when they came out.  It's my first Android device, and it's been an interesting experience.  I am not a fan of the iPhone, and I've been using a Blackberry for the past few years (an 8700 first, then the original Curve, then the updated 8900).   The Droid is a great looking device; I like the industrial look, with my only complaint being that the big gold-coloured area on the D-pad is way too garish; it would also have been nice had that area been a trackpad-like virtual trackball.  The keyboard leaves a lot to be desired, though.  It's a physical keyboard, which is nice, but it's no match for a Blackberry keyboard.  Typing on it is slow and cumbersome, given the very wide layout, and some keys are very oddly placed.  (I found it amusing that while the Blackberry has a dedicated unshifted key for "$", the Droid has a dedicated key for "?"...)

The feel of the OS is pretty nice, although some things are more sluggish than they really should be on an OMAP3 device.  Stuart keeps telling me that Fennec has smoother panning in the browser, and I think he's right.  It's not a deal breaker though; I find myself using the browser a lot to do all sorts of things that I never would have considered on my Blackberry (because, wow, the web browser situation there is awful), but that was a frustrating experience on my iPod Touch as well.  I've spent a while "browsing the web" on my phone, which I've never been able to say I've done before.

But, it's still a phone, and while the voice portion isn't all that important to me, the overall communication package is.  Coming from a Blackberry, the overall messaging situation on the Droid is simply horrible.  Email, whether Exchange or IMAP, is a disaster.  The email client seems designed for simple "lol r u there" type of messages, and even the message lists don't seem intended for people who get more than 5 messages a day -- turning a message list into landscape mode is worthless as you only get to see about 3-4 messages in the list (same view as in portrait mode, just along the much smaller axis of the display), no IMAP IDLE support etc. are all very strange on a top-end phone.  Exchange support works ok for Calendar sync, but for email sync it would only download the first 1000 bytes or so of a message, including headers; this meant that I often only got to see the first sentence or two of an email.  I don't know whether this is a problem with the Droid or our Zimbra Exchange connector, but switching to IMAP for work mail fixed that problem.

An recently-released version of the open-source K9 Email Client that works on the Droid resolves many of these issues, though it needs some polish.  I might write some code there, since it's close to becoming a pretty good email solution.

The Gtalk client is probably in worse shape than email.  It's almost as if Google entirely ignored Gtalk on this device (and I can't believe that would be Verizon's fault, since things like Google Voice work just fine).  First, it's in general buggy -- it's crashed on me multiple times, often freezes when returning to it from another app (after clicking a link to the browser, for example), and often shows contacts as offline with a big red message despite the contact clearly having a green dot next to their name and responding to my messages.

In the browser and in other apps, you can share a web page with someone using a "Share with" button.  The list you're presented is conspicuously missing Gtalk, despite having Facebook, Email, Messaging (SMS) and a random Twitter client I installed on there.  What gives?  All of these features are available on the Blackberry; I'm not sure if it was RIM that did the Gtalk app there, but can we get whoever it was to rewrite the Android one?

One of the best things about the Blackberry is the unified messaging; there's a single view where I can go to see all my emails, my gtalk conversations, my SMS messages, app updates, and whatever else.  No such thing exists on Android.  The closest thing is the notification bar, which requires a swipe down to use, and then only shows things that have come in since the last time you looked.  I'd prefer a more time-based list that contains both old and unread items.  Sounds like the Sony-Ericsson X10 might be doing some interesting things there, and I hope that someone figures out how to create an app like this.  What it comes down to is that anything to do with communication is faster and simpler on my Blackberry, which is really strange; you'd think Google would have spent some time working this out, as everything else about the device is far superior to my 8900.  I understand that more "enterprise oriented" customers (which apparently means those that like to use email a lot?) aren't necessarily the target market here, but they could've really attacked that market with some simple work that wouldn't have affected anything else.

The good news is that all of these are fairly straightforward software issues.  The hardware is solid, and Google has shown that they'll do frequent upgrades of the OS.  Given that the Droid is a "Google Experience" device, those updates should find their way to the device quickly.  Some fixes, combined with getting Firefox Mobile on the Droid and other Android devices, will make this a great phone.

Full Article

November 22, 2009 12:36 AM

November 21, 2009

Chris Hofmann -- Open Source Education in Brasil

Last Summer I got the chance to visit several Universities while traveling around Brasil. One of the stops was to meet up with Prof. Fabio Kon and students at the University of Sao Paulo and the FLOSS Competence Center. For...

Full Article

November 21, 2009 10:32 PM

Asa Dotzler -- tonight it all comes to an end

beard.jpg

The grand beard experiment of 2009 comes to an end tonight. Here's one last look.

Full Article

November 21, 2009 01:47 AM

November 20, 2009

Gervase Markham -- Commit Access Policy Draft

Currently, Mozilla has a large number of code trees in various source code management systems, many of which have differing requirements for access. This is confusing and difficult for both developers and administrators. This document is the first draft of a vision for what a unified commit access policy might look like. Having a clear commit access policy makes the lives of developers and administrators alike easier. ...

This new unified Commit Policy is likely to need careful review and improvement; I've been working on this for a while now but I'm still sure I haven't got it right first time. Comments welcome in mozilla.governance.

Full Article

November 20, 2009 07:34 PM

Asa Dotzler -- most popular browser

Full Article

November 20, 2009 01:53 AM

November 19, 2009

Vladimir Vukicevic -- Android Hacking (Part 1 of probably many)

I've been looking to understand the Android OS better, so that I can answer some questions and create plans for getting Gecko/Firefox running on Android-based devices.  One of the first questions I asked was, "How do Android apps start?"  They're clearly separate processes while they're running, but it wasn't clear how they were launched.  It turns out, there are a couple of pieces here.  I'm going to describe what I've discovered here, in case it's useful for someone else; I haven't been able to find much of this information, largely because I don't think many people need to know any of this.

At boot time, a special instance of the Java VM is launched, called the Zygote.  This process loads a bunch of the core Java classes and performs initial processing of them, making it possible to avoid this step for each app launch.  Once the initial work is done, the process listens to a socket and waits for requests.

To launch an app using the Zygote process, a command-line tool called "dvz" can be used.  It sends its arguments to the Zygote, which will fork and then start executing the main method in a given class.

So, we have these steps, dealing with the Zygote process:

But, that's not fully how a new Android Activity is started.  It's a bit of a roundabout process.  To launch a new Activity, the ActivityManagerService is notified with an activity start request, including things like the name/class/etc. of the activity.  It puts that information in a list of activities to run.  Then, a new process is started with the main from ActivityThread.  This new process then contacts the ActivityManagerService and asks, essentially, "what app am I?".  The service then gives it the name of its activity class and other info, which is then loaded, and a message is enqeued on the main thread to instantiate the new activity and send it an onCreate() message.

This is interesting because it means that apps are not launched directly, but instead somewhat indirectly through specializing a generic "Activity" process for a specific activity.  A side effect of this is that I couldn't find a way to actually register an app with the ActivityManagerService if it wasn't launched by it.  So, to be a full Android app, you have to go through this normal startup process.

JNI Bridging

One of the difficulties in porting Gecko to Android is that the Android platform is built around Java, whereas Gecko is very much all native C/C++.  However, there is a fairly good native bridge layer, JNI, which is fairly heavily optimized by Dalvik.  So, the simplest way to connect these two is to write a shell app in Java, which bridges events, messages, paint requests, etc. to the native code for handling.

As a proof of concept of this, I wrote a simple test app.  It's fairly straightforward, with a few wrinkles.  Most of this stuff can be done with the stock Android SDK and NDK -- except painting.  The only API that the NDK exposes for graphics is OpenGL ES.  This is fine, but in some cases you may want to access Skia directly from native code.  This is possible, but requires version-specific code to accomplish.  You can ship multiple versions of your JNI glue layer, optimized for each Android version (or even platform), and load the right one during your app startup on the Java side.

This is, of course, not very portable, robust, or guaranteed to continue to work by Google, but it's possible.  There are some very rough hacks in the test app, but for the most part it demonstrates that this approach can work fine.

Next up, I'll probably blog about porting issues for large native apps, including library compatibility, Bionic, and integrating into a non-ant-based build system.

Full Article

November 19, 2009 11:14 PM

Asa Dotzler -- bigger, stronger, faster

The Mozilla project continues to kick ass and Mitchell's state of Mozilla report describes much of that ass kicking.

Check it out.

Full Article

November 19, 2009 08:01 PM

Henrik Gemal -- Firefox on Playstation 3?

There's a rumor out that Sony is looking into bringing Firefox to the PS3 platform:

"We recently received a tip from a source very close to Sony who says that they have been in talks with Mozilla lately about possibly porting firefox over to the PS3. That said, our source made sure to point out that they were unsure if any deal had actually been reached at this point, but it is great news none the less considering the complaints Sony has been getting about the lack of reliability with their current built in PS3 web browser."

Read more

Full Article

November 19, 2009 07:58 PM

Eric Meyer -- Correcting Corrupted Characters

At some point, for some reason I cannot quite fathom, a WordPress or PHP or mySQL or some other upgrade took all of my WordPress database’s UTF-8 and translated it to (I believe) ISO-8859-1 and then dumped the result back right back into the database. So “Emil Björklund” became “Emil Björklund”. (If those looked the same to you, then I see “Börklund” for the second one, and you should tell me which browser and OS you’re using in the comments.) This happened all throughout the WordPress database, including to commonly-used characters like ’smart’ quotes, both single and double; em and en dashes; ellipses; and so on. It also apparently happened in all the DB fields, so not only were posts and comments affected, but commenters’ names as well (for example).

And I’m pretty sure this isn’t just a case of the correct characters lurking in the DB and being downsampled on their way to me, as I have WordPress configured to use UTF-8, the site’s head contains a meta that declares UTF-8, and a peek at the HTTP response headers shows that I’m serving UTF-8. Of course, I’m not really expert at this, so it’s possible that I’ve misunderstood or misinterpreted, well, just about anything. To be honest, I find it deeply objectionable that this kind of stuff is still a problem here on the eve of 2010, and in general, enduring the effluvia of erroneous encoding makes my temples throb in a distinctly unhealthy fashion.

Anyway. Moving on.

I found a search-and-replace plugin—ironically enough, one written by a person whose name contains a character that would currently be corrupted in my database—that lets me fix the errors I know about, one at a time. But it’s a sure bet there are going to be tons of these things littered all over the place and I’m not likely to find them all, let alone be able to fix them all by hand, one find-and-replace at a time.

What I need is a WordPress plugin or something that will find the erroneous character strings in various fields and turn them back into good old UTF-8. Failing that, I need a good table that shows the ISO-8859-1 equivalents of as many UTF-8 characters as possible, or else a way to generate that table for myself. With that table in hand, I at least have a chance of writing a plugin to go through and undo the mess. I might even have it monitor the DB to see if it happens again, and give me a big “Clean up!” button if it does.

So: anyone got some pointers they could share, information that might help, even code that might make the whole thing go away?

Full Article

November 19, 2009 02:12 PM

Boris Zbarsky -- Linux (FC12) wake-on-LAN woes

I just spent the last two hours or so trying to get wake-on-lan to actually work on Linux. Sadly, most of the HOWTOs (assuming the link isn't broken) aren't actually that useful. Here's what I can observe

  1. Wake-on-LAN is enabled in the BIOS.
  2. Shutting down with "poweroff" or "shutdown -h" leaves the network card powered (the link light is on).
  3. Sending a magic packet to the machine doesn't power it on.
  4. If I hit the small black button on the back of the power supply once, it makes a slight noise, and after that sending a magic packet does power on the machine.

So my best guess so far is that poweroff puts the power supply into a state from which the NIC can't wake it up. I have no idea what that state might be, nor how to change this behavior. I welcome any ideas!

Update: To be clear, I've tried all the power management setting combinations in the BIOS. Most have the behavior I describe above; the rest power down the network card as well.

Update: To forestall more comments from people who aren't reading item 4 above carefully, the network card itself reports that it'll do wake on magic packet when you ask with ethtool. It DOES do wake on magic packet, in fact, but only after I press that button on the power supply. And honestly, try to give me some credit for actually trying the one thing all the howtos on this have in common, that being ethtool.

Full Article

November 19, 2009 05:02 AM

Mike Pinkerton -- Camino 2.0 Released!

I am very proud to announce today's release of Camino 2.0, available for download from our website. This release represents...

Full Article

November 19, 2009 12:15 AM

November 17, 2009

Asa Dotzler -- internet explorer 9

NeoWin is reporting that Microsoft will be revealing their Internet Explorer 9 plans tomorrow at PDC.

Here are my predictions:

Microsoft will demo an early build of IE 9 that will feature an all new and super-fast JavaScript engine. They will show an updated Office Web that utilizes JS threading, <canvas>, HTML5 drag and drop events, online and offline events, some kind of local storage, lots of CSS3, including some CSS 3 text and font additions, columns, and maybe some box styling additions.

They will commit to supporting most of HTML5, including adding at least preliminary support for <audio> and <video> tags, local storage, drag and drop, and they'll commit to most of CSS3 but not all of it in time for the IE 9 release

They will also talk about or demo some other awesome capabilities that won't get nearly the press coverage as those items listed above. I expect to hear something about ICC color profiles, and possibly even some cool device DOM APIs like geolocation and orientation.

I predict that we'll all be shocked and that the IE 9 plan will signal that Microsoft is committed to to joining the modern browsers in moving the Web forward.

Microsoft dug a huge hole when it mostly abandoned IE 6 and the Web from 2001 until 2006. Their early efforts at ramping back up with IE 7 were a big disappointment to most Web developers and while their efforts with IE 8 were much better, they're still at least a full generation behind the modern browsers.

That team has some really strong people and they're not going to let another release go by where they're still seen as badly trailing. Not with Office moving to the Web. Not with Search and other web services becoming huge revenue opportunities.

Falling short with IE 9 would be the last straw for Web developers' little remaining faith in Microsoft and so they won't miss this opportunity.

That's my prediction. What do you all think?

update: Bummer, Ina's reporting that we're not going to see IE 9 at PDC.

update: Looks like I got some of this right. Let's all hope that the rest comes to pass as they move further into the development of this next version. When any browser improves, the Web improves. It looks to me like Microsoft is getting more serious about improving the Web. This is good news and the IE team should be hearing our positive feedback and encouragement.

Full Article

November 17, 2009 10:28 PM

do you make firefox add-ons?

If you're an add-on developer, it would be good to read this post. Firefox is going to make some huge improvements to Firefox's stability and your extension might be affected.

Full Article

November 17, 2009 08:52 PM

firefox mobile coming on strong

Over at Cnet's Crave, Flora Graham's written up a great mobile browser comparison article. The take-away for me? Firefox Mobile is coming on strong.

Of the six browsers they reviewed, Skyfire , Opera Mobile, Firefox Mobile, Safari, Mobile IE, and
BlackBerry browser, the still in beta Firefox Mobile came in second place.

Here's what Flora had to say about Firefox Mobile.

Fennec was insanely fast at loading complicated pages -- the fastest of the browsers we tested. But there's no Flash support yet, and we had no trouble crashing this prototype version. Nevertheless, it may be worth a few crashes to take advantage of Fennec's slick user interface, speed and support for loading multiple simultaneous pages.
(emphasis mine)

Stability and Flash support are obviously things we have to improve for the final release, but to have our first mobile product coming out of the gates with superior speed and UI speaks volumes.

The mobile browsing market isn't locked up, no matter what some of the other guys might think.

Full Article

November 17, 2009 08:25 PM

Gervase Markham -- Firefox 5th Birthday Party - London

It's a bit last minute, but the Firefox 5th Birthday Party in London will be happening this Thursday in collaboration with OpenSoho at their monthly event. It's at the Hub Culture Pavilion, a collaborative workspace at 49 Carnaby Street, Soho (map) from 6.30pm onwards.

The cost is normally £5, but you can use the discount code "mozillavip" to sign up for free - there are 50 places available for Firefox fans. William is coming over from Paris to join us; hope to see you there too :-) If you are a London-based geek, please feel free to publicise this to other Firefox fans via your blog, Twitter or whatever.

Full Article

November 17, 2009 10:10 AM

November 16, 2009

Boris Zbarsky -- Looking for luggage and a digital camera

I find myself in the market for two things, and was wondering whether anyone has any recommendations:

  1. Luggage. I'm looking for something to check (not a carry-on) for trips when I need to take a bunch of stuff along. Obvious desirable qualities are being sturdy enough to deal with being checked, spacious, light. Bonus points for noticeable (e.g. brightly colored), cheap. Given how I use luggage (e.g on hilly sidewalks), I'd want one of the ones with 2 wheels, not 4 wheels.
  2. Digital camera. Just looking for a point-and-shoot. Main criterion here is that it have good enough quality to print, not just look at on screen. I suspect any modern camera will have most of the rest of what I want (reasonable capacity, decent battery life, ability to shoot close-ups if needed). If I can find something that doesn't have a delay on the order of 1s between me pushing the button and the picture being taken, that's a big plus! Past that, I'm not even quite sure what typically differentiates digital cameras nowadays; haven't shopped for one in a while.
  3. I welcome any advice people may have.

Full Article

November 16, 2009 02:08 AM

November 13, 2009

Gervase Markham -- Gerv Status 2009-11-13

Status 2009-11-13. Highlight: finally managed to release REST API 0.2! Although it only works fully against bugzilla-stage-tip.mozilla.org at the moment, it will work on bugzilla.mozilla.org after the upgrade, which is now scheduled for this Sunday. But this is good enough for people to test things on a relevant bug non-critical data set.

Full Article

November 13, 2009 06:27 PM

Postbox Team -- Postbox 1.1 Beta 2 Now Available

A new Postbox BETA release is now available for testing. Here’s what’s new:

  • Languages - To use a different language in Postbox, go to File / Languages and select a language. Note: translations may contain some English strings since they are still being worked on by volunteers.
  • Incorporated Mozilla Firefox 3.5.5 security and bug fixes.
  • XLIST support for IMAP servers, which enables Postbox to automatically detect special folders such as Sent, Trash, and Drafts in accounts such as Gmail.
  • Account Setup - When creating a new mail account, Postbox will attempt to figure out your connection settings for you.

Note: This beta is intended for early evaluation and feedback, and users of the latest released version of Postbox should not expect all of their add-ons to work properly with this beta.

Download the Postbox 1.1 BETA 2 Release

Submit Feedback

We’re excited to hear your feedback on Postbox 1.1, so please use our beta site to report issues or ask questions about this release.

Special Thanks

This beta includes several enhancements from the Mozilla platform. A special thanks to the entire Mozilla community for continuing to move the platform forward.

- The Postbox Team

Full Article

November 13, 2009 05:47 PM

Gervase Markham -- IE 8 and the Public Suffix List

It has become important in recent years for web browsers to know something about the de facto 'shape' of the DNS - e.g. to tell the difference between co.com (someone's domain) and co.uk (a registry-specified suffix under which people register domains). This is used to stop cookie leakage between domains, to highlight the important parts of a domain name, and for other things too.

To do this, Mozilla started the Public Suffix List project, a cross-browser initiative which tries to maintain such a map. This list is used by Opera and Chrome/Chromium. Thanks to some heavy lifting at the start of the project by some very hard-working volunteers, the list is pretty comprehensive (although we tweak it regularly).

IE 8 also needs to know this type of information, to power things like its domain highlighting in the URL bar. The excellent Eric Lawrence's post on the IE blog details what they use it for and how their code works. You can see there the algorithm that IE used in all versions prior to IE 8.

In IE 8, they made changes to improve the accuracy of the algorithm. Sadly, although the licensing on the data is designed to enable them to, they have chosen not to switch to using the Public Suffix List. Instead, they have kept their old heuristic but added a set of exceptions - ietldlist.xml, which is bundled with IE 8. (If you have IE 8, you can see it by visiting the URL res://urlmon.dll/ietldlist.xml).

This is sad a) because it makes the browsers inconsistent with one another and b) because IMO their algorithm and list combination does not produce results as good as the Public Suffix List. Here are some issues:

  • The IE list contains typos (I'm fairly sure about most of these):
    • aeroport.ci (aéroport.ci)
    • ciesqyn.pl (cieszyn.pl)
    • golgow.pl (glogow.pl)
    • udmautia.ru (udmurtia.ru)
    • prindipe.st (principe.st)
    • edunte.tn (edunet.tn)
    • cherrnigov.ua (chernigov.ua)
  • The .aero, .pro and .museum gTLDs have a large number of reserved subdomains; these aren't recognised.
  • There is likewise no attempt to deal with the subdivided complexities of Italy (.it), Japan (.jp) and Norway (.no).

That's not to say we don't have things to look into either; I've filed a bug to follow up the places where IE has an entry that we don't.

I've written a Perl script implementing both algorithms (PSL courtesy of the regdom-libs project) so people can see the differences for a particular domain. Note that I can't redistribute ietldlist.xml, so you'll need to obtain your own copy of that before the script will run.

I hope Microsoft will consider using the PSL for the next release of IE, so we gain cross-browser consistency and can all work together to maintain a single map of the DNS. We are happy to work with them to make that possible.

Full Article

November 13, 2009 11:57 AM

Robert O'Callahan -- Sword +5 Against Orange

Today for the first time I seriously used VMWare's record-and-replay feature for debugging. Chris Pearce had set up the mochitest harness to run test_access_controls.html over and over until it failed, to try to catch the "random orange" where the test has been intermittently failing on Tinderbox. He caught a failure after about 30 minutes of continuous test running in a recording VM a couple of days ago. (Each test run takes about 15 seconds, so this represents over a hundred test runs before we reproduced the failure.) Today I got around to debugging it.

Chris had captured an output log and had added some code to nsGlobalWindow::Dump to number the dump() messages. Then we can set a conditional breakpoint in nsGlobalWindow::Dump to stop whenever a particular message is about to be printed. A sensible thing to do is to break when we output the last "TEST PASSED" message before the first test failure. It took almost an hour to replay up to that point (replay is a bit slower than recording), so another sensible thing to do is to then immediately take a VM snapshot so future debugging can resume from that point relatively quickly as often as you like. It takes about two minutes to resume replay from a snapshot.

From then on it was fairly similar to a normal debugging session: setting breakpoints, looking at variables, rerunning the program as you work backwards towards the cause. Except that you don't have to worry about the execution being different and the bug not showing up. You know exactly what the log output is going to be, right down to the addresses of objects dumped in the log, so it's easy to set conditional breakpoints to stop on log events you want to look into.

The whole experience is pretty much what I expected: fabulous! It would be nice if the couple of minutes to restart execution from a snapshot could be reduced, and some of the other UI operations feel sluggish and heavyweight, but this was certainly by far the best way to debug what turned out to be a complex and very hard to reproduce failure. It's a good feeling to know that whatever happens, you will be able to go back over this execution again; it takes the fear out of debugging, and replaces it with confidence that you *will* be able to find the bug. My hat's off to E Lewis and the rest of the VMWare team.

We need to do a bit more work to optimize and document our setup, get some more experience with these features and perhaps get some more automation for running tests, catching failures and building that vital initial snapshot. But I'm pretty confident that soon this will be an essential tool for us.

Full Article

November 13, 2009 08:58 AM

November 12, 2009

Eric Meyer -- To All Who Seek It

It wasn’t what I would call unseasonably cold, but then the season was mid-autumn and the afternoon wind along the river did cut the skin a bit. I kept my leather jacket zipped up all the way as I made my way back to the hotel with shopping bag in hand. Brisk, I might have said back home, or even chilly. Not winter yet, but you could feel it coming in the snap and shift of the air.

I crossed the last street before the hotel, keeping an eye on both the short-cycle light and the short-tempered traffic. Not that there was any particular reason for them to be short-tempered—it was a Sunday afternoon and there were hardly any cars on the bridges and roads that grid the downtown area—but I knew from experience that pedestrian intimidation was something of a sport for the locals, and I really didn’t feel like tempting fate, or at least somebody’s ideas about what constituted a bit of fun.

Having threaded through the small bunch of oncoming pedestrians and reached the relative safety of the sidewalk, I came upon a large man with two children in tow, all bundled against the cold in parkas and scarves and hats. He asked if I had a minute, and I immediately knew what was coming. Sure enough, it came out: the request for a dollar, some change, anything I could spare. I glanced at him, at the children, back at him. Something for bus fare, he said. They’d missed dinner at the Mission the night before, he said. Just a little help, anything I could do, he said.

How many times had I heard this before? I gave the usual excuses about not having any cash, I only travel with credit cards, so sorry, had to go.

And went, the wind biting into my cheeks as I strode to the hotel’s front door, the overhead heater blowing a curtain of warmth across the entryway. Into the lobby. Into the elevator. Thirty floors into the air. And in my sight, still, the children looking at me. The boy of maybe eight, looking up at me curiously. The girl of six, peeping at me warily from behind the man’s bulk. Props? Accomplices?

Did it matter?

I stood at the counter of the lobby gift shop, stacks of nutrition bars in my hands. A bottle of water in the side pocket of the jacket I had yet to shed. An apple in the other. My credit card between two fingers, ready for the attendant to take.

Through the doors, into the cold wind under the canopy, the plastic shopping bag weighing down my hand. I reached the sidewalk and there they were on the same corner, looking like they were getting ready to cross the street. I caught the man’s eye, signaled him to wait. As I approached his face shifted, softened, something like relief warring with shame melding into a curiously childlike expression.

“God bless you,” he said to me, and I chose to believe that he meant it. The little boy smiled up at me, a tiny edge embedded in the corners of his mouth. The girl still peeped warily, maybe even more so now. The man and I were shaking hands, looking squarely at each other for a moment. I told him to make sure to get the kids to that Mission dinner. I could think of nothing else to say, because it was the only thing I was thinking. Get the kids fed, keep them as healthy as possible, no matter what else.

As I turned into the recessed, canopied area that sheltered the hotel’s front door, I glanced back at the street corner. The three of them were waiting to cross toward the small park to the north, the gift shop’s white bag ludicrously small in the big man’s hands, and then they were occluded by the building’s corner. I walked back through the wall of warm air, into the dim lobby and out of the bright outdoors, thinking that there was every chance I’d been suckered, and knowing that it didn’t matter.

Full Article

November 12, 2009 09:33 PM

Asa Dotzler -- go read gandalf

Full Article

November 12, 2009 07:44 PM

Postbox Team -- A Great Alternative for Xoopit for Gmail Users

As announced, the Xoopit for Gmail service will be closing down this Friday, November 13th, 2009. If you’re currently using Xoopit, your files and photos will still be attached to your Gmail messages, but you will no longer be able to access Xoopit services.

To receive a similar experience, you could migrate all of your email to Yahoo Mail, but there’s another compelling alternative — Postbox!

Postbox gives you instant access to files and photos buried within your email messages.

You can search for files and photos by contact, subject, date, text snippet, or tag from almost anywhere within the interface. Postbox then provides you with simple and intuitive ways to use what you’ve found.

Postbox works great with Gmail, but it also works with files and photos from ALL of your email accounts, including Yahoo mail, your work mail, or any other POP or IMAP account.

And because Postbox does all of its cataloging on your computer, you won’t have to surrender your email credentials to a third party, or compromise the privacy and confidentiality of your email data.

Postbox is quick to download and a snap to install, so if you’re a Xoopit for Gmail user, or simply want a better way to find and use email content, then we hope you give Postbox a try!

- The Postbox Team

Full Article

November 12, 2009 05:45 AM

November 11, 2009

Dave Miller -- Upgrading bugzilla.mozilla.org to version 3.4.3

We’re finally at the point where I can say we’re ready to upgrade Bugzilla @ Mozilla this weekend.  We’re aiming for Sunday evening (probably 6pm PST).  I’ll post again when I know how long it’ll be down for (and that’ll be included in the eventual downtime notice on the IT blog as well).

There’s a staging copy set up at https://bugzilla-stage-tip.mozilla.org/ and I would appreciate people playing around with it and finding anything that might be broken before we get it to production.  Before filing bugs, make sure to check the detailed status linked from the red box at the top of every page to make sure it’s not already listed (and you can also see my progress on cosmetic issues and so forth, there).

It will be down for a while at some point tonight when I reload it with an up-to-date snapshot of the production server (and that’ll be my test to find out how long it’ll take to upgrade it, too).  I’m super excited because this has been a long time coming. :)

Full Article

November 11, 2009 08:41 PM

November 10, 2009

Asa Dotzler -- seven years of firefox

Here's a set of screenshots I put together for some reporters doing 5 year articles.

The series goes from Phoenix 0.1, released September 23, 2002 to Firefox 3.6 Beta, released October 30th, 2009.

Full Article

November 10, 2009 10:05 PM

November 09, 2009

Gervase Markham -- Bugzilla API 0.2 Released

Version 0.2 of the Bugzilla REST API has been released. New in this version:

  • Read/write support for flags, groups, custom fields and comment privacy
  • Access to all aspects of Bugzilla's configuration with a new /configuration call
  • Even more high-quality and comprehensive documentation
  • Better logging so I can debug problems

Note that these new capabilities will not be available on the copy of the API pointed at bugzilla.mozilla.org until the upgrade :-( But in the mean time, you can test them on the staging server. Although that seems very slow at the moment.

I consider this the first version of the API with which you should be able to write a capable Bugzilla client of some sort. Let me know if you find stuff missing which would be required for this usage.

Lastly, there is now a Bugzilla component for you to file bugs in :-)

Full Article

November 09, 2009 10:50 PM

Mike Shaver -- five by five, in the pipe

A little more than eighteen-hundred days ago, I and many others held our breath as the much-anticipated Firefox 1.0 was released to the world. A million downloads in the first week pushed our server infrastructure to the brink, and left me reeling: we had come so far from the days of Netscape 6 and the drive to Mozilla 1.0. Our message of a better browser experience, exemplified by the security and performance and personalization and open source and standards-friendliness of Firefox, had found a welcoming audience.

We faced, then, a daunting series of challenges: shifting focus to our most promising product (Firefox) while maintaining the energy and contribution of the Mozilla community; making the project sustainable over the long term, within the inviolable parameters of our mission; navigating new waters of commercial-non-profit-hybrid-community-mainstream-competitive software. We’ve had success at all of those so far, by my lights, though surely not without our bumps and scrapes.

The world is very different today than it was when Firefox was born. Microsoft has rebuilt its browser team, and released two major updates to its browser — at the time, I counted IE7 as one of Mozilla’s greatest achievements. Two other software Goliaths, Apple and Google, have joined the browser fray with gusto. Where once only Opera dared to tread, the browsing experience is now seen as a defining characteristic of a mobile phone, and we are ourselves getting ready to rock it.

Even in this savagely competitive environment, Firefox and Mozilla continue to thrive. Of our 330 million users world-wide, more than 100M of them are in the last year, and 30M in the last two months alone. We’ve continued to grow incredibly even since the latest competitor entered the scene, because we’ve continued to relentlessly improve Firefox and the web in ways that matter to people around the world. Every day we, along with our incredible and essential mirror partners, ship almost twice as many Firefox downloads as we did in that incredible release explosion from five years ago.

In January, I’ll have been involved in Mozilla for a dozen years. It has been a lot of work and a lot of fun, a professional and personal opportunity that I think makes me one of the luckiest software professionals ever to whine about their debugger. Thank you to everyone who has helped make Firefox what it is today, and what it will be tomorrow. There’s lots more to do, but please take at least a few minutes today to sit back and relish the impact you’ve had on the web, and on the people who use it.

Full Article

November 09, 2009 03:22 PM

Asa Dotzler -- five years of firefox

Five years ago, on November 9th, 2004, we set the world on fire with the launch of Firefox 1.0 and the beginning of the modern era for Web browsers.

On that day, I was too exhausted to write a serious blog post about the occasion, but thankfully history has spoken louder than any words then could have.

Today, with somewhere between one quarter and one third of global browser usage, 330 million Firefox users have made a statement that the browser matters. That may sound uncontroversial today, but 5 years ago most people really didn't get it.

But some of you did and you not only made the choice to move to a better browser, but you spread the word to hundreds of millions of others and became the largest grassroots software community the world has ever seen.

There's a lot to celebrate today, but the people of Mozilla -- the thousands of you who made this all happen, you all are what I'm celebrating. Thank you for making such a profound difference in how we all experience the Web. Thank you for improving the lives of hundreds of millions of individual human beings.

Full Article

November 09, 2009 08:00 AM

November 07, 2009

Vladimir Vukicevic -- CanvasArrayBuffer and Canvas*Array

WebGL introduces two interesting concepts that I think have application outside of WebGL, the CanvasArrayBuffer and CanvasArray.  This is all subject to change, of course, though this is what the current Gecko (and others') implementation looks like.  In particular, the Canvas prefix in the names might change soon.

It became clear that pure JS arrays are not a useful way of shoveling around lots of 3D data; their very flexibility makes them impractical for performance-critical uses.  In particular, WebGL often wants to deal with arrays of a specific type -- an array of integers, an array of floats, etc.  Even more complicated is the need to manage multiple types within a single memory region; for performance, it's often preferable to allocate one chunk of video memory, and place coordinates, colors, and other types in there, replacing them as necessary.

There are two portions to the solution: the CanvasArrayBuffer and a set of typed CanvasArray views.  A CanvasArrayBuffer represents chunk of data.  It can be allocated with a size in bytes, but it can't be accessed in any way.  To actually manipulate the data inside a CanvasArrayBuffer, a CanvasArray has to be created that references it.  An example:

var buf = new CanvasArrayBuffer(3*4);
var floats = new CanvasFloatArray(buf);
floats[0] = 12.3;
floats[1] = 23.4;
floats[2] = 34.5;

The above chunk of code allocates a 12-byte CanvasArrayBuffer, and then creates a float-typed view onto the buffer which can then be manipulated (almost) like a normal array.  Of course, the above is cumbersome to write, so there are shorthands that will allocate a CanvasArrayBuffer, and optionally fill it with data from a JS array:

var f1 = new CanvasFloatArray(3);
var f2 = new CanvasFloatArray([12.3, 23.4, 34.5]);

The size of each CanvasArrayBuffer is fixed; there is currently no way to change its size once allocated.

Multiple CanvasArrays can reference the same CanvasArrayBuffer.  For example:

var buf = new CanvasArrayBuffer(12*3*4+12*4);
var points = new CanvasFloatArray(buf, 0, 12*3);
var colors = new CanvasUnsignedByteArray(buf, 12*3*4, 12*4);

This creates a buffer of 192 bytes, which is enough room for 12 3-coordinate float points followed by 12 RGBA colors, with each component represented as an unsigned byte.  The arguments to the CanvasArray constructors are the offset from the start of the buffer (in bytes), and the length (in elements).  The offset must always be a multiple of the element size (to preserve alignment), and the buffer must obviously be large enough for the given offset and length.  If length is not given, the length is assumed to be "from offset until the end of the array buffer"; that value must be a multiple of the element size.  If offset is not given, it's assumed to be zero.

For extra complex use cases, CanvasArrays can reference overlapping regions of a CanvasArrayBuffer:

var buf = new CanvasArrayBuffer(192); // same value from above
var points = new CanvasFloatArray(buf);
var colors = new CanvasUnsignedByteArray(buf);
points[0] = 12.3;
points[1] = 23.4;
points[2] = 34.5;
colors[12] = 0xff;
colors[13] = 0xaa;
colors[14] = 0x00;
colors[15] = 0x00;

In the buffer, this writes 3 float values followed by 4 byte values.  You'll note that this use is significantly more complex, and requires the user to keep track of the current position in terms of whatever element they're modifying (thus setting array elements 12, 13, 14, and 15 for the color).

If an attempt is made to store data in a CanvasArray that doesn't fit within the right type, a C-style cast is performed.  If the data is an entirely wrong type (e.g. trying to store a string or an object), Gecko currently throws an exception, but this might become a silent 0 or similar in the future.

Where does this fit in WebGL?  Any API function that needs an array of data takes a CanvasArrayBuffer.  This avoids placing costly JS array type conversion in a potential critical performance path, and simplifies a number of aspects of the API.  So, VBOs, texture data (if not loaded from a DOM image element or from a CanvasImageData object), index array, etc. all use CanvasArrayBuffers/CanvasArrays for pulling data in and out.  CanvasArrays also help manage memory usage -- an array of byte color data now takes up exactly as much memory as needed, instead of getting expanded out to 4 bytes.  Also, critically, floating point data can be stored as 32-bit single-precision floats instead of 64-bit doubles, taking up half as much space when the underlying graphics system can't support 64-bit values.

This API is overall lacking in developer niceties, since the focus was on providing the necessary functionality.  Higher level wrappers can be written in JS to simplify usage.  In addition, by keeping it as bare-bones as it is, it allows for fast implementation on native hardware via the JITs in all the current-generation JS engines.  The web currently fudges around the problem of binary data by passing it around either in strings (because JS strings are UCS2, therefore all 8-bit elements are valid, but with a performance and memeory cost), or often encoding as base64 (again going back to strings).  I can see this type of dense/native type access being useful for both the File and WebSockets APIs as a way to exchange and deal with binary data.

Full Article

November 07, 2009 12:30 AM

November 06, 2009

Asa Dotzler -- firefox and facebook users

Just an observation: Firefox and Facebook have pretty much the same number of users.

Full Article

November 06, 2009 06:05 PM

Gervase Markham -- Gerv Status 2009-11-06

Gerv Status 2009-11-06.

For those of you waiting for the official release of Bugzilla API 0.2: it's still blocked on getting some small support patches on to bugzilla-stage-tip.mozilla.org or bugzilla.mozilla.org. Despite my begging and pleading, it's looking like this won't happen until the upgrade to Bugzilla 3.4, which keeps getting postponed :-(

Full Article

November 06, 2009 05:24 PM

November 05, 2009

L. David Baron -- Distributed Extensibility

There's been a debate in the HTML Working Group on distributed extensibility; this led to a session at the Technical Plenary yesterday (and, for me, an interesting lunch discussion afterwards that led me to think about issues I hadn't before thought much about). One issue in that debate is that some people see the debate as a debate specifically about whether to use XML namespaces and some see it as a debate about extensibility in general.

I've come to accept that extensibility has positive value, and that the risk of open platforms having proprietary extensions is outweighed by the risk of stagnation and the benefits of adopting extensions into the platform. The value of openness just needs to stand on its own: people can choose open extensions over proprietary ones, just like they can choose an open core over a proprietary one. (This has similarities to the open source vs. free software debate.)

However, I think XML namespaces have some problems as an extension mechanism. One of the reasons I don't like them is that they're hard to use: people have to remember obscure namespace URIs, which makes markup harder to write. Another is that namespaces can encourage not-invented-here syndrome: they encourage extensions to be complete pieces rather than reusing as many pieces of the core as possible, since once you're writing a subtree in a different namespace, it's easier to use elements in that namespace and it's extra work to switch back into the core namespace. Thus they can encourage extensions to extend more than necessary.

Accepting that extension mechanisms are good doesn't necessarily mean their value exceeds their costs; extension mechanisms, especially in software, can be quite costly. In software, large portions of the cost of extensibility is borne by the core, but it's not clear that's also the case for standards.

Full Article

November 05, 2009 08:05 PM

Gervase Markham -- Pongo: Guerilla Usability Lab

Someone added a comment to a previous blog post about this, but I think it deserves some wider publicity - particularly as I commented on the need for this sort of thing in mpt's usability talk at LUGRadio Live.

Pongo is a poor man's usability lab - it records the screen, the mic and the webcam and wraps them all up into an Ogg file for review. Here's the original blog post from the author (the original was in Python, but it got ported to C).

If there are usability people who could pick this up and take it a bit further, e.g. to the stage of being packaged for Debian and Ubuntu, that would be amazing.

Full Article

November 05, 2009 03:00 PM

SeaMonkey Team -- SeaMonkey 2 contributor interviews: InvisibleSmiley

It's Wednesday, and with that, time for another post in the ongoing series of SeaMonkey 2 contributor intereviews! This time, we'll continue with a guy who's known on IRC as InvisibleSmiley:

Who are you?

I'm Jens Hatlak, German/Austrian, single, located in Frankfurt, Germany, and still on the better side of 30. :-) I've been working as a PHP web developer for a large logistics company since I left university (computer science, TU Darmstadt) in 2007.

I chose my nickname, InvisibleSmiley, because I think it's funny to tell people that's what they missed when someone made a statement with hidden irony. ;-)

I like to play the piano, although I'm not especially good at it. I'm a good swimmer, though, a science fiction fan, and a grammar guru (avoiding the more popular alternative term here for hopefully obvious reasons).

How did you become a SeaMonkey contributor?

I started using Mozilla when it was still in the Milestone phase (around 2000), so I was a beta tester almost from the beginning, but only watching the game back then.

In 2001 I made my first Bugzilla comment and filed an enhancement bug (still open!). I also started university that year where I joined a group of system administrators responsible for the computers of the computer science department (some thousand students). After some time I took over the responsibility of not only the web server but also parts of the software installation, including Mozilla (later also Firefox, Thunderbird, and SeaMonkey), all on Sparc/Solaris. During that time I learned how to compile software from source under difficult conditions and how to write patches. However I was still not actively contributing code. Even when I worked on MozPETs I sticked to what I knew (compiling ) instead of diving into extension development and trying to understand the basic principles like XUL.

I kept using SeaMonkey when Mozilla decided to drop the suite, staying on the bleeding edge (nightly builds). When MozillaNews went on hiatus (and with it its Bonsai Watch bug tracker) I started to track SeaMonkey-affecting bugs myself, just out of interest. At some point in time I decided to push the results to a place where I (and others) could find and search them: The SeaMonkey Trunk Tracker was born. I learned how to build SeaMonkey on Windows and updated my public build instructions, but other than that I just watched development progress.

My active participation in SeaMonkey development started only last year, in October 2008 (funnily by posting a patch one minute after another developer submitted almost exactly the same), when the code had already moved to Mercurial. I was surprised by the fact that simple changes and corrections were much easier to accomplish than I had thought, so I continued to contribute small patches. The rest is history . :-)

What notable contribution did you make to SeaMonkey 2.0?

I must have touched almost all parts of the UI by now... Let's see.


  • fixing Get All Messages (my only trip to C++ land)

  • improving the Cookie Manager (making it searchable, among other things)

  • adding the ability to delete bookmarks from search results (and working with Neil to make sure deleted bookmarks do not show up there anymore)

  • writing several new or updated Help articles

  • adding support for more Firefox-compatible command-line options

  • adding UI for the MailNews Archive functionality

  • supporting standard key and double click events in the new Download Manager

  • adding support for multimedia keyboards to MailNews

  • porting the Master Password workaround in time for SeaMonkey 2.0

This may look like much (and it's certainly not few) but it's nothing compared to what people like Neil contributed in the same period of time: just think of all the reviews he made! Respect.

Beyond that I looked into making some popular extensions compatible with SeaMonkey 2, i.e. ones that need more than just a version bump. So far I have been successful with Nostalgy, Flat Bookmark Editing, Download Statusbar, and Firebug (yes, that's right!). I hope the latter can be fixed at the source, the others should appear at the xSidebar site sooner or later.

How can users give something back to you?

I don't know, maybe a bar of good chocolate? :-)

Seriously, my personal needs aside I'd like to see more people getting involved in the project. If you are maintaining an add-on (extension or theme), now would be a fine time to make it SeaMonkey 2.0 compatible. But coding is only part of it, so if you feel like you should give something back, you could help with marketing, quality assurance (e.g. organizing bug days), design (especially icons!), featured articles (e.g. blog posts with screen shots or videos) or even usability considerations. Helping other people in fora and newsgroups is also appreciated, of course. :-)

Oh, and if people would stop mistaking "it's" for "its" that would be nice, it hurts my eyes. :-P

Why, in your eyes, should people use SeaMonkey 2.0?

Because it has everything you need in one place. I think it's the combination of browser and MailNews that I like best but I've learned that people have different reasons for using SeaMonkey, and all of them are valid. I'm not saying that everyone should use SeaMonkey, though; in fact I tell people who really want to use just a browser to use Firefox instead if they feel comfortable with it. In the end it's just a matter of personal preference.

What next step do you see for SeaMonkey, and what would you like to happen in the Mozilla and SeaMonkey projects?

In the imminent future I think we need to concentrate on getting it right, i.e. fixing the most evident problems people have with SeaMonkey 2.0 (like the recurring high CPU load issue). The next step is to make use of more Toolkit features like the Places back-end for bookmarks which will enable syncing bookmarks with Weave, and to foster integration (Lightning, KompoZer; maybe instant messaging?). In the more distant future we'll have to keep an eye on what people expect from a modern Internet application and cautiously make the necessary adjustments.

What I would like to see is an evolution of usability (supporting the user's work flow), and an improved collaboration of Mozilla projects. The comm projects (Thunderbird, SeaMonkey and Calendar) are already cooperating quite nicely but I think there's room for improvement elsewhere.

Full Article

November 05, 2009 12:20 AM

November 03, 2009

Asa Dotzler -- i have a beard again

A couple of people who see me regularly in person noted that my profile photo and other photos of me around the Web are a bit misleading because I've been sporting a full beard for the better part of this year. It probably won't survive 2009, but that's no reason not to share, so here's a quick iPhone snapshot that my friend Rey took.

It's getting a little bit (some might say that's not emphatic enough) out of control but I'm kinda digging it.

Full Article

November 03, 2009 10:36 PM

Eric Meyer -- Pseudo-Phantoms

In the course of a recent debugging session, I discovered a limitation of web inspectors (Firebug, Dragonfly, Safari’s Web Inspector, et al.) that I hadn’t quite grasped before: they don’t show pseudo-elements and they’re not so great with pseudo-classes. There’s one semi-exception to this rule, which is Internet Explorer 8’s built-in Developer Tool. It shows pseudo-elements just fine.

Here’s an example of what I’m talking about:

p::after {content: " -\2761-"; font-size: smaller;}

Drop that style into any document that has paragraphs. Load it up in your favorite development browser. Now inspect a paragraph. You will not see the generated content in the DOM view, and you won’t see the pseudo-element rule in the Styles tab (except in IE, where you get the latter, though not the former).

The problem isn’t that I used an escaped Unicode reference; take that out and you’ll still see the same results, as on the test page I threw together. It isn’t the double-colon syntax, either, which all modern browsers handle just fine; and anyway, I can take it back to a single colon and still see the same results. ::first-letter, ::first-line, ::before, and ::after are all basically invisible in most inspectors.

This can be a problem when developing, especially in cases such as having a forgotten, runaway generated-content clearfix making hash of the layout. No matter how many times you inspect the elements that are behaving strangely, you aren’t going to see anything in the inspector that tells you why the weirdness is happening.

The same is largely true for dynamic pseudo-classes. If you style all five link states, only two will show up in most inspectors—either :link or :visited, depending on whether you’ve visited the link’s target; and :focus. (You can sometimes also get :hover in Dragonfly, though I’ve not been able to do so reliably. IE8’s Developer Tool always shows a:link even when the link is visited, and doesn’t appear to show any other link states. …yes, this is getting complicated.)

The more static pseudo-classes, like :first-child, do show up pretty well across the board (except in IE, which doesn’t support all the advanced static pseudo-classes; e.g., :last-child).

I can appreciate that inspectors face an interesting challenge here. Pseudo-elements are just that, and aren’t part of the actual structure. And yet Internet Explorer’s Developer Tool manages to find those rules and display them without any fuss, even if it doesn’t show generated content in its DOM view. Some inspectors do better than others with dynamic pseudo-classes, but the fact remains that you basically can’t see some of them even though they will potentially apply to the inspected link at some point.

I’d be very interested to know what inspector teams encountered in trying to solve this problem, or if they’ve never tried. I’d be especially interested to know why IE shows pseudo-elements when the others don’t—is it made simple by their rendering engine’s internals, or did someone on the Developer Tool team go to the extra effort of special-casing those rules?

For me, however, the overriding question is this: what will it take for the various inspectors to behave more like IE’s does, and show pseudo-element and pseudo-class rules that are associated with the element currently being inspected? And as a bonus, to get them to show in the DOM view where the pseudo-elements actually live, so to speak?

(Addendum: when I talk about IE and the Developer Tool in this post, I mean the tool built into IE8. I did not test the Developer Toolbar that was available for IE6 and IE7. Thanks to Jeff L for pointing out the need to be clear about that.)

Full Article

November 03, 2009 05:41 PM

Gervase Markham -- Stars In The Internet Firmament

I get mail on a number of contact email addresses @mozilla.org. Sometimes, people wrongly use these addresses to send support requests (for which I have a canned reply) or praise. Most of the praise is just "Wow, thanks!" but occasionally something comes in which is a bit out of the ordinary:

Dear dear guys and gals of Firefox s/w and bug fixes...

THANK YOU, THANK YOU, THANK YOU !!!!!

Thank you all for releasing me from the handcuffs, tyranny, vile and cat-o'-nine-tails of Microsoft Explorer and all its attendant BS, hype and unimaginable insane (and foreseeable!) problems!

In my heart and soul you are ALL heros (and hero-esses?!) and stars in the internet firmament !!!

May your light shine forever in the integalactic realm of truth, righteousness and ALL that is GOOD!

More power to your keyboarding souls and fingertips! :o)

Give yourselves (and/or each other [more fun, that!] :oD ) a great big hug!!!
(...or 'high-fives' if you're not yet that close! LOL )

Bless you all - may your souls forever surf the infinite with brightness with freedom of spirit and goodness!

Cheers,
<name removed>

I'm off to shine a bit more light into the integalactic realm of truth and righteousness...

Full Article

November 03, 2009 04:26 PM

Robert O'Callahan -- CSS Gradient Syntax

We landed support for a form of CSS gradients on trunk a while ago, but we got considerable feedback that our syntax --- which was an incremental improvement of Webkit's syntax, which basically exposes a standard gradient API in the most direct possible way --- sucked. A bunch of people on www-style got talking and Tab Atkins produced a much better proposal. Since we haven't shipped our syntax anywhere yet, dropping it and implementing Tab's syntax instead was a no-brainer. So Zack Weinberg, David Baron and I did that (using a -moz prefix of course), and today it landed on trunk. It should land on the Firefox 3.6 branch shortly. It's unfortunate to land something new like this after the last beta, but in this case, it seems like the right thing to do instead of shipping CSS gradient syntax that we know nobody wants.

This does mean that anyone who's currently using -moz-linear-gradient or -moz-radial-gradient on pages is going to find that their syntax doesn't work anymore. Hopefully that's not too many people yet.

Full Article

November 03, 2009 11:21 AM

Asa Dotzler -- is google playing dirty with logos?

A Google search for "Firefox 3.6 beta" offers this helpful result:

What's wrong with this picture?

Full Article

November 03, 2009 02:46 AM

security response time - mozilla kills it

The Zero Day Initiative has reported that Mozilla leads the industry with the fastest vendor response time to security bugs. Scroll down to Vendor Patch Time Statistics.

No surprise here, but nice to see it documented.

Full Article

November 03, 2009 12:30 AM

November 02, 2009

Asa Dotzler -- chrome has 30 million active users

Today the Google folks disclosed that they have 30 million active users.

Chrome shipped its first public release 14 months ago and has managed to achieve a pretty large number of users in that time.

(For comparison, it took Firefox a full 8 weeks to add its most recent 30 million new users).

I've said this before, but really does deserve repeating that Google should go back to providing browser usage statistics for Google Search. They have a very large and globally distributed user base and that data would really help us all get a better picture of the global browser breakdown.

Remember when the Google Zeitgeist rocked?!

When the two primary sources disagree as much as Net Applications and StatCounter do, (Net Applications says Firefox has 24% of usage and StatCounter says it's almost 32%) adding a third big source seems like it could have nothing but a positive impact on understanding this world a little better.

Google, if you're reading this, please return to providing browser usage share in your Zeitgeist reports like you did before you started the Chrome project.


update: Wow. "Larry and Sergey recently gave the Chrome team a Founders Award, a multimillion-dollar stock bonus" That's pretty sweet. Lest anyone forget, Google has LOTS of money.

update2: Awesome tweet from @joedrew

Full Article

November 02, 2009 10:59 PM

Postbox Team -- Postbox 1.1 Beta 1 Now Available

We’re pleased to announce the availability of Postbox 1.1 BETA 1, which contains the latest and greatest improvements gained from our move to the Mozilla Firefox 3.5 platform.  Here’s what’s new and exciting about this release:

  • Faster Performance - Postbox is now faster and more responsive than ever, so give it a spin!
  • Better Looking Images - Postbox contains an improved graphics engine that produces sharper images with more accurate color.
  • Improved UI Elements - For our Mac OS X users, Postbox now has more native looking UI elements, so it will fit right in with your Mac.
  • More Reliable - 1.1 BETA 1 contains a number of reliability and stability fixes. Please see our release notes for the full set of changes.
  • Localizations - Postbox localizations are now under way! If you would like to help localize Postbox, or just want to stay up-to-date with the latest localization news, please sign-up for our Localization Newsletter, or help us test a Language Pack.

Testing Postbox 1.1 BETA 1

Note: This BETA is available for testing purposes only. For increased stability and reliability, please use the latest production version, which is currently Postbox 1.0.2.

1) Download the Postbox 1.1 BETA 1 Release

2) Tell us what you think!

We’re excited to hear your thoughts on Postbox 1.1, so please use our feedback site to report issues or ask questions about this release.

- The Postbox Team

Full Article

November 02, 2009 08:15 PM

Robert O'Callahan -- Challenges In Software Research

One of the greatest errors I see in computer science research is a tendency to view research as a spectrum with "applied" at one end and "basic" at the other, with attached assumptions that "applied" is incremental, boring, and engineering-oriented, but "basic" is crisp, radical, and intellectually satisfying. This is a false dichotomy, and I like to debunk false dichotomies.

I think the most principled way to construct such a spectrum is to classify research projects according to the degree of simplifying assumption they make to reach a crisp problem statement. So "applied" research adopts most of the relevant "real world constraints" into its problem statements, and "basic" research throws most of them out. The error is to assume that "real world constraints" make a problem boring, intellectually unsatisfying, and non-conducive to finding real breakthroughs [1]. This may be true "on average", but when choosing a research project one is not constrained by averages. In my experience, interesting research topics are abundant, and there are problems whose solution can be immediately applicable to the world while also being intellectually satisfying and potentially breakthrough science. (The current frenzy over combined symbolic and concrete execution is a good example.)

Let me suggest several such problems in the area of software development technology that I feel aren't yet getting the attention they deserve.

Verifying Refactorings

We know that verifying real software against full specifications is prohibitively expensive in most cases. However, I hypothesize that one could cheaply verify most changes that land in mozilla-central. The secret is that most patches are refactorings --- changes that should not alter observable behaviour --- or can be split into refactorings plus a smaller change that actually alters behaviour. "Should not alter observable behaviour" is very simple to state and understand, but still very tight. It would be huge win if we could prove that most such patches meet that specification. It's unclear how difficult this would be in general, but clearly patches that are the output of refactoring tools should be tractable to verify, and there is a lot of unexplored territory beyond that.

Improved Record And Replay Debugging

I don't have time to work on Chronomancer, but someone should be working out how to expose omniscience to the programmer to optimize the debugging experience.

Testing Fixes For Non-Reproducible Bugs

Record and replay technology is more or less here. (I'll post more about VMWare's solution later, but suffice to say it's working quite well so far!) Suppose you have recording of a bug which isn't reproducible. Now you can replay that recording one or more times and understand the bug and write a patch that should fix it. The problem you immediately run into is: how do you check that the patch really fixes the bug? You somehow need to inject the fix into the code and replay; that's tricky, and the fix may disturb the replay and cause the bug not to occur on that run for reasons unrelated to the bug actually being fixed.

Performance Measurement And Variation

Measuring performance is hard. One huge problem is that you want to measure effects that are much smaller than the random noise in the tests. I don't really know where this noise comes from. I would love to see research that analyzes the sources of run-to-run performance variation and describes techniques for reducing the variation.

I believe all these problems are reasonably easy to get into, have been little investigated in the past, have lots of room for exploration by multiple groups, are intellectually stimulating, and are likely amenable to solutions that could be immediately applied to the needs of software developers.


[1] The converse error --- assuming that "basic" research must not be boring or incremental --- is also widely held, but more easily falsified. Consider the endless stream of esoteric type theories that are both boring and completely incremental, such as my POPL '99 paper!

Full Article

November 02, 2009 08:11 PM

October 30, 2009

Asa Dotzler -- tour of firefox

I narrated a tour of Firefox. Check it out.




Full Article

October 30, 2009 08:46 PM

call for design/illustrator help

Hey friends. I need some help. As many of you know, we're coming up on the 5 year anniversary of Firefox 1.0 and as part of the celebration, I'm trying to get together the evolution of the Firefox brand (from way back in the Phoenix days through Firefox 3.5).

For the Firefox logos, we've got vector art, but unfortunately the Phoenix original art was lost long ago.

So, I'm hoping that someone reading this, with decent Illustrator skills, would be willing to re-create the old Phoenix logo for me.

about.gif

update: Yeah, I tried Illustrator's live trace but there's just not enough data in this small bitmap to produce something that looks solid.

We're on a bit of a tight schedule so if this is something you'd be able to get to this weekend, I'd be eternally grateful. (my gratitude comes with a free classic mozilla "Hack" t-shirt if you're interested.)

Full Article

October 30, 2009 08:25 PM

Gervase Markham -- Gerv Status 2009-10-30

Full Article

October 30, 2009 05:46 PM

October 28, 2009

Gervase Markham -- Ubuntu Crash Reporter Fail

reporter.png

This could get recursive...

Full Article

October 28, 2009 01:59 PM

SeaMonkey Team -- SeaMonkey 2 contributor interviews: Mnyromyr

It's time for the third in a series of interviews with SeaMonkey 2.0 contributors, obviously nicknames around here can be somewhat cryptic - our mail/news owner shows that off pretty well and goes by "Mnyromyr" on IRC:

Who are you?

My real name is Karsten Düsterloh.
Since nobody without a German language background can pronounce that properly, I'm usually known as Mnyromyr, though. (Which noone pronounces correctly either - there's true parity here! *g*).

I'm living in the outskirts of the Ruhr Area, Germany, where I was also born in the early '70s. Technically speaking I'm a mathematician, but in reality I'm working as software developer at a small ISP. Occasionally, I write articles on Mozilla topics.

When time permits, I'm an active carom billiards player, albeit of limited success (average of about 3.0, for Those Who Know™). I'm also fan and collector of science fiction novels. Yes, real, printed *books*, thousands of them. ;-)

How did you become a SeaMonkey contributor?

When I entered university in the early '90s, the internet wasn't that compelling. WAIS wasn't any more interesting than your usual text adventure, and you were content getting a mail every other week. And beating up emacs to deal with newsgroups isn't much fun either.

A while later, the chair in mathematics got shiny new Sun SPARC workstations, with Netscape 1.1 ... Done, end of story. ;-)

Well, actually, I followed the Netscape trail up until the end, this time on Windows (Trumpet Winsock, anyone?), but in parallel watched Mozilla's early steps until I made it my primary browser with milestone M<some_two_digits>. Sadly, Mozilla mail part wasn't usable until about Mozilla 0.6, hence Netscape 4.x had lots of time for pouting - .snm is pronounced c-r-a-s-h-i-n-g-_-h-e-l-l!

Mozilla became stable, but MailNews still stalled. Filed my first bug (96623) which got duped almost instantly. People were writing extensions to patch up the shortcomings, notably the Message ID Finder, so why can't I? Thus, at the end of 2002, I published the first beta of Mnenhy to customize a mail's header display.

When Mozilla began waffling about letting the suite die in favour of some boring browser-only thingy, I was *really* irked, so I took part in saving the lizard...

What notable contribution did you make to SeaMonkey 2.0?

The most *visible* one for sure is tabmail, the new-old tabbed MailNews user interface. Stuff like the preferences dialog backend or the SeaMonkey/Thunderbird source code disentanglement should be virtually invisible to users anyway, just as many patches and reviews ...

How can users give something back to you?

You could send me postcards, especially if you're not from Germany. The Mnenhy contact page has details. ;-)

Why, in your eyes, should people use SeaMonkey 2.0?

Well, it's the best SeaMonkey ever, of course!

Seriously, if you like to handle all your daily internet life - mail, news, RSS, browsing, IRC - in a smooth, integrated workflow with today's technology, SeaMonkey 2.0 is for you!
Even more, if you're a (web) developer, SeaMonkey comes with useful tools like a JavaScript debugger and DOM inspector already installed...
Not to mention that you don't need to learn your whereabouts in a gazillion different programs, it's all under the same hood.
And it's free. And open. Customizable. Get involved! Now! *jingle* ;-)

What next step do you see for SeaMonkey, and what would you like to happen in the Mozilla and SeaMonkey projects?

SeaMonkey's main strength is its integrated nature, we should boost that even more. The upcoming collaboration with the KompoZer project is a good example.

Personally, I see MailNews as the key component here, the communication heart of future internet live. Here you stay in touch with family, friends, peers and collegues, leisure and business. Write mails, read news, chat, plan your schedule, browse the net.

In other words: We need a calendar (again). We need widespread mail encryption. We need MailNews bookmarks. We need instant messaging and other ways of communication as they come along.

All these aren't bloaty killer features, most of the technical backend stuff is there already anyway, waiting to be exploited ...

Full Article

October 28, 2009 01:00 PM

October 27, 2009

Gervase Markham -- Gerv Status 2009-10-23

Full Article

October 27, 2009 01:05 PM

SeaMonkey Team -- SeaMonkey 2.0 - The Modern Internet Suite is Here!

The SeaMonkey project at Mozilla is excited to release its completely refurbished next generation of the all-in one Internet suite today: SeaMonkey 2.0, now available for free download, melds the ideas behind Netscape Communicator with the modern platform of Firefox 3.5 to create one of the most compelling open source products for advanced Internet users.

The combination of an Internet browser, email & newsgroup client, HTML editor, IRC chat and web development tools, that has already established a wide user base in its previous incarnations, has been rebuilt on top of the modern Mozilla platform, featuring world-class add-on management among other things. In addition, it has been improved with feed support (including an RSS and Atom feed reader in the mail component), a modern look, restoration of browser tabs and windows after crashes or restarts, tabbed mail, automated updates, smart history search from the location bar, faster JavaScript, HTML5 features (for example video and downloadable fonts), and even support for the Lightning calendar add-on (which will issue a beta for installation on SeaMonkey 2.0 in the next few weeks).

The Release Notes feature more in-depth lists of the improvements and known issues with the new version as well as installation requirements and instructions. Find even more information on SeaMonkey 2.0 and the SeaMonkey project at seamonkey-project.org!

Full Article

October 27, 2009 10:45 AM

Postbox Team -- Postbox 1.0.2 Now Available

We strive to make every new Postbox release better than previous one.

In addition to listening to the great feedback we get from our users, we also analyze the crash reports that our users privately and securely submit to us.

In Postbox 1.0.2, we’re happy to announce that we’ve fixed several of our “top crashers”, making this release the most “rock solid” to date!

For the full list of changes, please see the release notes.

Full Article

October 27, 2009 01:18 AM

October 26, 2009

Gervase Markham -- Sometimes Ranting Is Constructive

Three years after my 2006 rant about the fact that you can't reorder folders in Thunderbird, the excellent Jonathan Protzenko has written an extension to allow you to arrange them in whatever order you like.

Now all I need to do is figure out how to reduce that 3-year lead time...

Full Article

October 26, 2009 09:46 PM

October 24, 2009

Postbox Team -- Postbox is Windows 7 Ready!

Windows 7 is a terrific new OS, but since it doesn’t include an email client by default, now is a great time for new Windows 7 users to try Postbox!

Postbox is ready for Windows 7! We’ve been testing Postbox with beta builds of Windows 7 for several months, and we’re pleased to report that it works amazing and searches your email at blazingly fast speeds. We even styled the interface to complement the new look and feel of Windows 7.

If you’re already using Postbox, you don’t have to do anything special when upgrading from Vista to Windows 7.

If you plan to move from Windows XP directly to Windows 7, we suggest you use the MozBackup application listed on our Extensions page.  Simply back up your Postbox profile from Windows XP, save it to an external drive, and then restore it after installing Windows 7 and Postbox.

You can also use MozBackup to migrate from Thunderbird to Postbox.

For more setup tips and tricks, please visit our Support page.

- The Postbox Team

Full Article

October 24, 2009 12:21 AM

Boris Zbarsky -- Sane way to return arrays to JS from XPCOM methods

With bug 523817 fixed, you can now write an interface like this:

  void getSomething([optional] out unsigned long count,
                    [retval, array, size_is(count)] out whatever outArray);

and js consumers can do:

  var myArr = foo.getSomething();

to get an array without having to have a dummy argument for the length. Word of warning: this only works if the length has no required non-retval arguments after it, so put that length at the end, right before the retval array.

Full Article

October 24, 2009 12:19 AM

October 23, 2009

Asa Dotzler -- net neutrality wtf of the day

OMG.

This guy is sponsoring legislation to block Net Neutrality.

WTF?

Full Article

October 23, 2009 11:02 PM

Vladimir Vukicevic -- Firefox Application Directory Lockdown

Starting with Firefox 3.6, only well-known components shipped with Firefox will be loaded from the application components directory.  Any other components (both binary and script) will be ignored.  This work might also be backported to the 3.5 branch, but that decision has not been made yet.  There are a number of reasons why this decision was made.

Firefox, through Gecko, has always had a flexible component-based architecture.  In particular, creating binary components to interface with the OS or with other applications is fairly straightforward, though ultimately dangerous.  Binary components have full access to the application and OS, and so can impact stability, security, and performance.  What's worse, in a binary component, the line between supported/frozen and completely unfrozen internal Gecko interfaces is blurred, making it easy to create a binary component that works well against one very specific version of Firefox (potentially as specific as a minor security release), but causes serious problems with any other version.

As we've seen the popularity of Firefox increase, more and more binary components have been written to interface between Firefox and other applications.  However, we haven't provided great guidance about the appropriate way to do so.

The only supported way of adding functionality to Firefox (whether a binary component is required or not) is through an add-on. This has many advantages for users: they can see that additional functionality is installed in the Add-ons Manager, and from there they can easily enable or disable it, as well as check for and receive updates.  We're working on improving the user experience when third-party addons are installed in system-wide locations.  Also, critically, add-ons include information indicating their compatibility with specific versions of Firefox.  Having this version information allows for safe upgrades, especially when binary components are present.

Currently, third-party applications can drop binary components into the Firefox application's components directory and expect them to be loaded as part of our normal startup.  This causes a number of problems, not the least of which is the removal of the user control that add-ons provide.  Unfortunately, a number of third-party applications are using this approach to integration, and are currently causing Firefox 3.5 users stability problems.  Many of these components were written for Firefox 3.0, and have not been updated for Firefox 3.5; a situation that we have no way of detecting because of the lack of versioning information on these "bare" components.  Because a number of internal interfaces changed between the two versions, this leads to crashes or other problems when these components are used.

In order to simplify future integration with native code, Firefox 3.6 will include support for JSCtypes for add-on developers.  This approach is greatly preferred over writing binary components.  For example, a third-party component that would like to perform some action implemented in native code when an event is received can write the integration pieces in Javascript (capturing the event and so on), and use JSCtypes to make function calls to regular non-XPCOM component native code.  Keeping as much of add-on code in Javascript reduces the impact of internal changes to Firefox, and allows for much easier maintainability.

(If you are a third-party application developer and have questions about integration in Firefox, please contact me -- I'd be happy to put you in touch with the right people who can answer questions and provide guidance.)

Full Article

October 23, 2009 07:08 PM

Ian Hickson -- Zarro Boogs

October 2007: 4000 e-mails, 400 issues. October 2009: Zero e-mails, issues, and bugs.

We'll see how long that lasts...

Full Article

October 23, 2009 08:00 AM

Last updated: November 25, 2009 05:15 AM