July 02, 2009
Asa Dotzler -- eight million downloads in two days
We just crossed the two days since release mark at about 8 million downloads. Not bad at all.
July 02, 2009 04:33 PM
Gervase Markham -- Sputmic
From a Google search inspired by an idea I got reading Scott Berkun's Why panel sessions suck (and how to fix them):
Why has no-one commercialized this? It's the obvious solution to the "pass the microphone" problem at panels, talks and other audience-participation events.
July 02, 2009 11:50 AM
Dopplr or TripIt?
Where's the action these days? I'm currently on Dopplr but have had TripIt invitations. Where are most people in the Mozilla community? A particular one, or both? I hear TripIt parses your emails from Expedia (which Mozilla uses) and other such places, which would be a time-saver. But migrating everything over would be a pain. I guess this is my first experience of potential social networking data migration anxiety. Open data FTW!
Please declare interests such as board seats or shares ;-)
July 02, 2009 07:53 AM
Asa Dotzler -- colleagues at mozilla
My good friend, and Mozilla contributor, Ken Saunders was just featured in an excellent Business Week article titled "Mozilla's Crowdsourcing Mystique.
Congratulations Ken! It's recognition well deserved.
July 02, 2009 04:55 AM
July 01, 2009
Asa Dotzler -- firefox 3.5 downloads
We shipped Firefox 3.5 at about this time yesterday and already 5 million people have downloaded it. You can watch our live download stats here and see where those downloads are coming from. (In case you were wondering, no, that's not Flash. It's a nifty SVG, Canvas, and JavaScript app.)
July 01, 2009 04:52 PM
Gervase Markham -- Bzzzt!
Feel the Shiretoko Shock!
So what am I personally most excited about in the new Firefox? Well, I have no uses for Private Browsing Mode - I think porn is a terrible corruption of God's design for sexual relationships, my personal medical condition that I research is by no means a secret, and I don't share my computer with anyone anyway. The security UI improvements are cool and well worth having, but I'm not going to get phished any time soon. It's wonderful that we're now in even more languages, but I don't speak any of them!
So really, I'm just waiting for sites to take the excellent technical and standards changes and build cool new stuff I can use. Web designers, what are you waiting for? :-)
July 01, 2009 02:50 PM
Asa Dotzler -- great review
July 01, 2009 07:45 AM
Robert O'Callahan -- Progress
I've submitted all of my compositor phase 1 patches for review. The patches are also published here. 111 files changed, 2573 insertions, 1448 deletions, divided into 39 separate patches over multiple Bugzilla bugs. In theory every one of those steps should build and pass tests, although I haven't actually verified that for all the patches. I managed to break things up pretty well --- the largest patch is only 536 insertions and 75 deletions --- so hopefully that will make reviewing easier.
MQ has been working pretty well for me. I get into a routine of applying all the patches, doing some testing, fixing a number of bugs, and then redistributing the changes across the patches that they logically belong to. I'm not 100% sure this is the most efficient way to work --- sometimes I burn quite a bit of time putting all the changes in just the right places --- but at least it's now possible.
Now it's time to start working on something else. My immediate next task is to restructure the media tests so we can generalize tests across file types and backends; for example, right now we have one set of seeking tests for Ogg and another for Wave, but we should just have a single set of tests parametrized by test files of different types.
After that, I plan to do some cleanup that's enabled by compositor phase 1. In particular, we can move scrolling out of the view system and integrate it all directly into the scrollframes in layout.
After that I plan to work on compositor phase 2. Right now in Gecko whenever something needs to be repainted we make platform-level invalidation requests, the platforrm dispatches paint events and we paint. This often leads to over-frequent painting. For example if there's a script changing the DOM 100 times a second, we'll try to paint 100 times a second if we can keep up, which is a waste of time since most screens only refresh at 60Hz or so. Even worse, if you have that script, and an animated image painting 20 times a second, and a video playing at 25 frames per second, we invalidate them all independently and if your computer is fast enough we'll paint 145 times a second. We need to fix this, and I have a plan.
Part of that plan is to create an internal animation API that various Gecko components (animated images, video, smooth scrolling, SMIL, CSS Transitions, etc) can plug into. But we also recognize that declarative animations will never be expressive enough for all use cases, and there's a lot of existing scripted animation libraries out there, so I have an idea for tying in scripted animations as well. Basically, I would expose the following API:
- window.mozRequestAnimationFrame(): Signals that an animation is in progress, and requests that the browser schedule a repaint of the window for the next animation frame, if the window is visible.
- The browser will fire a mozBeforePaint event at the window before we repaint it. Animation libraries should register an event handler that checks the current time, and updates the DOM/CSS state to show that point in the animation. If the animation has not ended, the event handler should call window.mozRequestAnimationFrame() again to ensure another frame will be scheduled in a timely manner.
July 01, 2009 04:46 AM
June 30, 2009
Dan Mosedale -- Thunderbird 3.0b3 dates
At today's thunderbird-drivers meeting, we agreed on Thunderbird 3.0b3 dates (times of 23:59 US/Pacific, as usual):
- Slushy String freeze date: 2009-07-02 (Thur)
- Slushy Code Freeze date: 2009-07-07 (Tues)
- Firm String / Code freeze date: 2009-07-14 (Tues)
- l10n-mozilla-1.9.1 freeze date: 2009-07-16 (Thur)
- Target Ship date: 2009-07-21 (Tues)
June 30, 2009 07:26 PM
Boris Zbarsky -- Performance testing pitfalls
Someone recently asked why it is that SFX (e.g. in Safari 4) scores 1000runs/s on the Dromaeo CharAt test while Spidermonkey (e.g. in Firefox 3.5) scores something closer to 80runs/s. Naturally, I pulled out my profiler and looked. I discovered some interesting things:
- About 2-3% of the time the Dromaeo harness measures for the charAt test is actually spent running the
str_charAtfunction in Spidermonkey. The rest is spent inside the harness itself. - If I pull the test out of the harness, and instead of the harness' runs/second measurement just directly measure how long it takes to run the test 1000 times, I get 430ms or so in Firefox and 750ms or so in Safari. That corresponds to scores of 2325runs/s and 1333runs/s for Firefox and Safari respectively.
- If I rerun the same standalone test in Firefox with jit disabled, I get numbers closer to 7300ms.
Conclusions: The harness is measuring pure JS-execution overhead in both browsers, not actual charAt performance. The harness causes us to somehow not trace the test when running inside of it, leading to the numbers seen above.
Update: Filed a bug on this.
June 30, 2009 04:13 PM
Gervase Markham -- Firefox 3.5 Launches! (And London Party)
As of 3pm BST this afternoon, Firefox 3.5 has been unleashed on the world! Either do Help | Check For Updates or download it here. Various community members have recorded a video where they get excited about some of the new great stuff. If you are using an older browser, you may need to upgrade before you can view it :-)
All geeks in London who are pleased about this are invited to the Firefox 3.5 Launch Party London, next Monday the 6th of July from 7pm at the Shooting Star pub in Middlesex Street, near Liverpool Street station. Sign up on Upcoming if you plan to be there. We have a big screen, so bring cool stuff to demo if you have it, and a party mood. :-)
June 30, 2009 03:40 PM
Asa Dotzler -- firefox 3.5 now available
In Firefox do this: Help -> Check for Updates...
Or, head over to mozilla.com and get your Firefox 3.5 the old fashioned way.
June 30, 2009 03:26 PM
Gervase Markham -- &*%!£ Flash
I just lost my browser and my entire desktop, AGAIN, while watching a video. This is an all-too-regular occurrence. Flash is the top cause of crashes on Linux - and has been among the top causes since Firefox 3.
When, oh when, will someone ship a browser I can use that can show me video without needing the Flash plugin?
June 30, 2009 07:39 AM
Postbox Team -- Postbox 1.0 Beta 13 Now Available
Postbox BETA 13 is now available for download! This release contains lots of great stuff that we hope you enjoy, including:
- Support for Add-ons! - You asked for it, you got it: Postbox now supports add-ons! We’ve been working with several third-party developers to port some of the most popular add-ons to Postbox. See the list of add-ons that are currently compatible with Postbox, and expect even more in the future.
- Localized Dictionaries - For our international users, Postbox now supports localized dictionaries.
- Inspector Pane Improvements - The newly styled message Inspector Pane can now be quickly opened and closed. Additionally, profile pictures can now be fetched from your Postbox address book, Mac OS X address book, Facebook, and the people you follow on Twitter.
- Better Usability - Postbox now supports account reordering in the folder pane, the saving of multiple attachments and images at once, drag & drop of multiple attachments and images, and better search bar auto-complete.
- Misc. - Lots of performance, reliability, and other improvements under the hood.

