Simple instructions for building Firefox from source

In the past, figuring out how to build Firefox from source tended to be really confusing. The documentation explained too much about how the build system worked, how multiple projects were built, presented too many choices, and generally had lots of details not relevant to most people.

A couple weeks ago, someone on IRC pointed out that jorendorff had created a simplified set of instructions: https://developer.mozilla.org/En/Simple_build I think this is great!

There are still multiple steps (especially if you’re on Windows), but it’s a lot more streamlined than other documentation and is geared towards doing cut’n'paste. In a nutshell, it’s a lot less intimidating.

Happy Form History Expiration Day!

Over the last year, I’ve slowly been poking at Firefox’s form history implementation (aka “satchel”). Triaging the backlog of bugs, fixing some issues, and generally laying the groundwork for other exciting changes to come in Firefox.next. One notable change will start taking effect today or tomorrow (for Firefox 3.5 users) — the expiration of old, unused form history. A little background…

Back in November I implemented bug 463154, which added some additional data to the form history database. It now stores timestamps for when data was first added, when it was last used, and how many times it has been used. The first consumer of this data was the Clear Recent History dialog — we needed the timestamp to allow clearing the last hour (or whatever) of form history.

The first time you run a build with this change, all existing form history entries are assigned timestamps with the current time. So, if you were using Firefox trunk nightlies back in November 2008, you’ll have a bunch of entries with a first-used date set to around November 14th (the first nightly with this fix). Beta users got this in Firefox 3.1 Beta 2 (released December 8th), and it was also backported to Firefox 3.0.9 (released April 21st).

The second piece of background is that I recently fixed bug 243136, which adds support for expiring old form history entries. You might be surprised to learn that until this bugfix, we basically only removed form history entries when explicitly requested from the Clear Private Data dialog, or when a specific value was manually removed from the autocomplete dropdown by the user (hilight one and press delete or shift-delete!). Now, once a day or so, form history entries that haven’t been used for a long time will be deleted. The maximum age is determined by the browser.history_expire_days preference, which defaults to 180 days.

Now, if you’re clever, you might notice that November 14th 2008 + 180 days = today. If you’re not clever, well, reread the last sentence. So, Happy Form History Expiration Day! Note that expiration can only happen with Firefox 3.5 Beta 4 (or newer). And the exact date expiration starts depends on when you first ran a Firefox build that included timestamp support… Other common Form History Expiration Days may begin on June 6th (Dec. 8th + 180 days), and October 18th (Apr. 21st + 180 days). The latter will be extra special, since that’s the case that will apply to the bulk of our 1/4 billion Firefox users (most of whom will hopefully have upgraded to Firefox 3.5 by then).

Why do form history expiration at all? Three main reasons: privacy, relevance, and performance. Privacy and relevance are fairly obvious — retaining data forever isn’t good practice, and data unused for 6 months is highly unlikely to be relevant in the future. Performance is interesting… In my personal profile, I currently have 27,600 form history entries, with 12,700 of those from Google searches alone! Trudging through all that data takes time; in some cases an autocomplete dropdown can take hundreds of milliseconds to appear on my laptop. If I expire the data older than 180 days, those numbers drop dramatically — 4,600 entries / 1,800 from Google. This will immediately help improve form autocomplete performance, and help allow us to do more complex queries in the future (to improve the relevancy of the autocomplete results that we offer — stay tuned!).

World’s Cutest Animal

Today the Houston Zoo is debuting the “World’s Cutest Animal“. It’s a red panda, also known as a Firefox.

Everybody say “awwwwww!”

Is the tree green, mobile edition.

I finally found a use for my N800 (which has been been sitting unused for some time). It’s now perched on my desk, under my monitor, giving me instant, up-to-the-minute status of the tree… Yep, that’s Fennec and http://isthetreegreen.com.

