Activate your free membership today | Log-in

Friday, April 11th, 2008

Mozilla Fennec: The mobile browser wars

Category: Browsers, Firefox, Mobile

IE may be the dominant browser on the desktop, but the mobile wars are going strong. WebKit, Opera, and Pocket IE have a lot of users, but Mozilla has been a little weak in the past.

Now though, they have a new Fennec browser that takes the great performance gains in Firefox 3, and makes a mobile oriented version.

Sullivan explained that the Fennec project aims to bring the desktop Firefox user experience to handheld devices but will focus on meeting the unique requirements of mobile computing users. “Our goal on mobile is to embody the principles that have made Firefox so successful on the desktop, but with the recognition that mobile is different—not so much in that it presents some constraints, but in that it enables new types of experiences, and people’s interaction with these devices are different than when they’re sitting at their desks,” he says. “Web compatibility, security, performance, support for rich internet apps will all be key.”

I have been curious how it can scale down, just due to the XUL overhead, but it works great.

Much of the Firefox user interface is constructed with XUL, an XML-based user interface description language. This makes Firefox very easy to customize and extend. Mozilla hopes to leverage this advantage to encourage experimentation with new mobile user interface concepts. Developers can augment or reinvent the Fennec user interface by modifying the browser.xul file in the Fennec chrome directory and the associated browser.css file. Additional functionality can be implemented in JavaScript by modifying the browser.js file. Fennec will eventually support a complete extension system like Firefox 3 that developers will be able to use for modifying the browser’s behavior and user interface.

“Another exciting thing is that we’re providing full support for add-ons,” Sullivan notes. “These will fall into three buckets: most add-ons will just work out of the box; some won’t make much sense away from a PC; and a whole new class will be created that are going to be new for mobile.”

There are other aspects of the Mozilla Mobile initiative that will appeal to developers as well. Mobile software development is hard, and Mozilla could potentially offer a novel approach to simplifying the process. The underlying XUL technology on which the Firefox interface is built can be used independently with a XULRunner runtime to create platform-neutral mobile applications with XML and JavaScript.

Posted by Dion Almaer at 7:16 am
Comment here

++++-
4.5 rating from 16 votes

Monday, April 7th, 2008

window.crypto: want crypto primitives in the browser? You may already have it

Category: Browsers, Firefox, Security

Enigma Machine

It seems to make sense to add crypto helpers to the browser, for use by us, the humble JavaScript developer. I have called out to this in the past and people bring it up often on various lists.

Brad Neuberg found that Gecko actually has built-in crypt primitives via window.crypto!

Mozilla defines a special JavaScript object to allow web pages access to certain cryptographic related services. These services are a balance between the functionality web pages need, and the requirement to protect users from malicious web sites. Most of these services are available via the JavaScript window object as window.crypto. For instance, to obtain a ten byte random number using the cryptographic engine, simply call:

JAVASCRIPT:
  1.  
  2. var myrandom = window.crypto.random(10);
  3.  

Services are provided to enable: smart card events, generating certificate requests, importing user certs, generating random numbers, logging out of your tokens, and signing text.

Posted by Dion Almaer at 7:21 am
2 Comments

++---
2.9 rating from 12 votes

Thursday, April 3rd, 2008

Browser Update: Firefox 3b5 and Opera Mini 4.1 beta

Category: Firefox, Mobile, Opera

We have a couple of browser updates. First, we have Firefox 3 beta 5 which has improved integration with the host system, a better places organizer, and a bump:

Speed improvements to our JavaScript engine as well as profile guided optimizations have resulted in continued improvements in performance. Compared to Firefox 2, web applications like Google Mail and Zoho Office run twice as fast in Firefox 3 Beta 5, and the popular SunSpider test from Apple shows improvements over previous releases.

Opera also released a new browser with their Opera Mini 4.1 beta. The improvements talk about "faster" a lot: performance, finding things faster, and URL completion magic. This latest mobile browser also supports JSR-75:

JSR-75 is a specification for Java applications such as Opera Mini to access device internal storage and functionality within the phone. Some of Opera Mini features like "Save Pages" and "Download/Upload Files" vary on how much JSR-75 that is supported by the phone.