Please refer to our release notes to read up on the full set of changes. Thanks to everyone for their continued support and for spreading the word on Postbox!
- The Postbox Team
June 30, 2009 04:15 AM
Dan Mosedale -- Getting 3.0b3 shipped
Late last week, drivers spent some time discussing where we were at on the Thunderbird 3.0b3 front. We came to a decision that there's more value to be had by getting 3.0b3 out the door quickly than by continuing to hold it waiting for the last piece of the great search refactoring and the subsequent regression fixes.
The reasoning is this: beta 3 has already taken a long time, and it's felt somewhat stalled waiting on one set of things for a little while now. It was observed that there are now enough front-end changes stacked up in the tree that 3.0b2 bug reports have significantly decreased in value, and that effect is accelerating. Most importantly, it was pointed out that if we ship a milestone sooner rather than later, it helps replace that feeling of being stalled with a feeling of ongoing momentum.
What are the bigger picture consequences of doing this? Clearly, defaulted-on-GloDa search doesn't happen until b4. Then, as soon as b3 ships, we start going through the complete Tb3 blocker lists with a long knife, hopefully cutting enough that we end up feeling that our current ship targets are realistic.
This change in plans feels to me like it's mostly about partitioning the remaining Tb3 work to our advantage; it doesn't ultimately change the amount of work that we need to do.
So, where does that leave us in terms of beta 3? I've done a bunch of bug triage today, and I'll be proposing some dates in an email to dev-apps-thunderbird shortly. My expectation is that we'll come out of tomorrow's driver meeting with dates that we can work with.
June 30, 2009 01:41 AM
mozillaZine -- Mozilla Firefox 3.5 Released
Mozilla Firefox 3.5 has been released. Available for Windows, Mac OS X and Linux in more than 70 different languages, Firefox 3.5 is the most recent major Mozilla browser release since the launch of Firefox 3 in June 2008.
Firefox 3.5 can be downloaded from the Firefox product page or via software update. More information can be found in the Firefox 3.5 Release Notes.
The Firefox Features page at mozilla.com lists the new and improved features in Firefox 3.5
June 30, 2009 12:00 AM
June 29, 2009
Asa Dotzler -- mostly moved in to our new home
Deanna and I spent another weekend moving and we're mostly done.
Here's a couple of photos of the new place.

This is a shot of the front deck and main room. Click the image to see a larger version.

This is a shot of the main room.Click the image to see a larger version.
The house is not only nestled in among the beautiful Coast Redwoods (also called California Sequoia, properly Sequoia Sempervirens) but it was constructed from the same back in 1928.
We're very excited about this move :-)
June 29, 2009 09:19 PM
Gervase Markham -- Firefox 3.5 Language Coverage
Update: fixed a bug where I had confused Maltese and Malayalam. Firefox's numbers improve further :-)
The languages to be included in Firefox 3.5 are now confirmed, and Microsoft has just released the last 5 additional languages for IE 8 on XP they said were pending. That's three months after the original release. I guess they still need to learn from our team on how to simultaneously ship them all at once ;-P (And it's worth noting quite a few of their languages are still Vista and/or 32-bit only. Should we count a language if it's not available on their most common OS?)
Anyway, it's time for an update on our plans for world domination. A reminder for those joining the party: I have a spreadsheet which combines the Internet population of a country with its first-language-spoken percentages to try and get an accurate idea of what languages the world Internet population speaks.
The headline is that of the latest releases of all the browser vendors, Firefox now has the highest percentage of world Internet population first-language coverage - 95.7%:
| Browser | Count | Percentage |
|---|---|---|
| Firefox 3.0 | 59 | 92.4% |
| Firefox 3.5 | 68 | 95.7% |
| Opera 9.6 | 35 | 84.8% |
| IE 7 | 77 | 98.3% |
| IE 8 | 57 | 94.6% |
| Chrome | 39 | 91.6% |
The key change from the last release of the data is that I've got much more up-to-date figures for Internet population from InternetWorldStats (thanks very much to them). There are 28.5% more people on the net than in the last release of the statistics - an extra 300 million people. Almost every country's net population has gone up, but they've gone up by different amounts, and so that has had a knock-on effect on the relative importance of different languages, and of the percentages of the world covered. So, for example, Firefox 3.0 "dropped" more than one percentage point from 93.5% to 92.4%, despite still covering the same languages it always did! As more of the developing world comes online, the goalposts are moving :-)
The stats have their own page, where you can find the spreadsheet, FAQs and a more detailed explanation. A few noteworthy points:
- If you want a current browser in Esperanto, Welsh, Persian, Irish, Galician, Icelandic, Kurdish, Occitan, Romansh or Sinhala, Firefox is the only game in town.
- We are releasing 3.5 in Turkish despite the Turkish localizer breaking his leg. That's dedication.
- Axel says we are looking at taking a Malay localization from Ubuntu. That would be another 0.72%. Seth says Azerbaijani is in progress, and it could be that some friends of build engineer Ben Hearsum are looking at Tagalog. Exciting times :-)
June 29, 2009 06:28 PM
Gerv Status 2009-06-26
This Week
Governance
- Call with reed to gain lots of useful technical info about possible solutions to various governance questions
- Did groundwork necessary for mozilla.org/hacking/ to redirect to the Developer's Guide on MDC
- Wrote first draft of Committing Rules and Responsibilities and had it reviewed by bsmedberg
- Participated in discussions on moving weekly update meeting
Bugzilla
- Discussion has now been wrapped up or taken to email
- Triaged a few bugs filed against b.m.o. to get a feel for the space
- Need to do more work on the issues list
Other
- Tuesday off to finish moving house
- Wrapped up the Bugzilla 500,000 bug sweepstake
- Reviewed and commented on CSP spec
- Started work on talk for OpenTech 2009
- Updated credits.html with backlog of requests, in preparation for release
- Mentored SoC students
- Pedro is trying to grok liveHTTPheaders
- Seulki is working on a plan
Next Week
- Make sure sweepstake winners get their prizes
- Call with David to discuss our OSCON presentation
- Finish OpenTech presentation
June 29, 2009 06:18 PM
Asa Dotzler -- spirit and opportunity
I'm guessing that without mobility, they won't be able to get Spirit angled well for winter solar energy gathering and so Spirit probably won't survive this winter. Opportunity, unless something unforseen happens, should survive the winter and reach Endeavour crator in a little more than a year from now.
The engineering team that designed and built these robots really are to be congratulated. In an environment as hostile as Mars these two rovers have defied all the odds and delivered more science than anyone would have dared imagine.
If they are coming to their ends, it will absolutely be in triumph.
Still, I get a bit misty thinking about it.
June 29, 2009 02:44 AM
June 27, 2009
Stuart Parmenter -- New Fennec Releases

Welcome to the world both Fennec 1.0 Beta 2 for Maemo and Fennec 1.0 Alpha 2 for Windows Mobile.
In addition to Maemo and Windows Mobile builds, you can also download desktop builds for Windows, Mac, and Linux.
For these releases we have worked on improving the user experience, replacing our old theme with a much nicer looking one and fixing numerous usability issues. We’ve continued to increase performance and responsiveness. We’ve revamped how you install Add-ons, improved our download manager and the whole look of the application. We’ve started work on making forms on web pages easier to use, providing a nicer combo box UI than before.
Both of these builds are built on top of the same front end and back end codebases — their version differences are just to express their currently different usability levels.
We’re starting to see some very exciting Fennec Add-ons being built by the community, including things like GeoGuide which uses the new Location Aware APIs to show you things like maps and weather near where you currently are, and other things like GraffiTwit, a Twitter client that lets you not only write tweets but also post images you’ve drawn.
We’ll continue to polish the user experience and improve performance, and are already hard at work on some changes that will make big performance improvements.