Sadly, the main observation from this is that the tree is almost never green these days. :-(

Delicious Personas

Personas, for those not familiar with it, is a Firefox add-on from Mozilla Labs that allows you to easily reskin the browser. Sort of like a theme, but different.

This weekend I decided to make a bacon persona. It was really easy to do; I just made a couple of JPEGs and submitted them to the getpersonas.com site. Result:



If you want to try it out, just:

  1. Install Personas from getpersonas.com.
  2. Select “Bacon” from the Personas directory. It’s under the “Other” category. (At the moment, it’s also at the top of the “Recent” subsection.

Mmm, bacon.

Is the tree green?

The internets are serious business. When you’ve got questions, they’ve got answers… Is Lost on TV? Is it a rerun? What year is it? 2009? 2010? Has the LHC destroyed the world yet? Is Abe Vigoda still alive? Is it MFBT?

Which brings us to the question frequently asked by Mozilla developers. Is the tree green? Ta-da:

Some random factoids about isthetreegreen.com

  • It’s using a cross-site XMLHttpRequest to fetch the tree status from Tinderbox. This is a neat way to generate the answer in the browser (instead of scraping the status from a cron script on my webserver), but it means you’ll need a recent browser (like Firefox 3.1!) which supports this.
  • It’s surprisingly snappy. The HTML is about 7K, and the XHR status is about 2K. Compare that to the normal Tinderbox page, which weighs in around 220K.
  • The page polls the Tinderbox status every 2 minutes and updates the displayed status. The first time the state transitions from not-green to green, it will trigger an alert(). I think this will be rather useful if you’re waiting for the tree to turn green before checking in a patch.
  • It doesn’t check if the tree is open or closed. (Yet?)

Thanks to Jesse for the original idea, and to Reed for helping to get the Tinderbox server configured to allow XS-XHR.

Ignore all rules

Recently, I noticed that one of Wikipedia’s policies is rather interesting: Ignore All Rules.

If a rule prevents you from improving or maintaining Wikipedia, ignore it.

Seems like a rather interesting way to encapsulate exceptions and common sense as part of an official policy, and well as introducing a touch of rambunctious energy and freedom into what could otherwise become a stodgy bureaucracy.

I like it.

Infoholicismeme

Gerv just posted about the number of random Wikipedia pages in his browser history. Hmm, sounds like a meme in the making!

Back in November, Mardak posted some code to pull data out of Places… I’ve modified it to create a list of 10 random Wikipedia links from your history (along with the total). Looks like you’ll need a Firefox 3.1 beta (or newer) for this to work. The count will be a bit different than what you see with Gerv’s method, as I try to be more accurate with filtering meaningful Wiki pages.

1. Open this link, select-all and copy it.
2. Open up the Error Console.
3. Paste into the Code field at the top, and click Evaluate.

(Note that this runs code without any security restrictions, so don’t get in the habit of doing this for people you don’t trust!)

10 random Wikipedia URLs out of 1414…

  1. Scaled Composites SpaceShipThree
  2. Hanny’s Voorwerp
  3. Jerky
  4. Rabbit of Caerbannog
  5. Venice
  6. Chief Justice of the United States
  7. Rat Pack
  8. Turbofan
  9. Telnet 3270
  10. AIM-120 AMRAAM

New Pepsi logo

So, apparently Pepsi has just spent 5 months and $1 million to update their logo:

Hmm… Something looks familiar about that. What could it be… Ah, yes:

Let’s just hope they don’t come out with a jointly-branded version that’s Seamonkey flavored. :-)

Image manipulations

Fred and Borris both recently blogged about intelligent image resizing. This previously came up about a year ago, probably when this research video started making the rounds:

It’s cool stuff, although I’m a little doubtful about it working well for general web content. It would be a fun experiment, though!

Also in the news today is this New York Times article (via Neatorama) about an automatic “beautification engine” that modifies images to make the people in them look better.

Would that be interesting in browsers? I suppose some people would find in interesting in some cases (*cough*porn*cough*), but it’s a little scary and creepy to think about the kinds of social and psychological effects that would arise from subtly applying such an algorithm everywhere. (Consider a similar vein: automatically rewriting web pages more cheerful. A news article about panic selling on Wall Street suddenly becomes a doubleplus good story about the great weather, buying opportunities, and fluffy kittens!)