Posted by Dion Almaer at 1:57 am
4 Comments

+++--
3.9 rating from 17 votes

Monday, March 31st, 2008

Happy 10 Year Birthday Mozilla

Category: Browsers, Firefox

Mozilla turns 10

Ten years ago today, the code dropped from Netscape to the Mozilla project. Mitchell Baker has written up her thoughts as she looks back the last 10 years, and tries to look at the future.

People are celebrating too. Air Mozilla will have a live show with host Asa Dotzler, and guests Mitchell Baker, Brendan Eich, Mike Shaver, and Chris Hofmann.

And then we have jwz. Now the original Internet Web Site of the Mosaic Communications Corporation, is now back online, and he has fun stories of what he had to do to get it working with the old browsers.

In order to make these web sites work in the old browsers, it was necessary to host them specially. In this modern world, a single server will typically host multiple web sites from a single IP address. This works because modern web browsers send a "Host" header saying which site they're actually looking for. Old web browsers didn't do that: if you wanted to host a dozen sites on a single server, that server had to have a dozen IP addresses, one for each site. So these sites have dedicated addresses!

The web server also had to be configured to not send a "charset" parameter on the "Content-Type" header, because the old browsers didn't know what to make of that.

Do you remember why home1.mcom.com through home32.mcom.com exist?

home1.mcom.com through home32.mcom.com exist because the early browsers did client-side load-balancing: the browser itself had a special case where if it was loading "home.mcom.com" it would actually pick a random number from 1 to 32 and instead load "homeN.mcom.com"! Those were physically different servers in the Netscape data center.

Do you remember the behavioral difference the browsers exhibited when they were talking to a Netscape web server?

When loading pages from a Netscape server, the caption next to the URL field in the browser would change from "Location" to "Netsite".

Congrats to all of the open source hackers who have made "Mozilla" successful.

Posted by Dion Almaer at 12:41 pm
1 Comment

++++-
4.5 rating from 16 votes

Help Debug Firebug

Category: Firefox, Debugging

There are some bleeding edge releases in the world of the Firebug.

A new alpha version of Firebug 1.2 is available for testing. It has several performance improvements, and some new UI. Give it a go and report any issues.

Also, ChromeBug takes Firebug into the world of debugging full Firefox extensions. It depends on the alpha of Firebug 1.2 and once installed you can boot it up via:

firefox.exe -chrome chrome://chromebug/content/chromebug.xul -firefox

Posted by Dion Almaer at 6:01 am
2 Comments

++++-
4.6 rating from 21 votes

Thursday, March 13th, 2008

Firefox 3 Memory Usage

Category: Firefox, Performance

Stuart Parmenter has been blogging about his work on memory usage and various malloc() libraries and their tradeoffs.

In his latest, he talks about the memory usage in Firefox 3 today and the work that he has done:

  • Reduced Memory fragmentation: One of the things we did to help was to minimize the number of total allocations we did, to avoid unnecessarily churning memory. We’ve managed to reduce allocations in almost all areas of our code base.
  • Fixed cycles with the Cycle collector: For Gecko 1.9, we’ve implemented an automated cycle collector that can recognize cycles in the in-memory object graph and break them automatically.
  • Tuned our caches: In many cases we’ve added expiration policies to our caches which give performance benefits in the most important cases, but don’t eat up memory forever. We now expire cached documents in the back/forward cache after 30 minutes since you likely won’t be going back to them anytime soon. We have timer based font caches as well as caches of computed text metrics that are very short lived.
  • Adjusted how we store image data: In Firefox 3, thanks to some work by Federico Mena-Quintero (of GNOME fame), we now throw away the uncompressed data after it hasn’t been used for a short while. Another fantastic change from Alfred Kayser changed the way we store animated GIFs so that they take up a lot less memory. We now store the animated frames as 8bit data along with a palette rather than storing them as 32 bits per pixel.

What about the tests?