June 27, 2009 02:00 AM
June 26, 2009
Asa Dotzler -- friday bunny blogging
Almost two years ago, our family grew by one -- a bunny named Munch.
He and the cat get along quite well, occasionally playing chase (Munch is the chaser and Ptolemy is the chasee.) Once we've finished moving into our new home, the family is going to expand again, possibly dramatically. Hopefully it will go as smoothly as it did when we added Munch.
June 26, 2009 09:08 PM
good news in korea
It's more than a month old, but this report is really encouraging.
Long ago, the Korean government mandated an ActiveX encryption scheme for all Korean secure transactions. This essentially locked out all not-IE browsers.
Because this requirement came early in Korea's adoption of the Internet, Korea has never had the multiple-browser culture that, in the West, persisted even after Netscape had been crushed by Microsoft. So, despite having an amazing infrastructure with 95% of the population connected via broadband and top of the line government and private sector services online, it's been an IE-only country with no other browser, not even Firefox, able to achieve any measurable share.
When I visited Korea a few years ago, I was surprised to learn how bad the problem was. I'd always assumed it was just a more extreme version of the "IE's got 95% of the market so everyone codes to it" problem we were all familiar with. It hadn't occurred to me that you simply couldn't do any online transactions if you weren't using IE. For all the brokenness of the Web in the years before Firefox, SSL was supported across browsers and platforms and while sites might have had display problems, and a few even blocking users, the technology didn't explicitly exclude Mozilla or other browsers.
There's just no where else in the world where things are this broken. I'm hopeful that with the Korean government taking the lead like this, and with Korea's top Web service providers like Daum committing to Web standards and cross-browser support, that things will start to turn around.
If we can get over this technical hurdle, we have an amazing Mozilla community in Korea with fantastic leadership that are poised and ready to take Firefox into the Korean mainstream in short order.
June 26, 2009 11:11 AM
June 25, 2009
Asa Dotzler -- tell me about your television
It's been about 6 months since we purchased the totally amazing Panasonic Viera TH-42PZ85U Plasma HDTV.
We really couldn't be any more pleased with this TV. Blu-ray movies from our PlayStation 3, TiVO HD, and both standard def and high def live television are just gorgeous.
As part of our move, we're looking for a small television for the kitchen. We expect to be watching television, and occasionally plugging the laptops in for Web browsing. The space is just perfect for a 26" television and even though I see some better deals in 32" TVs, I don't think we can squeeze in anything that large. We're also going to be viewing from pretty oblique angles at least some of the time so one of the newer IPS or S-PVA panels with the 170+° viewing angle would be good.
It doesn't look like you can get 1080p panels at this size unless you go to pretty expensive image and video professional LCD computer monitors (or maybe the LG 26LU55 that I can't find anywhere, perhaps not released yet?) so even though we're going to be up close and personal with this screen on occasion, it looks like we have to settle for 720p. It shouldn't be a problem with this small of a screen and a 4-5 foot viewing distance for most TV watching.
Our requirements, then, are 26", good off-angle viewing, D-sub PC input, 2 or more HDMI inputs, and maybe a swivel stand.
So, as with the previous purchase, I've read up at a lot of the online review sites, I've done my price watching, and I've narrowed it down to four that look pretty good.
The first TV we're looking at is the Panasonic VIERA TC-L26X1 26" LCD TV. This Panny has the right inputs but no swivel stand. One negative is that the side inputs are analog only and don't include one of the TV's two HDMI inputs. It does have an iPod dock and on-screen iPod controls, though I have no idea if we'd use that. I haven't seen this display in person, and while Panasonic doesn't list the wide viewing angle at their website, (and identifies the panel as VA,) several sites selling the TV do report a 178° viewing angle and even claim the IPS or IPS Alpha panel. I'm assuming that the retail sites are wrong and Panasonic's site is right. I'll have to confirm that in person. It sure would be nice if it did look good from oblique angles. I'm guessing it doesn't.
The second TV we're considering is the Samsung LN26B460 26" LCD TV. It has the HDMI and VGA inputs but no swivel stand. This TV gets solid reviews online -- especially high praise for it's color and excellent contrast in direct viewing, but it also appears to use the less good for off-angle viewing PVA panel rather than Samsung's S-PVA panel which is available in the larger screens. Once again, the 26" seems to get the short shaft. The side inputs and the "touch of color" are both nice and would work quite well in our kitchen.
Next up is the Sony BRAVIA KDL-26L5000 26" LCD TV. It's got the necessary inputs including a convenient side HDMI input but an inconvenient no-swivel stand. Sony doesn't disclose panel type, but given the advertised 176° viewing angle, I think this one is probably S-PVA. The aesthetics of this TV, though, are pretty bad. How anyone can call it stylish is beyond me. I'll have to take a look at this in person to see if the off-angle viewing really is that solid and to decide if I can live with a chunky ThinkPad-like design. A bonus feature with the Sony is PC picture in picture mode so you can surf the Web an watch TV at the same time. Might be cool.
The last TV on our list is the LG 26LH20 26" LCD TV. Like the others, it's got the inputs we need, but not the convenience of HDMI side input. LG claims 178° viewing angle on this one, and a pretty amazing contrast ratio so I think it's one of their newest S-IPS panels. It's also got something the others don't, a swivel stand. Solid off-angle viewing and a not too horrible looking bezel and stand, might just be enough for us.
So, the Sony and the LG will probably lead and unless we hear something really great about the Sammy or the Panny from one of you all, those probably won't make the cut.
Finally, maybe we'll just wait it out until someone starts shipping the LG 26LU55 which has a swivel stand, side inputs, great contrast, 1920x1080 resolution, and a fairly attractive design.
June 25, 2009 08:24 AM
June 24, 2009
Gervase Markham -- Improving Free Software Usability
mpt wrote an essay last year, "Why Free Software has poor usability, and how to improve it", which is a follow-up to his original, "Why Free Software usability tends to suck". The more diplomatic title is perhaps a reflection in microcosm of mpt's own personal journey ;-)
We are already doing some of the stuff he suggests, such as (by example) "establish[ing] a culture of simplicity" and using distributed version control. Is there more we can do? Some ideas:
- "Establish more and stronger incentives. For example, annual Free Software design awards". Could we run these, perhaps in collaboration with openusability.org (although it seems to have gone a bit quiet)? We are at the forefront of pulling together volunteer designers to work on free software with the Mozilla Creative Collective. Graphic design isn't usability, but it does show we are reaching out to non-traditional communities. Disadvantage: we wouldn't be able to win. ;-)
- "Develop and promote screen capture, video recording, and other software that makes tests easier to run". We have to figure out how to do user testing remotely. Is there any recording software out there that will record a user's desktop, and audio, and video from their webcam? All three are IMO necessary if you want to be able to review a usability test remotely. I can find software, like RecordMyDesktop, which will do desktop and audio, but no-one has added in webcam support yet. I guess this it outside the expertise of the Mozilla project, but hopefully someone else will read this and take the task on.
- Develop and promote VoIP, video chat, virtual whiteboard, sketching, and animation software that allows easier communication of design ideas over the Internet. There seems to be no web-standards-based virtual whiteboard software, and yet with <canvas> it should be easy. Anyone fancy knocking up a demo? You wouldn't even need to do conflict resolution - lines just overlay each other. Add the ability to import images (screenshots), join a phone conference, and you have a ready-made design space.
June 24, 2009 04:59 PM
Bugzilla 500,000 Bug Sweepstake Results
Milestone bugzilla.mozilla.org bug 500,000 was filed on 2009-06-23 at 11:06 ZST by long-time Mozilla contributor 'timeless'. Which makes it the third time he's filed a milestone bug. And we can see how he does it. :-)
The winner is Jean-Yves Perrier, who guessed 2009-06-28 11:32:26 - 5 days and 26 minutes out. It looks like the accuracy is decreasing - the 300,000 bug winner was less than 7 hours out, and the 400,000 bug winner was 1 day 15 hours out. It's getting easier to win! :-)
Jean-Yves writes:
I'm a tester of nightlies. I download them almost every day and use them for day browsing. I reported a couple of bugs, but not much. I also tried (on the french forum www.geckozone.org) to maintain a thread annoucing the main new stuff that land on the trunk, so that non-english speaker can follow the development.I was a long time user of Netscape (and Mosaic before). End of the 90s/early 2000s, after a brief period with Opera (not yet free as a beer) and with IE, I switched to Mozilla, then Firefox 1.0. One bug that drove me crazy while Firefox 1.5 was still in beta made me look at the development of Firefox and since then I switched to the nightlies (who got the patch :-) and sticked to them since then.
Jean-Yves wins a Firefox backpack. The two runners-up are Wladimir Palant (5d 13h 54m) and Phil Ringnalda (12d 20h 54m). They both win their choice of a t-shirt from the Mozilla store. Wladimir writes:
I am the developer of the Adblock Plus extension. I got involved with Mozilla in 2003 shortly after switching to Mozilla Suite - playing around with add-ons was just natural, it didn't take long for me to start fixing issues in the ones I used.
Phil writes:
I started triaging and offering occasionally-useful advice on livemark bugs in the summer of 2004, then noticed that there were lots of other bugs I could triage, then realized that if I wanted things fixed right I could just download the source and figure out how to patch things myself, then some time passed, and I somehow wound up a Thunderbird peer.
June 24, 2009 10:35 AM
Robert O'Callahan -- Native Widgets Begone
Recently I've been working removing the use of native widgets (Windows HWNDs, Cocoa NSViews, GdkWindows) in various places in Gecko. Native widgets get in the way of painting and event handling, and break things due to various platform limitations.
The key difficulty of getting rid of native widgets is ensuring we still handle windowed-mode plugins adequately. For example, currently if a windowed-mode plugin is contained in an overflow:auto element we rely on a native widget associated with the element to scroll and clip the plugin. In situations where we should clip but there is no native widget present, like 'clip' on an absolutely positioned element, we actually don't currently clip the plugin, which is pretty bad.
My new strategy for clipping plugins is to explicitly compute a clip region for each plugin and use native platform APIs to clip the plugin's widget to that region. On Windows we can use SetWindowRgn, on X we can use the XShape extension via gdk_window_shape_combine_region. On Mac we don't have to do either of these things, because plugins work a bit differently there. One issue of course is figuring out what the clip region should be. For that, I'm reusing our display list machinery. We build a display list for the region of the page that contains plugins, and then traverse the display list to locate each visible windowed-mode plugin --- its position, and what clipping is affecting it. Plugins that aren't in the display list aren't visible so we hide them. This works really well, and means that everywhere we clip Web content, plugins are automatically affected as well.
A nice bonus is that display lists contain information about which elements are opaque. We already have the ability to determine that part of an element is covered by opaque content and thus doesn't need to be drawn. We can leverage this for plugins too: areas of a plugin we know are covered by opaque content (e.g. a DIV with a solid background color) are clipped out. This means that all the crazy hacks people have been using to get content to appear above a windowed-mode plugin today (e.g., positioned overflow:auto elements and IFRAMEs) will no longer be needed with Gecko; you can just position a DIV or table with a solid background color. The hacks still work of course, as long as the hacked element has a solid background. (Credit where it's due: IIRC clipping holes for opaque Web content out of windowed plugins was first suggested by a KHTML developer long ago.)
This also fixes relative z-ordering of plugins with other plugins and Web content. We don't have to touch native widget z-ordering because windowed-mode plugins are opaque. So if plugin A is supposed to be drawn in front of plugin B, but its widget is behind plugin B's widget, then we effectively punch a hole in plugin B's widget so you can see plugin A through it. It sounds a little crazy but it works just fine.
Perhaps the greatest challenge here for us is getting scrolling to work smoothly on all platforms. In general we may have an IFRAME or overflow:auto element in the page, which contains one or more plugins which need to move smoothly with the scrolled content. A naive implementation would just bitblit the Web content and then move and clip the plugin widgets, creating a variety of exciting and unwanted visual artifacts. I designed a new cross-platform scrolling API which is quite rich; you pass in the rectangle you want to scroll, the amount you want to scroll it, and a list of commands to reconfigure child widgets that should be performed with the scroll "as atomically as possible". These commands let the caller change the position, size and clip region of some or all child widgets. This gives the platform-specific code great freedom to reorder operations. I described some of the implementation issues on X in a previous post.
I think I've got things working pretty well. My patches pass tests on all platforms on the try servers. There are 24 patches in my patch queue, many of them small preparatory cleanup patches. The big important patches enable region-based plugin clipping, modify a ton of code to remove the assumption that every document has a native widget as its root, actually remove the native widgets associated with content IFRAMEs, and remove the native widgets used for scrolling and implement the new scrolling system.
In order to not change too much at once, I've left some things undone. In particular "chrome documents" like the Firefox UI still use native widgets in quite a few places. There's a lot of followup simplifications that we can do, like eliminate the "MozDrawingArea" abstraction that we currently use to support guffaw scrolling. In fact, apart from fixing a ton of plugin and visual bugs, the main point of this work is to enable further changes.
For people who are interested, I've got some try-server builds available for testing. I'm particularly interested in IME and accessibility testing, since although the code passes tests I suspect external IME and AT code may be making assumptions about our native widget hierarchy that I'm breaking. General scrolling and plugin performance is also worth looking at.
June 24, 2009 10:30 AM
Whitespace Begone
I just landed on trunk a small improvement to page-load performance. Typical HTML documents contain a lot of markup like
<body>
<div>
<b>Hello World</b>
</div>
</body>
In the DOM, there are four text nodes which contain only whitespace. Up until now, in Gecko we created one "text frame" to render each text node. However, this is a waste, since whitespace-only text nodes before or after a block boundary don't affect the rendering; they are collapsed away (unless CSS white-space:pre or certain other unusual conditions apply).
So I did some measurements of our page-load-performance test suite (basically, versions of the front pages of popular Web sites) with an instrumented Gecko build to see how much could be saved if we avoid creating frames for those whitespace DOM nodes. It turns out that in those pages, 65% of all whitespace-only text frames were adjacent to a block boundary (i.e., the first child of a block, the last child of a block, or the next or previous sibling is not inline) and don't need a frame. That's 30% of all text frames, and 11% of all layout frames!
Actually suppressing the frames was pretty easy to implement --- it helped that Boris Zbarsky has recently done some magnificent hacking to make nsCSSFrameConstructor more sane. Handling dynamic changes correctly was a little tricky and actually took most of the development time. Our test suite, which is pretty huge now, caught some subtle bugs. But the patch is on trunk and seems to be a 1-2% improvement in average page load time. It's also a small reduction in memory usage. It also makes dumps of the layout frame tree much easier to read because a lot of pointless frames are gone.
What's probably more important than all that is that this makes it easier to separate our implementation of blocks into "blocks that contain only blocks" and "blocks (possibly anonymous) that contain only inlines" without regressing performance, because we won't have to create anonymous blocks just to contain irrelevant whitespace.
June 24, 2009 04:32 AM
Dan Mosedale -- Thunderbird review and submodules
We've talked about pursuing the benefits of specialization in the Thunderbird review ecosystem occasionally for a while now.
Over the last year or so, Andrew Sutherland has written lots of excellent, well-documented, well-tested code. It's been obvious to a number of us for a while that Andrew would make a fine reviewer and module owner and that the comm-central community has been missing out by not yet offering him the chance to apply his talents this way.
Recent landings have made it particularly clear that there are increasingly large areas of code in the tree that should be under his supervision: none of the rest of us know it as well as he does, nor do we have the same vision for how it should evolve.
So, in an overdue move, we've created several new modules. Under mailnews/:
- GloDa (the global message database
and under mail/:
- Message list (thread pane)
- Tab UI
The expectation is that where there aren't initially module peers, Andrew will add them as it becomes clear to him which people fit those roles best.
Thanks, Andrew, for the good work you've already done and for agreeing to help with module ownership and reviewing going forward!
In the bigger picture, there are more sub-modules that we can and will split out as time goes on, but these seemed like the most important ones to make happen now.
June 24, 2009 01:45 AM
June 23, 2009
SeaMonkey Team -- SeaMonkey 1.1.17 Released
Today, the SeaMonkey project released a new version of its all-in-one internet suite. SeaMonkey 1.1.17 closes several security vulnerabilities and fixes a few smaller problems found in previous versions.
SeaMonkey 1.1.17 is available for free download from the open source project's website at www.seamonkey-project.org.
Read the full article on the SeaMonkey news page.
June 23, 2009 02:05 AM
June 22, 2009
Robert O'Callahan -- DirectShow And Platform Media Frameworks
People keep asking why we don't integrate support for Windows' DirectShow into Firefox so the <video> element can play any media that the user has a DirectShow codec for. Even if a volunteer produces a patch, I would not want to ship it in Firefox in the near future; let me try to explain why.
- Probably most important: we want to focus our energy on promoting open unencumbered codecs at this time.
- Only a very small fraction of Windows users have a DirectShow codec for the most important encumbered codec, H.264. Windows 7 will be the first version of Windows to ship with H.264 by default. Even if millions of people have downloaded H.264 codecs themselves, that's a very small fraction of our users.
- DirectShow is underspecified and codecs are of highly variable quality. Many codecs probably will not work with Web sites that use all the rich APIs of <video>, and those bugs will be filed against us. We probably will not be able to fix them. (Note that the problem is bad enough that in Windows 7, Microsoft isn't even going to allow unknown third parties to install DirectShow codecs.) We could avoid some of this problem by white-listing codecs, but then a lot of the people who want DirectShow support wouldn't be satisfied.
- Many DirectShow codecs are actually malware. ("Download codec XYZ to play free porn!")
- DirectShow codecs are quite likely to have security holes. As those holes are uncovered, we will have to track the issues and often our only possible response will be to blacklist insecure codecs, since we can't fix them ourselves. If we blacklist enough codecs, DirectShow support becomes worthless.
- Each new video backend creates additional maintenance headaches as we evolve our internal video code.
So even if we didn't care about promoting unencumbered codecs and someone gave us a working patch, shipping DirectShow support in Firefox is of limited value and creates tons of maintenance work for us.
Some (but not all) of the same arguments apply to using Quicktime. But if we're going to ship our own video infrastructure for Windows, we save ourselves a lot of trouble by using that infrastructure across all platforms. It saves authors a lot of trouble too, due to less variability across Firefox versions.
Currently no browser or browser plugin vendor is using codec implementations they don't control. Apple does allow third-party codecs to be used with Quicktime in Safari --- but at least they control the framework and the important codecs, and apparently they have made some changes for Web video.
June 22, 2009 10:39 PM
Mike Morgan -- What’s New in Firefox 3.5?
There’s a lot of cool stuff! Watch Mike Beltzner’s video to learn more.
June 22, 2009 09:57 PM
Vladimir Vukicevic -- To Sprite Or Not To Sprite
CSS Sprites have been around for a while, and keep coming up as a way to get blazing fast speed to your site. Steve Souders just showed off SpriteMe! at Velocity '09 (speaking of — why use the CSS Sprite Generator or other server-based tools when you can use <canvas> and toDataURL and generate sprites on the fly?). However, there are a number of misconceptions about CSS Sprites, the main one being that they have no downsides.
The basic idea of CSS Sprites is to combine a number of images used on your site into a single image, thus reducing the number of HTTP requests that need to be made to your site. The image is rendered using a CSS background and background-position (which, incidentally, means that your markup becomes more complex; the image to use is specified in CSS, not in a plain <img> tag).
The biggest problem with CSS sprites is memory usage. Unless the sprite image is carefully constructed, you end up with incredible amounts of wasted space. My favourite example is from WHIT TV's web site, where this image is used as a sprite. Note that this is a 1299x15,000 PNG. It compresses quite well — the actual download size is around 26K — but browsers don't render compressed image data. When this image is downloaded and decompressed, it will use almost 75MB in memory (1299 * 15000 * 4). If the image didn't have any alpha transparency, this could be maybe optimized to 1299 * 15000 * 3, though often at the expense of rendering speed. Even then, we'd be talking about 55MB. The vast majority of this image is blank; there is nothing there, no useful content whatsoever. Just loading the main WHIT page will cause your browser's memory usage to go up by at least 75+MB, just due to that one image.
That's not the right tradeoff to make for a website.
Another (but much less important) downside is that if a sprite-using page is zoomed using the full-page zoom feature that's present in many browsers, the browser may need to do extra work to get the correct behaviour at the edges of these images — basically, to avoid adjacent images in the sprite from "leaking in." This isn't a problem for small images, but can be a performance hit for bigger ones.
There are cases where CSS sprites are clearly beneficial; the main example is combining a bunch of small similarily-sized images into a single one. For example, a bunch of 16x16 icons used as indicators for various things on your site, or a bunch of 32x32 icons used as category headers or similar. But combining images with vastly different dimensions, especially when there are skinny and tall images in the same sprite as wide and short ones is almost never a good idea.
However, sprites do improve page load time (at least initial page load — on subsequent page loads, the browser hopefully has the images cached). What's the alternative? Unfortunately, there isn't one, yet. Many browsers have support for offline manifests already; it might be possible to extend that to allow downloading one file (like a jar/zip file) that contains a manifest of resources and equivalent URLs that are contained inside it. But any such work won't show up on the web for some time yet.
So, when deciding whether to sprite or not to sprite, keep in mind that there are factors in play other than raw page load performance. As a general rule of thumb, if most of your sprite doesn't contain real image content, you should probably avoid using it. Also, keep an eye out for future solutions that will preserve both the page load speed, as well as avoiding the negative memory and performance impact of sprites.
June 22, 2009 08:14 PM
Gervase Markham -- Gerv Status 2009-06-18
I plan to post a status document like this each week from now on.
This Week
Governance
- Call with Mitchell and Mark on governance project
- Created list of priorities - first focus on things related to commit access, as people are already thinking about them
- Long call with reed about technical aspects of various issues
- Participated in discussions in mozilla.governance
Bugzilla
- Continued discussion, of which there was a lot - this occupied the bulk of the week
- Continued to update wiki page based on feedback
- Things seem to be simmering down now
Other
- Gave careers presentation at my old school - all Friday
- Mentored SoC student
Next Week
- Wrap up Bugzilla discussions and attempt to prioritize issues
- Make proposals on various governance issues to governance newsgroup
- Call with David to discuss our OSCON presentation
June 22, 2009 05:54 PM
The Problem With Newsgroups
I love newsgroups; I read the Mozilla discussion forums in that form, as it keeps everything together, it's threaded, and so on. But newsgroups are dropping out of use in favour of web-based forums. I wrote a while back expressing incredulity about this, and suggesting it was a case of "worse is better". But recently, I did come across this, which succinctly sums up some of the undeniable problems:
I and many others never were entirely happy with the newsgroup support for Logos software. It meant having to open up and set up Outlook Express (or some other news reader) and then plowing through the multitude of posts. The size of the newsgroup postings kept getting bigger, and if you deleted any thread, it would still come back to life in the ongoing responses to it. And if you deleted a thread and then wanted to find something in a deleted thread, it meant unsubscribing and resubscribing and then having the whole mess back on your computer. Another major problem for me was that I am regularly using two different computers, and that meant having to plow through the same stuff twice.So, I am happy to report that Logos has now started the Logos Bible Software Forums, a web-based, online discussion and support forum. The newsgroups will be allowed to continue, but they will eventually become irrelevant. (Material from the newsgroups will not be moved into the new forums.)
This is very good news, and in just a few days of being online, there is a ton of activity. ...
What changes could we make to Thunderbird's news support to mitigate some of these problems? Some suggestions:
- When you join a new group, it does not give you "the last 500 messages" to read, but e.g. all the messages in the most recent N threads
- Make the UI and capability for watching/ignoring threads more obvious (I only discovered it today, and I've been using Thunderbird for 9 years!)
- Weave support for cross-computer syncing of which messages have been read
What else?
June 22, 2009 02:48 PM
Asa Dotzler -- multi-process firefox demonstrated
Chris Jones has a demo video up showing some of the early progress that he, Ben Smedberg, Ben Turner, Boris Zbarsky, and Joe Drew are making on multi-process Firefox.
June 22, 2009 06:23 AM
June 21, 2009
Asa Dotzler -- browser memory usage
Firefox 3.5 dominates in memory efficiency. Average usage in this benchmark puts Firefox at more than 3x better than Chrome and about 2x more efficient than both Safari and Opera.
It's good to see that all that work we put in to improving memory usage during the 3.0 development cycle continues to pay dividends.
June 21, 2009 07:10 AM
June 20, 2009
Gervase Markham -- Linux's Hardware Support Better Than Windows?
You know, the old thing about Linux was that it didn't necessarily support your (new) hardware. Greg Kroah-Hartman has been trying to bust that myth with the Linux Driver Project for a while now. But recent events have proved beyond doubt that not only is he right, but installing and using new devices on Linux is now much easier than on Windows. In the last seven days, my Ubuntu 9.04 laptop encountered five new devices, and here's what happened:
- My uncle's camera, which he gave me to take a copy of the photos of a family wedding. I connected it via a USB cable, up popped a Nautilus window and I could drag and drop the photos off easily. On a Windows machine, I suspect I'd have needed a driver CD.
- My new Logitech Presenter (as recommended by gandalf). I plugged it into the laptop, and all the buttons just started working. Brilliant. By contrast, I plugged it into the Windows PC hardwired to the projector where I was doing a presentation, and I first got a "New hardware detected - what do you want to do?" dialog. I picked "find a driver" (well, duh) and then I got a "Enter admin password" prompt. Of course, I didn't know the admin password and so had to advance my presentation using the Page Down key. :-(
- T-Mobile Mobile Broadband. I bought a mobile broadband stick on a £2-a-day flat rate PAYG plan for occasional use when travelling on trains and also now, while I get internet in my new place set up properly. Plug it in, a wizard asks "Who is your provider?", pick T-Mobile and you are up and running. When, of course, you remember to switch back to Wifi, register on their website (they texted me a confirm code - doh! I had to put the SIM into my phone to get the text!) and add some credit :-) To be fair, the docs suggest it's this easy on Windows too, although it may require a reboot.
- HP Deskjet D1560 Printer. I had to print some forms for a training day on the printer the leaders had brought with them. Plugged it in, and it turned up in the evince print dialog without even needing to restart evince. Magic.
- Hauppage Win-TV Nova-T DVB stick. I bought this three years ago, but for the last two years we haven't had a TV licence, so I haven't been able to use it. Getting it working last time was an enormous hassle. Now, the kernel just recognizes it. Although actually getting to watch TV has, so far, been stymied by problems further up the software stack.
A pretty good record. I don't know if it's relevant that all the devices were USB. But what isn't, these days?
June 20, 2009 08:47 PM
Dan Mosedale -- Thunderbird: compact header moved out of core, prototype extension available
Because there's a fair amount of work that still needs attention from the core developers before we can ship Thunderbird 3, thunderbird-drivers have been thinking hard about how we can ship the best possible product in the shortest possible time. The attention of the core development team is already spread far too thin, and we're concerned about shipping an app that tries to do too many things, at the cost of all of them having too many bugs and not being polished enough.
As a result of this, and because the feedback related to the compact header was different than expected, we decided in bug 480623 that moving it out of core was a reasonable trade for winning some focus back. The patch landed this morning, so upcoming nightlies will no longer have the compact header.
First off, we understand that removing this from core is going to disappoint some people and apologize for that. That said, the fact that the core team doesn't have the bandwidth to maintain the compact header doesn't mean that other designers/developers shouldn't be able to continue to provide it if they so desire.
As part of the removal work, I factored the compact header code into a prototype extension. This turned out to be valuable, because without it, I wouldn't have known to add the extension hooks necessary for that to actually be possible. The code for this extension is available from a Mercurial repository. I do not have plans for further work on it, but if anyone reading this wants to move it forward, I'd suggest setting up a MozDev project and adding a comment here pointing to it so that other interested folks can join in.
This removal will free up bandwidth to focus on the remaining message header. Current plans (besides bugfixing) include (but are not necessarily limited to):
- work on squishing down vertical space requirements
- more extension point work (both documenting the changes and adding more extension points)
- investigate whether switching some of the nested es to s will fix some of the current bugs and make for more maintainable code
- investigate the right level of in-app customization to provide
I understand that riding out the development iterations of UI can be bumpy; I appreciate folks' patience.
(Note that I won't be around on the weekend to approve or reply to blog comments).
June 20, 2009 01:30 AM
June 18, 2009
Asa Dotzler -- new firefox logos
If you blog or write articles about Firefox and your blog or publication usually includes a Firefox logo with those stories, please take a moment to head over to the Mozilla Firefox Logos page and get updated artwork.
The Firefox logos and wordmark are available in in various sizes, with and without the shadow. Please help spread the word that with the release of Firefox 3.5, the previous two logos are deprecated and these new logos are available.
June 18, 2009 05:10 PM
June 17, 2009
Robert O'Callahan -- The Price Of Freedom
With the imminent release of Firefox 3.5 and the big step forward for unencumbered video and audio that this represents, there's been a lot of discussion about the merits of the free Ogg codecs vs the flagship encumbered codecs, especially H.264. Proponents of the encumbered codecs tend to focus on the technical advantages of patented techniques used in H.264 but not in Theora. But the real question that matters is this: at comparable bit rates, in real-world situations, do normal people perceive a significant quality advantage for H.264 over Theora? Because if they don't, theoretical technical advantages are worthless.
(It's not helpful to ask a video compression expert if they can see quality differences. Of course they can, they're trained to. That doesn't tell you what matters for the other 99.9999% of the population.)
One issue that has made a comparison difficult is that encoders are so tunable. People always say things like "oh, your H.264 would look much better if you set the J-frame quantization flux capacitor rank to 8". So Greg Maxwell had a stroke of genius and did a comparison using Youtube to do the encoding. Now, people who think the H.264 encoding is sub-par are placed in the difficult position of arguing that Youtube's engineers don't know how to encode H.264 properly.
In fact Youtube deliberately doesn't squeeze the most out of H.264 encoding. That's because in real life there are tradeoffs to consider beyond just quality and bit-rate, such as encoding cost and bit-rate smoothing. But that's fine, because these are the real-life situations we care about.
Maik Merten recently repeated Greg's experiment with different video in larger formats. In these tests, it seems pretty clear that there is no real advantage for H.264, or even that Theora is doing better.
We really need someone to do a scientific blind test with a wide pool of subjects and video clips (hello academic researchers!). But H.264 proponents have to demonstrate real-world advantages that justify surrendering software freedoms and submitting to MPEG-LA client and server license fees (not to mention the hassle of actually negotiating licenses and ensuring ongoing compliance).
June 17, 2009 11:21 PM
Vladimir Vukicevic -- Firefox Startup Wrangling
Shortly before our office move, we kicked off an effort to take a hard look at our startup time, to both understand what we all do, and to figure out how to improve it. zpao (Paul O'Shannessy), ddahl (David Dahl), and I have been working towards a few goals:
- Document how to reproducibly get a cold and warm startup on Windows (XP/Vista/7), MacOS X, and Linux
- Create tools to capture both JS execution during startup, as well as file IO
- Add instrumentation to firefox to identify "big blocks" of startup for timing
- Create tools to visualize the captured data in a way that's easy to analyze
One thing that's fairly obvious with playing with startup is that "warm" startup is significantly faster than "cold" startup; that is, when you've launched Firefox before, the OS caches a bunch of the data off the disk, and it doesn't have to hit the disk again. This directly points to IO being a major component of our startup time, which is why IO is part of the capture above. This is a pretty big problem even on desktop systems; on my fairly beefy Windows 7 box, a cold startup takes upwards of 12 seconds (!); warm startup is also fairly slow if the system is under load.
We've fixed some bugs in our dtrace javascript provider along the way (bug 403345), so dtrace will actually give correct (and sane) data now. Also, I've been doing a lot of work with Microsoft's xperf (part of the Windows Performance Toolkit), which can capture much the same data. (In theory we should be able to create JS providers for xperf as well, but that's out of scope for this particular project.)
One example of the type of data we're capturing and tools that we're building is available here — this is just a quick io capture with xperf, with the data dumped into a Timeline widget from the SIMILE project. (The time scales are a bit off; the raw data is in microseconds, but SIMILE only handles milliseconds... so all times need to be divided by 1000, which becomes a problem when you go over 60 seconds -- which is actually just 60 ms! Something that we'll fix.)
Another example is the result of a startup trace; zpao is still working on the visualization and data capture, but you can see an early version here — the "Exclusive function elapsed times" view will provide the most accurate data, basically telling you "how long did we spend in a given function, ignoring all descendants". In this view, the "null" filename dominates, generally indicating native code. And within that, calls to "getService" also dominate, which indicates that much of the time is spent within getService, presumably initializing whatever the requested service is.
In the future, we hope to have hierarchy correctly represented in the inclusive view, as well as adding IO operations as part of that hierarchy. Also, these tools aren't really limited to analyzing startup; they will hopefully form the basis of a set of javascript performance analysis tools that we can apply to any browser operation.
Besides IO and JS, Taras Glek found in earlier examinations of startup that loading CSS/XBL/etc. was taking a significant amount of time. We're working on instrumenting those parts of the code as well, so that we can capture it along with the raw js/io/etc. portions.
Is there any other data that we should be capturing? Let us know, and we'll see if we can figure out how to add it in. I'll keep posting updated data as we have it, and will probably create a web page to collect it all — at that point it'll be open season on any issues that can be identified.
Please direct comments followups to the dev.apps.firefox post.
June 17, 2009 07:58 PM
Gervase Markham -- Multiplying MUAs
There are a lot of mail user agents out there.
That list of MUAs is also a tribute to the dedication of the guy who maintains the Display Mail User Agent extension for Thunderbird. His current stats:
Current state of work is: 5936 listed headers, 3818 matched headers (13 FULL, 71 PRE, 3622 A-Z, 112 POST), 3818 headers with icon (64.3% done), 3727 headers with URL (62.8% done)
That is really quite something. The extension is very cool; if a friend or family member emails saying "this thing about my mail doesn't work", you don't have to go grovelling through their headers to see what MUA they are using. Also, if they are using Outlook or Outlook Express, you know they are on Windows, which helps.
(Don't go and try the addon out straight away if you are using Shredder, though - the reason I was investigating the website was that I was about to report a bug that the header pane disappears entirely on Shredder with the latest version of DispMUA.)
June 17, 2009 09:36 AM
Asa Dotzler -- where's the video, opera?!
One of the really exciting features coming up in Firefox 3.5 is Open Video. Open Video is a couple of things. First, it's the HTML 5 <video> tag which makes video a first-class citizen of the web -- an HTML element that works like other HTML elements and interacts with the DOM in Web-normal ways. The second part of Open Video is the open source and unencumbered video (and audio) codecs and containers.
Both of those are really important for the Open Web and while there's really strong agreement among the modern browser vendors, Mozilla, Apple, Google, and Opera, about the HTML <video> element and how it works, there's not yet agreement on the second part, the codecs and containers.
(To make this easier to understand, think of the HTML <IMG> element. It's what you use to put an image on a page. It's stylable and DOM-manipulatable, etc. Then there's the different image types you can use, like JPEG, GIF, PNG. Right now, we all agree that we want an <IMG> element and we agree on how it ought to behave as part of HTML, we don't, however, agree on which image formats should be used.)
Obviously Mozilla is going with the open source and patent unencumbered codecs and container format. That's Theora+Vorbis in an Ogg container. Apple favors using QuickTime and its various codecs. Google is embracing both open and not-open, with support for Theora and Vorbis in Ogg as well as H.264+AAC in an mp4 container. Opera, I'd understood from an Opera Labs build that Opera was going to support Theora+Vorbis in Ogg.
So, that's what I thought was the state of things.
Well, I just downloaded the latest Opera 10 test build, ID 6510, and there's no video support.
What gives, Opera? I've been bragging you up to the press and across all of my recent world travels saying that all of the "modern browsers" (Opera, Mozilla, Safari, and Chrome) were going to support HTML 5 video in their current or next release.
Now it looks like Opera's getting really close to a release and no sign of video. What gives? Don't make me a liar ;-)
Seriously, though. Is this gonna happen for Opera 10 or not? If not, why not? Does Opera not think that a unified front on this issue would be good for the Open Web? Has Opera changed its mind about video on the Web? Is it too "desktop" for a mobile-focused company? What's the deal, Opera?
June 17, 2009 06:11 AM
outsourced opera bashing
You knew it was coming ;-)
(I kid.)
I think that Chris is pretty much right here and where he's not is mostly unimportant.
I'll just add that my only wish for this project was that it was featured as a mobile-first effort where I think it would make a lot more sense to a lot more people. It's what they're best at, so I'm surprised that's not where the focus was.
June 17, 2009 04:59 AM
theora video vs. h264
Some of you may have seen some of this on Slashdot or elsewhere online, but I'll bet that many haven't and I think it's pretty important as we get ready to unleash <video> and our unencumbered audio and video codecs and the Ogg container format onto the Web.
Let me preface the links by noting that yes, there's still a long way to go before we can say that Open Video will succeed, but the pieces are coming together and at least some of the chicken-and-egg problems are starting to be solved.
I've been working with Mozilla's Open Video technologies (including the Ogg container format, Theora video encoding, Vorbis audio, and the HTML 5 <video> and <audio> tags and their respective DOM APIs) for about 10 months and I've watched not only Firefox's implementations improve, but also the tools and the codecs themselves making great progress.
Firefox now has a pretty nice set of audio and video controls that are certainly ready for an initial launch. The DOM APIs, while not complete, are good enough that we built our browser controls using them and people are able to do some pretty cool demos and even final implementations with them. The Xiph QT Component, a tool that brings Ogg/Theora+Vorbis to QuickTime-capable apps has just had another release that brings it up to speed with the Theora 1.0 release and fixes some key bugs. (And another release is expected soon.) Theora 1.1 alpha 2 has made some really big gains for video encoding quality.
And, we're about to ship these capabilities to 300 million Internet users.
So, what about quality. First, it's important to note that when we talk about video on the Web, quality has to be paired with size. So, what kind of quality can you get from Theora in a comparable file size to H.264 -- the latest and greatest of the not-Open video codecs.
In recent days, Greg Maxwell and Maik Merten have both put up some real-world comparisons that go beyond the geeky sort of synthetic and objective benchmarks that made the rounds last month.
Greg's comparison is here and I think it makes a pretty good case that Theora+Vorbis is solidly ahead of YouTube's H.263(Sorensen Spark)+MP3 and quite competitive with YouTube's high quality H.264+AAC at resolutions of 400x226 and 480x270 respectively.
I'm a stickler for audio and video quality and even have some formal background in both and I can certainly see some differences.
I think that Theora+Vorbis absolutely trounces H.263+MP3 and I don't think there's even a question of which kind of artifacts you prefer. Theora+Vorbis is just plain better than the majority of what YouTube and many other Flash video sites have been serving to users for years.
When it comes to the H.264+AAC comparison, I think things are a lot closer and I personally prefer the H.264 video. (I couldn't pick a winner in audio but perhaps if I had a better pair of headphones...) The H.264 video isn't miles ahead though and I'd wager that most people, and this is supported by a few folks I've asked to look at it, either won't see a difference or if they do see a slight difference aren't bothered by it.
Not satisfied with those two rather low resolution video comparisons, Maik just posted a comparison at 1280x720 and the results are also quite positive for Theora+Vorbis.
Watching these two videos it really does seem to me like I'm asked to pick which kind of artifacts are least bad. Both videos have issues that bother me and the Theora version doesn't have quite the color saturation and contrast balance of the H.264 version but they're really not that far apart. Overall, I think I again prefer the H.264 version but only barely and the truth is I pay a lot more attention to the subtle differences than most Web users and even many content producers.
Oh, and one final closing thought. The Theora encoder is getting better every day and by the time we've rolled out Open Video to 300-400 million Web users (say, end of the year-ish when most of the Firefox user base will have completed the upgrade to 3.5) I think we're going to have a Theora encoder that will match H.264 for Web content in the eyes of 99.9% of the Web population.
June 17, 2009 04:18 AM
June 16, 2009
Asa Dotzler -- extend firefox some more
For the last several years, Mozilla has sponsored a contest for add-on developers called Extend Firefox. This year's contest promises to be really exciting and includes some great prizes.
If you're an add-on developer, or you're interested in becoming one, this is a great opportunity to get involved. Fame, fortune, and 300 million Firefox users await you!
June 16, 2009 05:59 PM
Boris Zbarsky -- Lessons (re)learned today, and performance
Lesson relearned: working on airplanes is very productive. I chalk it up to the lack of IRC and e-mail.
Lesson learned: working on performance bugs drains your battery very quickly. This is because the work largely consists of compiling, running the performance testcases, running the profiler, and then compiling some more. These are all rather CPU-intensive activities.
I spent my flight this morning finally digging into something that's bothered me for years: the performance of setting inline style. I focused specifically on the setting, not the things we have to do lazily (restyling, reflow, etc) to handle the sets; even that part was making up something like 20% of the time on some testcases.
The first step was to write a microbenchmark for setting style.top (which is the same code as setting style.left, so I figured I'd just profile one of them). On this microbenchmark, on my machine, we were taking somewhere around 400ms on each part on a current m-c build. Looking at the profile, the usual culprits jumped out at me. Speeding up parsing of numbers in CSS got me into something like the 350ms range. Creating a fast path for modifying a single non-important already-set style property via inline style put me into about the 250ms range.
At this point, looking at the profile, I realized that about half the time was being spent in the JS engine, not in the DOM/style code. I figured this was due to us not tracing DOM setters yet, but the fact that we were hitting the resolve hook all the time and filling the property cache a lot looked suspicious. Eventually, I decided that this looks like a possible bug in the JS property cache. I tried a hack to make us hit when we're missing right now, and times dropped to about 110ms. I'm not sure that's where we'll end up, because I'm not sure that the property cache is really misbehaving here, but it looked pretty encouraging!
All of which raises the question of what this means for "real" performance. As an example, on the testcase in bug 229391, on which inline style sets had shown up in profiles before, times look about like this:
- mozilla-central: 2850ms total, 1270ms in loop.
- With CSS parser patches: 2200ms total, 900ms in loop.
- With my totally-unsafe propcache hack: 2100ms, 830ms in loop.
Tracing setters might also help some; it's hard to tell.
There's more obvious work that would help these pages (e.g. David Baron's proposal to not rerun selector matching on inline style sets, or what looks like a Mac painting/invalidation issue that I'm still investigating), so I hope that Gecko 1.9.2 will be a good bit faster on this sort of thing than Gecko 1.9.1.
June 16, 2009 05:27 AM
Asa Dotzler -- browsing doesn't change as fast as i think you think it does
Lots of things change really fast on the Web. The phrase "Internet time" has often been used to describe the way things actually do move faster on the Internet.
I remember how quickly Google displaced MetaCrawler as my go-to search service. I remember MySpace just blowing Friendster out of the water. TechCrunch obsoleted c|net almost overnight.
On the Internet, we'd like to believe, if a better product comes out, people move to it quickly.
But some things we associate with the Internet don't change fast. One of those things is browsers. Why is that? What's making it so difficult for superior products to leap frog each other the way so many other Internet products do.
Microsoft's Internet Explorer browser accounted for ~95% of the global browser usage in 2004 when Firefox first burst onto the scene. In the five years that Firefox has been taking share from IE, it's only managed to siphon off about 22 points of share from IE. For the first two of those years, without any effort at all from Microsoft. That's 4-5 points of share per year.
That's not the rate of change that I think people think of when they talk about Internet time.
Another example is Apple's Safari browser on Macintosh. Apple's bundling of Safari caused it to very quickly become the dominant Mac browser. In the four and a half years since we shipped Firefox 1.0 for Mac, we've managed to siphon off about 27 points of share from Safari, but Safari still sits with a comfortable 72% of Mac browser usage.
On both Windows and Mac, the OS vendor bundles a browser and taking browser usage share from those is very difficult. No one, other than Mozilla, has been able to put a substantial dent in the share of those two bundled browsers.
(What's also really interesting to me is that Firefox has done better on Mac where it has had a much more capable competitor in Safari.)
One of the reasons that no one is able to seriously dent Microsoft and Apple's browser share is that those two OS vendors ship their OS and their bundled browser on about 300 million new PCs every year.
By my estimates, about 100 million of those are new computer users (and new browser users) and the other 200 million of those are upgrades.
For the 100 million or so people getting PCs and going on line for the first time each year, the OS vendors have first crack. They are the default and the initial experience. If it's "good enough" then inertia wins and the OS vendor gets that browser growth essentially for free, piggybacking on the overall growth of PCs.
That's how I explain, because I can't think of any better explanation, Microsoft adding ~300 million IE users to its roster between the release of IE 6 in August of 2001 when development on IE was ended and the release of IE 7 in October of 2006.
(How many other products that we think of as Internet products can go 5 years without significant improvement and still add 300 million new users.)
Sure, there wasn't a lot of competition from 2002 to 2004, but even if you just look at the years 2004 through 2007, when there was substantial competition and nothing at all new from Microsoft, they still gained more than 100 million new IE users.
And I think it's actually worse than that. If you look at the 200 million new PCs sold each year that are upgrades, they all come with the the OS vendor's Web browser as the default browser regardless of what browser the user had on her previous machine.
That gives the OS vendor the opportunity to re-convert any Firefox (or other not-the-vendor browsers) users at zero cost.
So, even if Mozilla or Google or Opera managed to get a PC user to switch there's a very good chance that in the not too distant future Microsoft or Apple will at least temporarily regain that user's default browser status and another shot at being just "good enough" for inertia to work for them again -- all this without having to do anything to actually make their browser better.
(I'm not saying they don't improve their browsers, though there was that long IE dry spell there...)
This is a huge advantage for OS bundled browsers and something that is very different from most of the rest of the Internet. It's also something that I don't think many people think about when they think about browsers and competition between browsers.
I'm asserting that OS vendors can and do highly leverage the OEM channel for their browsers, both for new users coming online and for seasoned users upgrading, is the single biggest reason that Web browsers aren't evolving and replacing each other on "Internet time".
What do you think?
June 16, 2009 01:02 AM
June 15, 2009
Gervase Markham -- Honest Software?
In the past, Mozilla has tried to make the concept of open source more understandable using the term "100% organic software" (although we don't seem to have been using it recently). I just noticed that OpenOffice.org use "honest software":
Honest softwareOpenOffice.org 3 is developed using an open-software, "no secrets" approach. Anyone can look at the programs and suggest improvements, or fix bugs. Anyone can report problems or request enhancements, and anyone can see the response from other users or developers. The status of current and future releases is displayed on a public wiki, so you can decide if and when you want to upgrade to take advantage of new features. Anyone used to commercial software and its hyping and marketing speak will find OpenOffice.org 3 refreshingly different. Enjoy the benefits of open-source!
It's an interesting take. But I think that, although "open source" has some disadvantages, they are negated by the fact that if you use that term, all the open source communities are then talking about and promoting the same thing. If everyone has a different way of trying to explain it better, we'll just end up confusing people.
The same logic, of course, could have been applied to avoid the creation of the "open source" term altogether. Although that does have the advantage of being much more easily searchable-for on the web than "free software", at least in English where "free" is ambiguous.
June 15, 2009 09:08 AM
Robert O'Callahan -- Stupid X Tricks
Platforms like X and Win32 support trees of native windows. For example, an application might have a "top-level" window containing child windows representing controls such as buttons. In browsers, child windows are required for many kinds of plugins (e.g., most uses of Flash). Managing these child windows is quite tricky; they add performance overhead and the native platform's support for event handling, z-ordering, clipping, graphical effects, etc, often is not a good match for the behaviours required for Web content, especially as the Web platform evolves. So I'm working hard to get rid of the use of child windows and I've made a lot of progress --- more about that later. However, we're stuck with using child windows for plugins, and recently I've been grappling with one of the hardest problems involving child windows: scrolling.
It's very hard to make scrolling smooth in the presence of child windows for plugins, when all other child windows have been eliminated. In general you want to scroll (using accelerated blitting) some sub-rectangle of the document's window (e.g., an overflow:auto element), and some of the plugin windows will move while others won't. You may want to change the clip region of some of the plugins to reflect the fact that they're being clipped to the bounds of the overflow:auto element. The big problem is that to avoid flicker you want to move the widgets, change their clip regions, and blit the contents of the scrolled area in one atomic operation. If these things happen separately the window is likely to display artifacts as it passes through undesired intermediate states. For example, if you blit the scrolled area first, then move the plugins, the plugin will appear to slightly lag behind as you scroll the window.
On Windows, ScrollWindowEx with the SW_SCROLLCHILDREN flag gets you a long way. But on X, the situation is dire. X simply has no API to scroll the contents of a window including child windows! Toolkits like GTK resort to heroic efforts such as guffaw scrolling to achieve the effect, but those techniques don't let you scroll a sub-rectangle of a window, only the entire window. So for Gecko I have had to come up with something new.
Basically I want to use XCopyArea and have it copy the contents of the window *and* the contents of some of the child windows in the scrolled area, and then move the child windows into their new locations and change their clip regions (I'm using XShape for this) without doing any extra repainting. I tried a few things that didn't work, before I hit a solution:
- Hide (unmap) all child windows that are going to be moved during the scroll operation
- Do the XCopyArea
- Set the clip region and position of all relevant child windows
- Show (map) all child windows that we hid in step 1
By hiding the child windows during the XCopyArea, we trick the X server into treating the pixels currently on-screen for them as part of the parent window, so they are copied. By moving and setting the clip region while each child window is hidden, we also avoid artifacts due to a child window briefly appearing outside the area it's supposed to be clipped to. It *does* mean that when we scroll a window containing plugins, expose events are generated to repaint the contents of the plugins' child windows, so scrolling is slower than it could be. We might be able to avoid that by enabling backing store for the plugin windows.
It's somewhat tricky to implement this. We have to compute the desired child window locations and clip regions, store the results in a collection, and pass that collection into our platform window abstraction's Scroll() API so that the scrolling and widget configuration can happen as a unified operation. But I've done it, and it works great on my Ubuntu VM. I'm not 100% sure that it will work well on all X servers and configurations; that's something we'll need to get good testing of.
I do wonder why X has never felt the need to grow a genuinely useful scrolling API. Oh well.
June 15, 2009 02:12 AM
June 14, 2009
Asa Dotzler -- amazon, have you no pride?
Today, while adding some albums to my music collection I ran across an album that wasn't available to US customers of the iTunes store (no idea why) so I headed over to Amazon.com to check out their service and see if they had the album.
I was in luck. Amazon had the album and they even had a decent little helper app that gives download progress and automatically adds new music to the users's iTunes library. Nice stuff.
But.

How did they let that ship with those horrible button images? It's really not that hard to anti-alias your artwork against the toolbar background color before plugging it into an app. Even better, use an alpha PNG image.
I know it's not a major issue, and it didn't impede my getting the music, but I was having such a nice experience with purchasing music at Amazon for the first time and now I think "these guys are sloppy or just don't care." That's not the impression you want to leave with a new customer.
If there's someone at Amazon reading who knows where to send this complaint, please do. Hell, I'll even clean up the images for you. It's not rocket science.
June 14, 2009 07:23 PM
firefox browsing tip
In the last couple of weeks I've had at least three people surprised to learn that Firefox's page zoom feature will happily zoom video content (yes, even Flash video). If you're n a page with a video and you'd like the video to be larger but not so large as full-screen, then just hit control + on your keyboard to zoom in on things. To return to the default zoom level, hit control 0. (If you're on a Mac, use command rather than control.)
Got any tips that you've been surprised to learn your friends or colleagues hadn't already learned? Share them here.
June 14, 2009 04:32 AM
June 13, 2009
Asa Dotzler -- how's that 11 million downloads workin' for you, apple?
As I mentioned yesterday, Apple's PR team announced that Safari 4 had been downloaded 11 million times!!! just three days after the release. Even more exciting, they suggested, 6 million !!! of those downloads came from Windows users.
I'm not the first to suggest that most of those downloads probably were not actually users seeking out Safari 4 but rather were users receiving and accepting the automatic update from Mac or from the Apple Update Service on Windows. (This service is installed on every Window machine where users have installed either iTunes or QuickTime.)
Still, 11 million total downloads in three days and 6 million downloads on Windows sounds really quite impressive. But what does it actually mean? That's hard to say unless you know whether or not the downloads are 1) unique, 2) new downloaders, 3) updates from beta, or 4) updates from previous major releases.
Since Apple isn't disclosing any of that, I thought I'd do some investigation and see what can be learned from looking at the last few days of browser usage stats.

This graph charts the daily usage changes for the Windows versions of Safari. You can see the fluctuation from weekdays to weekends in both the individual version trends and in the combined trend.
note: This does not represent increased usage of Safari on weekends. The number of users and amount of usage of all browsers falls on weekends. IE 6 falls dramatically more on weekends than any other browser and so the relative share of all the not-IE 6 browsers goes up on weekends.
I've added a trendline for the combined version plot so you can see the overall direction that WIndows Safari is headed. What you can see from the chart is that Windows Safari usage is mostly flat at just under half of one percent of total Web usage. (More precisely, 0.45%)
Windows Safari 4.0 beta usage had already slightly surpassed Windows Safari 3.2 usage but with the release of Windows Safari 4.0 final, you can see a hefty drop in Windows Safari 3.2 and an equal rise in Windows Safari 4.0 usage.
Still, the top line is damn flat given Apple's claims which seem intended to suggest that millions of new Windows users are flocking to Windows Safari with the release of version 4.0.
(data from Net Applications)
June 13, 2009 06:24 PM
June 12, 2009
Asa Dotzler -- 11 million downloads in 3 days
I just read that Apple is reporting 11 million Safari 4 downloads in just three days. That's pretty amazing.
I'd like to follow up that report with one of my own.
Firefox 3.0.11 was downloaded about 150 million times in the last 24 hours.
June 12, 2009 07:57 PM
Gervase Markham -- bugzilla.mozilla.org Improvements - Requirements Gathering
I have just kicked off the requirements gathering process for the b.m.o. improvements I am hoping to make, with a post in mozilla.dev.planning (Google Groups link). Do head over there and let me know what b.m.o. changes would make your life easier.
June 12, 2009 11:35 AM
June 11, 2009
Dan Mosedale -- Improving the generativity of Thunderbird's add-on platform: jQuery and Protovis
Since its inception, Thunderbird has offered the ability for developers to write add-ons. In Thunderbird 3, we're adding a new database layer that will allow extensions to easily do more powerful and performant queries on your data. This will add to the system's generativity, and by taking another step in that direction, we can level up even further.
We can do better by providing powerful building blocks that Thunderbird-as-platform doesn't offer today. Making it easy to render visualizations will encourage developers to explore ways to give people insight into their messages, conversations, and usage patterns. Having access to the sorts of animations and effects that make for richer and more intuitive interactions will make Thunderbird and its add-ons easier and more fun to use.
We can do more by attracting the talents of new developers, and by making our platform easier and more enjoyable to code for. The largest pool of developers that we can hope to draw interested hackers from is the reservoir of web developers, and one thing that we'll need to do to that end is to make our platform more comfortable to them.
Given that the folks working on Thunderbird today already have a very full plate, this isn't something we can hope to do by developing new code. However, by taking advantage of good, appropriate open-source solutions, these are achievable goals for Thunderbird 3. In particular, bug 494962 has had substantial discussion around:
* Shipping jQuery
In addition to making a large group of web developers feel at home, this also will make it easier for current developers to implement UI in HTML when that's more appropriate. While jQuery is primarily written for use around HTML, some (most?) of the utility functions for working with the DOM and CSS are not HTML-specific. With luck, this should allow us to get rid of a non-trivial number of hacks in the front-end code that are either one-offs or are insufficiently maintained/tested/optimized/generalized due to lack of bandwidth.
* Shipping parts of jQuery UI
jQuery UI provides a set of capabilities that enrich the baseline jQuery. Not all of jQuery UI is as applicable to Thunderbird, though, so we're only thinking about including the most often used and appropriate bits of jQuery, such as animation effects.
* Shipping the Protovis SVG visualization toolkit
We're already using the Protovis visualization toolkit in some of our planned feature work, and it's a powerful framework for add-on developers to build interactive visualizations that are based on open web technology.
David Bienvenu and I have, wearing our module owner hats, agreed that this makes a tremendous amount of sense, so we'd like to see it happen. There's a bunch still to be done before this is truly nailed down (there are a number of discussions we'd like to have around various logistical ramifications). In the bug, DavidA links to a few wiki pages that track this work.
Next steps:
- DavidA to drive protovis into the tree by working through the tasks on that wiki page (hopefully for b3)
- dmose to drive jQuery/jQuery UI in (for b4)
Folks are encouraged to followup to this post freely. If, however, you wish to comment in the bug itself, please only do so if you've read the entire thing and have something new to contribute.
June 11, 2009 10:23 PM
Gervase Markham -- New SOW
My contract with the Mozilla Foundation has an appendix called a Schedule of Work (SOW), which outlines at a high level my official job responsibilities, and which is renewed every so often. Although I have taken to saying, when asked, that my job is so eclectic that it defies description, "do whatever looks interesting and useful" is sadly not considered specific enough :-) Therefore, Mark Surman, the MoFo Executive Director, and I have just agreed a new SOW for me, and I'm posting an annotated version of it here so people can see the larger projects I'm going to be working on over the next few months.
Work with the whole Mozilla community to resolve outstanding module ownership, community renewal and other project governance issues. This will involve identifying topics (e.g. from the governance newsgroup), interacting with current opinions, building consensus and, where necessary, creating effective systems to implement decisions.
There are a number of open issues in this area - e.g. d