For the results below we loaded 29 different web pages through 30 windows over 11 cycles (319 total page loads), always opening a new window for each page load (closing the oldest window alive once we hit 30 windows). At the end we close all the windows but one and let the browser sit for a few minutes so see if they will reclaim memory, clear short-term caches, etc. There is a 3 second delay between page loads to try and get all the browsers to take the same amount of time.

Great work guys, and thanks for talking to us about how you are doing this work!

Posted by Dion Almaer at 8:41 am
7 Comments

++++-
4.5 rating from 57 votes

Tuesday, March 11th, 2008

Firefox 3 beta 4: postMessage and perf

Category: Browsers, Firefox

Mozilla has released Firefox 3 beta 4 which includes new standards support and performance:

  • Improved platform features such as: support for HTML5’s window.postMessage and window.messageEvent, JavaScript 1.8 improvements, and offline data storage for web applications.
  • Performance improvements: changes to our JavaScript engine as well as profile guided optimization resulted in significant gains over previous releases in the popular SunSpider test from Apple, web applications like Google Mail and Zoho Office run much faster, and continued improvements to memory usage drastically reduce the amount of memory consumed over long web browsing sessions.

There is news on the Firefox 3b5 schedule. The final version has to not be TOO far in the future.

Posted by Dion Almaer at 6:57 am
4 Comments

++++-
4.5 rating from 31 votes

Monday, March 10th, 2008

Mozilla Prism update makes it easy to create wrappers

Category: Firefox

Mozilla Prism has just released a new version that shows off Firefox integration:

Today we’re releasing a major update to Prism that includes new desktop integration capabilities and simpler installation. With this update, you can now get Prism simply by installing a small extension to Firefox 3. With the new Prism extension for Firefox 3, users can now split web applications directly out of Firefox without needing to install and manage a separate Prism application. Just install the extension, browse to a web app, then select Tools > Convert Website to Application.

prism-menu.png

Other new or improved features include:

  • Pick an icon to represent a web app on the desktop: Prism can use the web app favicon or the user can pick a custom image to represent the web app.
  • Run each web app in its own profile: Prism now places each web app into its own process/profile so they don’t interfere with each other, which also makes it possible to install a web app twice and use it simultaneously with two different user accounts.
  • Badge the dock icon: Initial support for adding a badge to the desktop icon has been added. Currently, this can be done through a custom webapp.js file. We’re working on creating and reusing web standards to expose this to content without requiring custom scripts.

Posted by Dion Almaer at 7:29 am
8 Comments

++++-
4.1 rating from 28 votes

Friday, February 29th, 2008

Firefox 3 Mac performance gains due to undocumented APIs

Category: Browsers, Firefox, Safari

Vladimir Vukićević has posted on the performance improvements of Firefox 3 on the Mac, and how one hack, albeit "dangerous" has helped ton. Vladamir says:

While figuring all this out, I noticed that Safari/WebKit didn't seem to be affected by this framerate cap -- the fps meter when Safari was running the same benchmark happily went up beyond 60fps.  After I found the plist entry, I checked Safari's plist and was surprised to discover that they didn't have this disabling in there.  Doing some more searching, I found this code in WebKit.  Apparently, there is a way to do this programatically, along with some other interesting things like enabling window update display throttling (though it's unclear what that means!) -- but only if you're Apple.

All these WK* methods are undocumented, and they appear in binary blobs shipped along with the WebKit source (see the WebKitLibraries directory).  There are now over 100 private "OS-secrets-only-WebKit-knows" in the library, many of which are referred to in a mostly comment-free header file.  Reading the WebKit code is pretty interesting; there are all sorts of potentially useful Cocoa internals bits you can pick up, more easily on the Objective C side (e.g. search for "AppKitSecretsIKnow" in the code), but also in other areas as a pile of these WK* methods used in quite a few places.  Would any other apps like to take advantage of some of that functionality?  I'm pretty sure the answer there is yes, but they can't.  It's not even clear under what license libWebKitSystemInterface is provided, so that other apps can know if they can link to it.

David Hyatt, the guru lead of Webkit/Safari commented:

The programmatic disabling of coalesced updates should not be public API. It’s actually a very dangerous thing to do. We aren’t really happy with that code in WebKit, but we had to do it to avoid performance regressions in apps that embedded WebKit. Technically it’s wrong though, since we turn off the coalesced updates for any app that uses WebKit! This includes drawing they do that doesn’t even use WebKit.

As for the window display throttling, that was a pref designed for Safari (that we don’t even use any more). It’s not private or magic. It’s nothing more than a pref that we can examine from Safari-land, so linking to that is just silly. ;)

Many of the private methods that WebKit uses are private for a reason. Either they expose internal structures that can’t be depended on, or they are part of something inside a framework that may not be fully formed. WebKit subclasses several private NSView methods for example, and it cost us many many man hours to deal with the regressions caused by the internal changes that were made to NSViews in Leopard.

As you yourself blogged, there was a totally acceptable public way of doing what you needed to do.

For any private methods we use that we think should be public, we (the WebKit team) file bugs on the appropriate system components. Many of these methods have become public over time (CG stuff in Leopard for example). Be careful when you dig into WebKit code, since we may continue to use the WK method even though it’s not public API just because we need to work on Tiger.

Robert O'Callahan is much more aggressive and claims platform tilt:

The source to the WK wrappers is not available; the implementations are in a binary blob library that you download with the Webkit sources. It appears the sole purpose of closing the source to this library is to conceal the signatures of the undocumented framework APIs used by Webkit, presumably so that ISVs like us can't use them.

...

A key part of Webkit on Mac is kept deliberately closed source by Apple. That's unfortunate. Instead of hiding the source, a much more friendly policy for Apple would be to make these APIs public as a matter of course. They may argue that there are unfrozen APIs that they don't want exposed, but there are ways around that, such as by tying symbol names to specific OS versions (CGContextFooBar_10_4?) and promising they'll just not be there in future versions.

It's worth reflecting that if Microsoft was doing this, they'd likely be hauled before a judge, in the EU if not the US. In fact I can't recall Microsoft ever pulling off an undocumented-API-fest of this magnitude.

WebKit flies on my Mac, and Firefox 3 has almost caught up. The end result is that I am pretty happy with how browsers are improving their performance, and I am sure there is a lot more to see.

Posted by Dion Almaer at 7:36 am
11 Comments

++++-
4.1 rating from 15 votes

Wednesday, February 6th, 2008

Firebug 1.1 and getfirebug.com

Category: Firefox, Debugging

John J Barton has been working hard on Firebug 1.1, but the work has been in the dark a little unless you are paying attention.

He has been putting releases up, and Kris Zyp has been kind enough to host

I have talked to a few people recently who keep Firefox 2 around just "because Firebug needs it" but the latest beta works great in Firefox 3 (which I find to be a huge leap on the Mac).

The beta features:

  • eval() debugging,
  • external editor interface,
  • browser-generated event handler debugging,
  • executable lines marked with green line numbers,
  • user-controlled naming of eval() buffers,
  • Stack side panel on "Script" panel for callstack,
  • Supports Firefox 3,
  • "better" debugging icons,
  • CSS errors report against source lines,
  • bug fixes (incl. issues 8, 69, 218, 230, 239, 249, 269, 314, 321, 345)
  • Internal firebug debug output

I raise a drink to John for keeping Firebug going strong!

Firefox 3

Posted by Dion Almaer at 12:04 am
4 Comments

++++-
4.6 rating from 25 votes

Tuesday, February 5th, 2008

Random thoughts from a Firefox

Category: Editorial, Firefox

Robert O'Callahan has a nice recap of BaaCamp down under.

Robert talks about various talks that he went too, for example on AIR which touted:

features that can and should be provided by browsers too, possibly via extensions like Gears for the laggards, ideally via standard APIs like HTML5.

Robert feels like there is still a bit difference between the browser and Flash:

There are few philosophical differences between AIR and the browser. The biggest one is that AIR doesn't sandbox apps, so users have to make a trust decision to use an AIR app. I don't know how high a barrier that is to AIR app adoption; I hope it's a high one, because users should be reluctant to let applications abuse them! Another, related difference is that AIR lets apps escape browser chrome such as the forward/back buttons and the address bar. I can see that app designers would love that --- yay for integrity of artistic vision! --- but I'm not sure users would. Browser navigation (back, forward, bookmarks, addresses and autocomplete) is a powerful mental model that is not only deeply entrenched but is actually very useful.

He then goes into detail on the IE 8 features, and finishes up on bug hunting with Firefox 3. I have been using that on the Mac, along with Webkit, and I am impressed. It is fast, and doesn't churn the memory as much. I couldn't use Firefox 2 anymore!

Posted by Dion Almaer at 6:57 am
Comment here

++++-
4.4 rating from 8 votes

Tuesday, January 15th, 2008

Mozilla hires Aza Raskin and other Humanized folk

Category: Firefox

Wow, John Lilly is shaking things up as CEO! Mozilla has managed to hire the guys behind Humanized:

Mozilla has hired 3 of the principals from Humanized. They will be joining the Mozilla Labs team on January 16, 2008. We expect a lot of innovation work from them, some Firefox-related, some broader, just like everything else in Mozilla Labs. This was not an acquisition. No premium was paid and no intellectual property was acquired by Mozilla.

The work done by the Humanized principals speaks for itself — there are lots of great, web-relevant ideas in their work and we’re excited to have them join Mozilla.

This is great news. We know about Enso and Songza but what is really interesting here is that they have ideas for next gen browsing.

I really hope to see a prototype of the zoomable UI browser with vertical tabs so you infinitely scroll around. Congrats to the guys, especially Aza, who I know is a great guy and always enjoy his talks at The Ajax Experience. Are you guys moving to the bay or staying in Chicago? :)

Posted by Dion Almaer at 5:17 pm
4 Comments

++++-
4.3 rating from 16 votes

John Lilly , CEO of Mozilla, Interviewed

Category: Firefox, Podcast

Sean Ammirati of ReadWriteTalk has posted an interview with John Lilly, the new CEO of Mozilla.

Listen, or read the transcript.

Ok. In Firefox 3 is the killer browser. And I think I’ve been using the Beta since Beta 1 and Beta 2 is even better. Even in the Beta, we’ve surpassed the quality of Firefox 2. So I already encouraged my mom and my grandmother to update their Firefox 3 Beta 2. I thinks it’s a killer product. It holds up in a lot of new areas. It works well on Mac, on Linux and works well in Windows as always.On labs, there are two things in particular. I’m really excited about the efforts on mobile were working on. I think a lot of folks wondered what about what we’re going to give mobile. And we’ve waited for a pretty long time. But we really felt like we needed to wait until the industry started to open-up a little bit.

We are trying not to overload users with a lot of new features. We’ve done a lot of stream lining. A few years ago we cam out with Firefox 1. It was a good’s a good product, but it was 1.0. With Firefox 2 we started adding a lot of what people were expecting. And then I think Firefox 3 really represents a streamlining and a maturation of the user interface. But it really means it fits into the Mac. The Macintosh theme really works. We have Linux system integration and icons. I think that it’s going to feel like a much better product to people, especially people who give you aren’t
so techy. But I think it will retain all the openness that the techy population, like myself, like.The one featured that everybody really likes, other than the fact that the memory usage is better than ever and the performance is better than ever, is
the URL bar.

Instead of just typing the URL and having it remind you what the URL is, you can type any word in the name of the document. Like if you went to a site about the Simpsons, you could just type Simpsons in the bar and it will show you all the sites with Simpsons in the title. And it’s just one example of maybe 15 different ways we’re helping people find the places they’ve been to before or the place that they want to get to. So I think navigation around the information space is getting increasingly important. The web is pervasive or humungous and getting larger. And just being able to find what you want, find what you’ve visited is the key. So I think that the colloquialism around here is to call it the awesome bar instead of the URL bar.
That’s just one example of hundreds of hundreds of user interface tweaks that we’ve made. And I think are going to make a little difference to people.

So I suspect that we’ll start to participate DataPortability.org. They’ve got to start doing something sooner or later. So like doing the actual work there is going to be the key. Of course OAuth and that kind of stuff we’ve starting to experiments with. That stuff will be very important for Weave. So I suspect we will start to participate in dataportability.org, but we haven’t yet.

Posted by Dion Almaer at 6:31 am
10 Comments

++---
2.9 rating from 16 votes

Tuesday, January 8th, 2008

XUL Templates

Category: Firefox

Mark Finkle has posted about new datasources for XUL templating which links to a nice tutorial.

I hope to see more XUL/like features finding their way into the Open Web.

Take a look at some of the examples:

Using vbox to use fun box model stuff and create a simple vertical box:

XML:
  1.  
  2. <vbox datasources="rdf:bookmarks" ref="NC:BookmarksRoot" flex="1">
  3.   <template>
  4.     <button uri="rdf:*" label="rdf:http://home.netscape.com/NC-rdf#Name"/>
  5.   </template>
  6. </vbox>
  7.  

The example below shows how we might set other attributes of a button using a datasource. Of course, this assumes that the datasource supplies the appropriate resources. If a particular one is not found, the value of the attribute will be set to an empty string:

XML:
  1.  
  2. <button class="rdf:http://www.example.com/rdf#class"
  3.         uri="rdf:*"
  4.         label="rdf:http://www.example.com/rdf#name"
  5.         crop="rdf:http://www.example.com/rdf#crop"/>
  6.  

Using rules:

XML:
  1.  
  2. <window id="example-window"
  3.   title="Bookmarks List"
  4.   xmlns:html="http://www.w3.org/1999/xhtml"
  5.   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  6.   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  7.  
  8.  <vbox datasources="rdf:bookmarks" ref="NC:BookmarksRoot" flex="1">
  9.    <template>
  10.  
  11.     <rule rdf:type="http://home.netscape.com/NC-rdf#BookmarkSeparator">
  12.      <spacer uri="rdf:*" height="16"/>
  13.     </rule>
  14.  
  15.     <rule>
  16.       <button uri="rdf:*" label="rdf:http://home.netscape.com/NC-rdf#Name"/>
  17.     </rule>
  18.  
  19.   </template>
  20.  </vbox>
  21. </window>
  22.  

Posted by Dion Almaer at 9:01 am
1 Comment

++---
2.8 rating from 12 votes

Monday, December 24th, 2007

Mozilla Weave: More servers for your browser

Category: Firefox

Mozilla has launched yet another project from its labs: Mozilla Labs Weave:

As the Web continues to evolve and more of our lives move online, we believe that Web browsers like Firefox can and should do more to broker rich experiences while increasing user control over their data and personal information.

One important area for exploration is the blending of the desktop and the Web through deeper integration of the browser with online services.

We’re now launching a new project within Mozilla Labs to formally explore this integration. This project will be known as Weave and it will focus on finding ways to enhance the Firefox user experience, increase user control over personal information, and provide new opportunities for developers to build innovative online experiences.

This means that Mozilla will give us a framework to work on. All settings and other state can be saved up in services.mozilla.com.

Is this something that we want to see? Or another thing that makes us think "oh no, FF3b2 was so promising wrt performance and memory usage, focus on that". NOTE: The same people that work on hard core browser stuff may not be the people working on the weaving ;)

Posted by Dion Almaer at 12:40 am
6 Comments

++++-
4 rating from 26 votes

Thursday, December 20th, 2007

Remember, the Milk has spilled on your Gmail

Category: Showcase, Firefox, Google

We blogged about the Gmail helper API in November, and the good folks at Remember The Milk have used the API to add tasks to the Gmail interface in a nice mashup:

Yup, that's RTM in there! Remember The Milk for Gmail is a Firefox extension that lets you do all kinds of crazy cool things with your tasks (and interacts with your mail, contacts, and calendar too).

It goes beyond letting you manage your tasks, as you can connect tasks with your mail, google calendar, and contacts.

Watch the screencast to see it in action.

Posted by Dion Almaer at 7:46 am
3 Comments

++++-
4.2 rating from 17 votes

Next Page »