Just another WordPress.com weblog

Planet Mozilla

Privacy Policy

Welcome to AddThis.com, a website owned and controlled by Clearspring Technologies, Inc. (“Clearspring”, “we”, “us”, or “our”). We operate the AddThis sharing buttons and platform, which makes sharing content on the web easy. We provide this privacy policy to let you know what information we collect, how we use it, share it and protect it.
Advertising Choices

We believe that delivering targeted and relevant advertising enhances your internet experience. We collect non-personally identifiable information from many of the websites in which an AddThis button is enabled, and use that information to deliver targeted advertising on those websites as well as other websites you may visit. If you prefer that we do not collect Non-Personally Identifiable Information about your website visits for the purpose of delivering targeted advertising, you may opt out at our Advertising Choices page.

When you opt out, we will place an opt-out cookie on your computer. The opt-out cookie tells us not to use your information for delivering relevant online advertisements. Please note that if you block cookies, our opt-out process may not function properly. Please also note that if you delete, block, or otherwise restrict cookies, or if you use a different computer or Internet browser, you will need to renew your opt-out choice.

This Privacy Policy applies to the website located at http://www.addthis.com (the “Site”), the tools and interactive forums made available through the Site and the AddThis sharing platform, as well as a number of related services (collectively the “Services”).

As a general rule there are two categories of users of the Site and Services: “Publishers” who are operators or publishers of websites that make the AddThis sharing platform available on their website, and “End Users” who are individual visitors of a website and use the AddThis sharing platform to share a website’s content with others. By visiting the Site or using the Services, you are accepting the policies and practices described in this Privacy Policy.
Privacy Practices by User Category:

* Privacy Practices for Visitors to the AddThis Site
* Privacy Practices for End Users Who Use the AddThis Sharing Platform on Publisher Sites
* Privacy Practices for End Users Who Download and Use AddThis Toolbars

Privacy Practices for Visitors to the AddThis Site

(a) The Information We Gather and How We Use it: The Site is primarily directed to Publishers, although we welcome End Users who want to know more about our Services. When you access the Site or Services, we may collect the following information:

* Personal Information – We collect Personal Information when you knowingly provide it, including when you register for the Site, provide feedback, or request information. Personal Information is information that may be used to identify or locate an individual, like a person’s full name, postal address, e-mail address, or phone number, as well as other non-public information that is associated with this Personal Information. We use your Personal Information to administer your account and provide you services, to send communications and administrative emails, to respond to your inquiries, and to send marketing and product update messages to those who ask for such messages. Typically, Publishers, rather than End Users visit the Site in order to access and register for the Services. For example, Publishers may provide their email address when they register on the Site and create a user name and password. Please note – we include the user name you have chosen in the AddThis sharing code. That code is provided to Publishers for placement on their websites, and enables us to associate non-personally identifiable analytics data with that Publisher’s account. For this reason, you may wish to choose a user name that does not include your Personal Information, as the Publisher website’s code is often publicly viewable.
* Non-Personally Identifiable Information – We collect Non-Personally Identifiable Information automatically when you visit our Site. Non-Personally Identifiable Information is information that is not used nor intended to be used to personally identify an individual and is not associated with nor linked to Personal Information. This Non-Personally Identifiable Information we collect via the Site includes your Internet Protocol address, browser type, browser language, the date and time of your request, and the web page you have visited immediately prior to visiting the Site.
* Cookies – We use Cookies on this Site. “Cookies” are small pieces of information that a website sends to your computer’s web browser while you are viewing a website. We may use both session Cookies (which expire once you close your web browser) and persistent Cookies (which stay on your computer until you delete them) to provide you with a more personal and interactive experience. Persistent Cookies can be removed or blocked by following the help file directions in your Internet browser. If you elect to block Cookies, you may not be able to access certain personalized sections of our Services such as Publisher reports. We also use log files and Cookies to improve the quality of our Site; to keep track of your login name, passwords, and pages you have visited on the Site; and to tailor content to your interests and to personalize the Site on your behalf.

(b) Information Sharing: We share Personal Information and Non-Personally Identifiable Information collected via the Site with other companies or individuals as follows:

* When they help us operate our business, such as with vendors that assist us in sending email, marketing and customer service.
* With third parties if we have a good faith belief that access, use, or disclosure of such information is reasonably necessary to (a) satisfy applicable law, regulation, legal process or an enforceable governmental request, (b) enforce the applicable Terms of Service, including investigation of potential violations thereof, (c) detect, prevent, or otherwise address fraud, security or technical issues, or (d) protect against harm to the rights, property or safety of Clearspring, its users or the public as required or permitted by law.
* With any of our subsidiaries, joint ventures, or other companies under common control with us, in which case we will require them to honor this policy. Additionally, in the event we go through a business transition such as a merger, acquisition by another company, or sale of all or a portion of our assets, your Personal Information may be among the assets transferred.
* With third parties to whom you ask us to send Personal Information;
* In addition, we may aggregate your Anonymous Information with the Anonymous Information of others and share that aggregated information with third parties without restriction.

(c) Forums: We make interactive forums available on the Site. Any information that you post to these interactive forums or otherwise choose to make publicly available, including your Personal Information, may be disclosed and available to all users who have access to any interactive forum and is no longer private. Please be thoughtful about what you post and make publicly available through our interactive forums.

(d) Controlling our use of your Personal Information: If you have provided Personal Information such as your email address when registering for our Site, you may modify that information at any time by visiting your account settings (http://addthis.com/settings). As we use your user name as the account identifier, you cannot change your user name. While we would be sorry to see you go, you can delete your account at any time. Keep in mind, however, that even if you delete your account, we may retain your Personal Information in conformance with our data retention policy, under which we may retain such information to comply with laws, prevent fraud, resolve disputes, troubleshoot problems, assist with any investigations, enforce our Terms of Use, and take other actions otherwise permitted by law. There may be residual Personal Information that remains within our databases, access logs, and other records. In addition, we are not responsible for updating or removing your Personal Information already disclosed to third parties who have been provided information as permitted by this Policy. You can opt out of receiving certain email communications from the Site by clicking the “Unsubscribe” link at the bottom of each email. Please note that even if you unsubscribe or opt-out, we may still send you Site and Service related communications.
Privacy Practices for End Users who use the AddThis Sharing Button on Publisher Websites

As part of the Service, we operate the AddThis sharing platform, which makes sharing content on the web easy. If you are reading this policy, you are probably familiar with our buttons and menus that Publishers enable on their websites to allow you to share their content through email, social networking websites, blogs and more. When you, an End User use one of our buttons, menus and/or toolboxes that is enabled on one of our Publisher websites (an “AddThis Button”), we collect certain non-personally identifiable information automatically for use on our platform (the “AddThis Platform”). We enable our Publishers to use this information via the Platform for analytics purposes, and we also use some of this information for online ad targeting as described below.

(a) The Information We Gather and How We Use It:

* Personal Information – We only collect Personal Information via an AddThis Button when an End User provides it to us, and never use that information on the AddThis Platform for delivering targeted advertising. When you, an End User, send an email using an AddThis Button, we collect your email address, the email address of the person (or people) to whom you are sending the content and allow you the opportunity to write an accompanying message. We use this Personal Information only to send the email on your behalf and for no other purpose, and it is not merged or otherwise combined with any of the Non-Personally Identifiable Information that we collect. This Personal Information will be available to the people to whom you send or share content via the AddThis Button, so please be careful.
* Non-Personally Identifiable Information – We collect Non-Personally Identifiable Information via the AddThis Button for use on the AddThis Platform. For example, when you visit a web page that contains one of our AddThis Buttons, our server logs collect your Internet Protocol address, browser type, browser language, the date and time you visited that web page, and (if you came to a web page where an AddThis Button is enabled via a search engine such as Google), the web search that landed you on that web page. We also collect information regarding how often you share content with others using the AddThis platform. We use this information to help us build commercially viable data segments (e.g., travel enthusiast, sports fan) for online ad targeting in order to help make the ads you see on many of the websites you visit more relevant to your interests, and for ad delivery and reporting purposes. For information regarding how we use this information to help deliver more relevant advertising please see the section below entitled “Targeted Advertising and Choices.” We also set Cookies and web beacons on web pages where our AddThis Buttons are enabled, and allow our partners to set Cookies and web beacons. We also use this information to customize the AddThis Button to your usage patterns. For example, if you share to Facebook, we make sure that Facebook icon is at the top of your AddThis Button menu.

(b) Information Sharing.

We generally don’t share Personal Information collected via the AddThis Button except as specifically directed by the End User in order to share a piece of content via email or via social networking platform. We share information collected via the AddThis Button with other companies or individuals as follows:

* We share Non-Personally Identifiable Information with the website Publishers who have the AddThis Button enabled on their websites for their own website analytics purposes. For example, we provide our publishers with statistics on sharing trends, and the top content segments shared (e.g., A blog post analyzing a speech given by the President), so that Publishers can understand how End Users are sharing their content, as well as how much web traffic such sharing brings back to the Publisher’s site. Publishers can use filters to refine the data by domain, time period, geography, and other options.
* We share any information we have with third parties if we have a good faith belief that disclosure of such information is reasonably necessary to (a) satisfy applicable law, regulation, legal process or an enforceable governmental request, (b) enforce the applicable Terms of Service, including investigation of potential violations thereof, (c) detect, prevent, or otherwise address fraud, security or technical issues, or (d) protect against harm to the rights, property or safety of Clearspring, its End Users or the public as required or permitted by law.
* With any of our subsidiaries, joint ventures, or other companies under common control with us, in which case we will require them to honor this policy. Additionally, in the event we go through a business transition such as a merger, acquisition by another company, or sale of all or a portion of our assets, we expect that any and all information that we have will be among the assets transferred.
* In addition, we may aggregate your Non-Personally Identifiable Information with the Non-Personally Identifiable Information of others and share that aggregated information with third parties without restriction.

(c) Targeted Advertising and Choices

We don’t use Personal Information to serve targeted advertising via the Platform. We make AddThis available to End Users and Publishers at no cost. To support our services, we license or otherwise provide the Non-Personally Identifiable Information we collect via many of the AddThis Buttons enabled on Publisher websites and use that information via the Platform to deliver or enable the delivery of advertising that is customized to End User interests. We also set Cookies and web beacons on web pages where our AddThis Buttons are enabled to help us with online ad targeting and to provide analytics to our website Publishers.

If you prefer that we do not collect Non-Personally Identifiable Information about your website visits for the purpose of delivering targeted advertising, you may opt out at our Advertising Choices page.

When you opt out, we will place an opt-out cookie on your computer. The opt-out cookie tells us not to use your information for delivering relevant online advertisements. Please note that if you block cookies, our opt-out process may not function properly. Please also note that if you delete, block, or otherwise restrict cookies, or if you use a different computer or Internet browser, you will need to renew your opt-out choice.

We also allow our partners to set cookies and web beacons via certain AddThis Buttons. Some of them are also members of the Network Advertising Initiative (“NAI”). For more information, please visit the NAI website at Network Advertising Initiative.
Privacy Practices for End Users Who Download and Use AddThis Toolbars

In addition to the AddThis Buttons that appear on Publisher websites, we offer toolbars (our “Toolbar”) that can be downloaded by End Users, installed as a plug-in on the End User’s browser and used to share content from virtually any website. We do not target advertising based upon information collected through any Toolbar. When an End User uses the Toolbar, we collect Non-Personally Identifiable Information about the End User’s usage of the Toolbar, including whether the End User downloads and installs the Toolbar, how and when the End User utilizes the Toolbar and when the End User uninstalls the Toolbar. We use this information to understand how the Toolbar is being used, and to help us ensure that our Toolbars are functioning properly. We also collect but do not store the keyword searches that each End User executes via the Toolbar. We collect the keyword searches in order to provide them to the search engine indicated in the Toolbar (e.g., Yahoo!), and such search engine’s use of the keywords is governed by its own privacy policy.
Information Security and Retention

We take reasonable security measures to protect against unauthorized access to or unauthorized alteration, disclosure or destruction of data. These include firewalls and encryption, internal reviews of our data collection, storage and processing practices and security measures, as well as physical security measures to guard against unauthorized access to systems.

We restrict access to Personal Information to Clearspring employees, contractors and agents who need to know that information in order to operate, develop or improve our Services. These individuals are bound by confidentiality obligations and may be subject to discipline, including termination, if they fail to meet these obligations. However, we are unable to guarantee that the security measures we take will not be penetrated or compromised or that your information will remain secure under all circumstances.

We retain Non-Personally Identifiable Information on the Platform for up to five years. Any search strings we collect via the AddThis Button are converted into Non-Personally Identifiable Information, and the raw search data is stored on our server logs for up to 90 days. Aggregate reports generated from such information may be kept longer.

We do not knowingly collect or maintain Personal Information from individuals who are under 13 years of age, and no part of our Site or Services are designed to attract people under the age of 13. Protecting the privacy of children is very important to us. If we obtain knowledge that a user is under the age of 13, we will take steps to remove that user’s Personal Information from our databases.
Links to Other Sites

Our Site and Services contain links to, and allow you to share content on, third party websites and services. The fact that we link to a website or service or allow you to share content on them is not an endorsement, authorization or representation that we are affiliated with that third party, nor is it an endorsement of their privacy or information security policies or practices. This privacy policy applies only as provided in the scope section above. Other websites and services follow different rules regarding the use or disclosure of the personal information. We encourage you to read the privacy policies or statements of the other websites you visit.
International Users

The Site and Services are hosted in the United States. If you access the Site or Services from the European Union, Asia, or any other region with laws or regulations governing personal data collection, use, and disclosure that differ from United States laws, please be advised that through your continued use of the Site or Services, you are transferring your Personal Information to the United States and you consent to that transfer. Additionally, you understand that your Personal Information may be processed in countries (including the United States) where laws regarding processing Personal Information may be less stringent than in your country.
Questions or Comments?

Clearspring regularly reviews its compliance with this Privacy Policy. Please feel free to direct any questions or concerns regarding this Privacy Policy by contacting us through this Site, by emailing us at addthis-info@clearspring.com or writing to us at:

c/o Clearspring Technologies, Inc.
8000 Westpark Drive, Suite 625
McLean, VA 22102

Changes to this Privacy Policy

Please note that this Privacy Policy may change from time to time. If you have any additional questions or concerns about this Privacy Policy, please feel free to contact us any time through this Site or by writing to us at the address set forth above.

New to Firefox?

* How to set the home page
* Browsing basics
* Customizing Firefox with add-ons
* Pop-up blocker
* Updating Firefox

Common Questions

* What is plugin-container
* How do I edit options to add Adobe to the list of allowed sites
* Back and forward or other toolbar items are missing
* How to clear the cache
* How to make Firefox the default browser

Need More Personal Help?

If you can’t find the answer you need, our community volunteers are ready to help you find a solution. Ask your question here.

Have a problem?

The main support for Firefox 4 is through our support forum. We’ve collected some of the top questions right here so you can get an answer quickly.

o Status bar missing?
o Seeing an error about Components.classes is undefined?
o Problems with Flash on a mac?

Have a different question?

Check out our support forum to see all questions asked about the Firefox 4, ask your question or help out your fellow Firefox 4 users.

Explore Help Topics


* Firefox crashes
* The Adobe Flash plugin has crashed
* Troubleshooting extensions and themes
* Troubleshooting plugins
* Error loading web sites
* Basic Troubleshooting

Using Firefox

* Tabbed browsing
* Bookmarks
* Location bar autocomplete
* Downloads window

Customizing Firefox

* How to set the home page
* Customizing Firefox with add-ons
* Using themes with Firefox

Privacy & Security

* Private Browsing
* Clear Recent History
* How to clear the cache
* Enabling and disabling cookies
* Choosing More Secure Passwords
* Parental controls


* How to make Firefox the default browser
* How to customize the toolbar
* Updating Firefox
* Managing the Flash plugin
* Exporting bookmarks to an HTML file

Learn about Firefox 4

Firefox 4 has lots of great new features!

App Tabs

Keep your favorite web apps just a click away.

Front Page App Tabs


An easy way to visually organize all of your tabs.

Front Page Panorama

Firefox Sync

Take your Firefox settings with you everywhere.

Front Page Sync

Add-on bar

Quick and easy access to all your Add-ons

Front Page Add-on

* Firefox Help Home
* Ask a Question

Help with:

* Windows
* Mac OS X
* Linux
* Android
* Maemo

* Firefox 3.5-3.6
* Firefox 4

Be Awesome

Did you know that Firefox Help is powered by volunteer superheroes all around the world?
Grab your cape and join us »
Check your plugins

What is a plugin? Why should I keep them updated? Answer these questions and run an instant check to see if you’re up to date.
Find out more »
Other Languages

* Features
o Features
o Security
o Performance
o Customization
o Videos
o Tour
* Mobile
o Mobile Overview
o Download
o Features
o Customize
o Sync
o Develop
o Get Involved
o Blog
* Add-ons
o Firefox Add-ons
o Featured Add-ons
o Extensions
o Themes
o Personas
o Search Tools
o Language Support
o Collections
o Mobile Add-ons
o Developer Hub
* Support
o Firefox Support
o Mobile Support
o Thunderbird Support
* About
o About Firefox
o Participate
o Communications
o Careers
o Partnerships
o Legal
o Contact Us
o Blog

Privacy Policy | Legal Notices | Report Trademark Abuse

Firefox Features

Bringing together all kinds of awesomeness to make browsing better for you.

* Security & Privacy
* High Performance
* Greater Personalization
* Higher Productivity
* The Cutting Edge
* Universal Access

Top Features

(rollover for details)

* Super Speed
Super Speed

View Web pages way faster, using less of your computer’s memory.
* Private Browsing
Private Browsing

Surf the Web without leaving a trace.
* Easy Customization
Easy Customization

Thousands of add-ons give you the freedom to make Firefox your own.
* Awesome Bar
Awesome Bar

Find the sites you love in seconds (and without having to remember clunky URLs).
* One-Click Bookmarking
One-Click Bookmarking

Bookmark, search and organize Web sites quickly and easily.

Security & Privacy Watch the Video
Instant Web Site ID screenshot

Firefox protects you from viruses, worms, trojan horses and spyware delivered over the Web. If you accidentally access an attack site, it will warn you away from the site and tell you why it isn’t safe to use.
Anti-Malware screenshot

Shop and do business safely on the Internet. Firefox gets a fresh update of web forgery sites 48 times in a day, so if you try to visit a fraudulent site that’s pretending to be a site you trust (like your bank), a browser message—big as life—will stop you.
Instant Web Site ID

Want to be extra sure about a site’s legitimacy before you make a purchase? Click on a site favicon for an instant identity overview. Another click digs deeper: how many times have you visited? Are your passwords saved? Check up on suspicious sites, avoid Web forgeries and make sure a site is what it claims to be.
Forget This Site

Having second thoughts about having visited a certain Web site? With this feature, you can remove every trace of that site from your browser—no questions asked!
Parental Controls

Enforce parental control settings you’ve entered on Windows 7 — stop unwanted downloads and more.
Outdated Plug-In Detection

Some web pages require that you install small applications called plugins to watch videos, play games or view documents. These plugins are written by other companies, and it can be hard to make sure they’re always up to date. Since outdated plugins are a security risk, Firefox will let you know when you have a plugin that’s vulnerable to attack and direct you to the right site to get the updated version. View our plugin check page.
Clear Recent History

Clear all your private data or just your activity over the past few hours with a few quick clicks. You have full control over what to delete, and then your info is gone for good—on your own computer or the one at your local library. It’s that easy.
Private Browsing

Sometimes it’s nice to go undercover, so turn this feature on and protect your browsing history. You can slip in and out of private browsing mode quickly, so it’s easy to go back to what you were doing before as if nothing ever happened. It’s great if you’re doing your online banking on a shared computer or checking email from an Internet café.
Customized Security Settings

Control the level of scrutiny you’d like Firefox to give a site and enter exceptions—sites that don’t need the third degree. Customize settings for passwords, cookies, loading images and installing add-ons for a fully empowered Web experience.

Firefox looks for a secure connection before installing or updating add-ons, 3rd party software, and Personas.
Anti-Virus Software

Firefox integrates elegantly with your Windows antivirus software. When you download a file, your computer’s antivirus program automatically checks it to protect you against viruses and other malware, which could otherwise attack your computer.
Password Manager screenshot
Return to top
High Performance
Super Speed

Fasten your seatbelt: Firefox now includes the TraceMonkey JavaScript engine, which gives the browser dramatically better performance than ever before. Firefox has always been fast, but this is the fastest Firefox ever (more than three times as fast as Firefox 3 and 20% faster than Firefox 3.5), meaning Web applications like email, photo sites, online word processors and more will feel snappier and more responsive.
Smaller Memory Footprint

Short and sweet, Firefox uses less of your computer’s memory while it’s running.
Faster Page Load

A redesigned page rendering and layout engine means you see Web pages faster—and in the way they were meant to be seen.
Real World Performance

Having a super fast JavaScript engine is definitely important, but since those changes are often measured in milliseconds sometimes what matters even more is the way the browser feels when you’re actually using it. That’s why we’re constantly optimizing Firefox to be great for the way you use the web – things like making new tabs open up more quickly, or having the Awesome Bar provide results even faster. In the end, it’s about getting you where you need to go as quickly and easily as possible.
Memory Management

With a new management function in place, Firefox keeps memory usage under control. The XPCOM cycle collector continuously cleans up unused memory. Plus, hundreds of memory leaks have been remedied.
Firefox Performance: Fast — Faster — Fastest

Results of a SunSpider test on a Windows 7 machine
Firefox 2, Firefox 3, Firefox 3.5 performance chart

* Fast 3,198 ms
* Faster 1,188 ms
* Fastest 995 ms!

Crash Protection

Firefox provides uninterrupted browsing for Windows and Linux users when there is a crash in the Adobe Flash, Apple Quicktime or Microsoft Silverlight plugins. If one of these commonly-used plugins crashes or freezes, it won’t affect the rest of Firefox. Instead, you can simply reload the page to restart the plugin and try again. Learn more about plugins.
Return to top
Greater Personalization
Add-ons Manager screenshot
Beyond Add-ons

Add-ons are the cornerstone of customization, but adapting Firefox to suit your style doesn’t stop there. You can add new search engines, change toolbar preferences, display different sizes, shapes and styles for your browser’s navigation buttons and more. With additional preferences, you can specify a Web mail client, such as Gmail, to open up when you click on an address from a Web page or set up a news reader application for the blogs you encounter.
Over 6,000 Ways to Customize

The sky’s the limit with a growing library of over 6,000 Firefox add-ons, little extras you choose to download and install for a browser that works your way. Manage online auctions, upload digital photos, see the weather forecast in a glance and listen to music all from the convenience of your browser. If you’re not sure where to begin, try groups of add-ons assembled around common topics like travel, web development or social networking.
Add-ons Manager

Find and install add-ons directly in your browser. You no longer need to visit the add-ons Web site—instead simply fire up the Add-ons Manager. Not sure which add-on is right for you? Ratings, recommendations, descriptions and pictures of the add-ons in action help you make your selection. The fully integrated add-on manager even lets you view, manage and disable third-party plugins in a few easy clicks.
Dress Up Your Firefox with Personas

We’ve enhanced our themes to give you access to thousands of easy-to-install themes, meaning you can change the look of your Firefox to practically anything with a single click. Choose anything from simple designs to colorful patterns to content from partners like Harry Potter, Bob Marley or Lance Armstrong’s LiveStrong Foundation.

View the video
Persona sample
Return to top
Higher Productivity
Awesome Bar

A quick way to get to the sites you love—even the ones with addresses you only vaguely remember. Type in term into location bar (aka the Awesome Bar) and the autocomplete function includes possible matching sites from your browsing history, as well as sites you’ve bookmarked and tagged in a drop down.
Smart Location Bar screenshot

For example, you could enter the tag: “investments” to find “www.fool.com”. The Awesome Bar learns as you use it—over time, it adapts to your preferences and offers better fitting matches. Since its initial release in Firefox 3.0 we’ve tweaked it to give you greater control over the results (including privacy settings) and increased performance so you find what you need even faster.

View the video

At first glance, they look like little labels living above the site you’re currently visiting. But they are a brilliant way to browse multiple sites at once. Simple and easy, you can think of them as the electronic version of a well kept filing cabinet, with the tabs as the dividers and the sites as the content kept in folders. Each new site appears as a new tab (not a new window) and can be accessed in one click.
Tabs screenshot
Easy Organization

Get your sites in order. Simply arrange the order of your tabs by dragging them in one swift move of your mouse. Or, if your browser window is getting cluttered with too many tabs, just drag a tab out of its existing spot and it will automatically open up in a new window.
Location-Aware Browsing

Now Firefox can tell websites where you’re located so you can find info that’s more relevant and more useful (for example, getting directions or finding restaurants near you). It’s all optional – Firefox doesn’t share your location without your permission – and is done with the utmost respect for your privacy.
Password Manager

We’ve seamlessly integrated this feature into your surfing experience. Choose to remember site passwords without intrusive pop-ups. Now you’ll see the “remember password” notification integrated into your view at the top of the site page.
Form Complete

It’s like the Awesome Bar, but for forms. Now, when you’re filling out an online form like your shipping address, Firefox will suggest information for each field based on your most common answers for similar fields in other forms (rather than just showing you an alphabetical list). Instead of typing out the same answers over and over, you’ll be zipping through the forms in no time.
Download Manager

Download files seamlessly and securely! A pause and resume feature means there’s no need to wait for a download to finish before you disconnect. So, if you’re halfway through the latest White Stripes album and it’s time to catch the bus, just pause and pick up downloading when you get home. The resume function also works if your system crashes or is forced to restart. The manager shows your download progress and lets you search your files by name or the Web address where the download came from.
Download Manager screenshot
Smart Keywords

Search the Web in record time with smart keywords. With a few clicks you can assign keywords to search engines, and then simply enter your key and search words in the location bar. With this feature, typing “book home building” can search Amazon.com, and take you right to books about home building without ever pausing at the homepage.
Search Suggestions screenshot
Automated Update

Our open-source security strategy lets us find—and fix—security issues in record time, making Firefox the safest way to surf. Install upgrades when you receive automatic notification or wait until you’re ready.

Label a site with names or categories that are meaningful to you. For example, you can label the site http://www.bbc.co.uk with the “news” tag as well as the “foreign investments” tag, plus give http://www.nytimes.com the “news” tag, too. When you enter “news” into the location bar, both sites will be shown as results. A single site can have multiple tags, and there’s no limit to the number of tags you can create. You may not remember the exact name of a site, but with a tag, you’ll be able to find it in a way that makes sense to you.
Live Support

We have Firefox experts waiting on stand-by to help you with questions that simply demand a live person and a real conversation. Now you can chat with knowledgeable Firefox community members who troubleshoot via our live chat site. You won’t be put on hold or have to wait for a response—solve your problem on the spot.
Reopen Closed Tabs and Windows

If you accidentally close a tab or window, you can reopen it in one click. Just view Recently Closed Tabs or Recently Closed Windows in the History menu and select the tab or window you’d like to reopen.
One-Click Bookmarking

Manage your bookmarks a lot or a little. One click on the star icon at the end of the location bar bookmarks a site. Two clicks and you can choose where to save it and whether to tag it. File bookmarked sites in easy-to-access folders and organize according to theme (like “job search” or “favorite shopping”). Find your bookmarked sites in a flash by entering the tag, page or bookmark name into the location bar. The more you use your tags and bookmark names in the location bar, the more the system will adapt to your preferences.

View the video
One-Click Bookmarking screenshot
Session Restore

Restart the browser without losing your place after you install an add-on or software update. And, if Firefox or your computer unexpectedly closes, you don’t have to spend time recovering data or retracing your steps through the Web. If you’re in the middle of typing an email, you’ll pick up where you left off, even down to the last word you typed. Session Restore instantly brings back your windows and tabs, restoring text you entered and any in-progress downloads, and we’ve updated it to make sure you get back to what you were doing even more quickly than before.
Search Suggestions

Start typing in the search bar and it will prompt you with a drop down of filled-in suggestions, plus you can use the search bar as a calculator, converter and more.
Integrated Web Search screenshot
Pop-Up Blocker

Banish pop-ups (and pop-under windows) from your surfing experience once and for all. Or, find a happy medium—choose to view blocked pop-ups or create an “allow” list of sites whose pop-ups you’re okay with seeing.
Spell Checking

A built-in spell checker lets you enter text directly into Web pages—like blog posts and Web-based email—without worrying about typos and misspellings. Work directly with the Web and save yourself a step.
Spell Checking screenshot

Make your browser as efficient as you can imagine. Your browsing history (all the websites you’ve seen) and your bookmarks (all the websites you’ve saved) are archived in the Library, where they can be easily searched and organized. You can also save your frequent searches in dynamic smart folders that automatically update as your bookmark list and history grow.
Offline Browsing

Take your computer offline and still have information at your fingertips. Certain enabled sites may allow applications—like your Web-based email—to stay with you at all times.
Smart Bookmark

Find things fast with Smart Bookmarks. Click on the Bookmarks menu for quick access to sites organized by most visited, recently bookmarked and recently tagged.
Smart Bookmarks screenshot
RSS Feed Reader

You can read feeds using an online Web service, a client-side feed reader or by creating a Firefox Live Bookmark. So there’s no need to comb the Web for the latest news and updates. See the latest headlines in the toolbar or menu and go directly to the articles that catch your eye.
Smooth Scrolling

Like to have all 20 of your favorite pages open at once? An elegant new feature lets you scroll through tabs easily to see them all and access the one you want quickly.

The find feature appears in a keystroke. Search for a word or phrase on an open Web page. Highlight text before using the feature and finder opens pre-filled with your selection. See all instances of your search at once, or scroll backwards and forwards through the appearances of the word on the page.
Integrated Web Search

Searching the Web is a breeze with the search box inline, just to the right of your location bar. Select the search engine of your choice and type what you want to find directly into the box. The width is adjustable so you can make it bigger if you need more space.
Hundreds of Search Engines

Access your favorite search engines quickly from the integrated search bar. You can use a new engine for each search, or stick to your favorite. Choose from a preset dropdown list of engines or select “manage search engines” from the same list to browse search engine options offered as add-ons. Check out your choices now.
Find screenshot
Full Zoom

Visit your favorite news page and read the caption under the picture—or view the picture itself in a size you can see. An elegant new zoom feature lets you swoop in and see entire web pages. They scale in the way you’d expect them to, with all the elements of a page’s layout expanding equally, so you can zero in on what matters.
Platform-Native Look & Feel

The Firefox platform looks and feels like home. Think of it as a Firefox who’s really good at making friends. Whether you use Windows 7, Mac or Linux, the browser seamlessly integrates into your computer’s environment. A native look makes for a flawless interface that never gives you pause.
Firefox Support

Help is right where you would expect it, as well as a few places you might not. A link at the top of your browser takes you to a support site with the answers you’ll need. Want to dig deeper—or have a really tough question?
Firefox Support screenshot

Firefox’s support website has a searchable knowledge base of articles, plus forums and tutorials full of solutions and tips for a better experience.
Return to top
The Cutting Edge
Next-Generation Graphics

You have to see it to believe it. The rendering of text and graphics, including SVG and Canvas, is faster and sharper than ever before, thanks to our upgraded graphics engine. Firefox automatically color corrects images that have the color profile data included (like your digital photos) to make sure the colors are exactly as intended.
Web Application Integration

Expand the power of Web-based applications. In the past you’d click on an email address in a Web site and your computer’s default email application would open up to send a message to the linked address—even if you never email through the program. Now you can choose a Web mail clients (like Hotmail, Gmail or Yahoo! Mail) to launch when you click on that email address.
Newest Web Technologies

Brand new and enhanced functionalities enable Web site authors and developers to create advanced content and applications. Support is now available for:

* CSS2.1
* CSS3
* SVG Filters
* Ogg Vorbis
* Ogg Theora
* Native JSON
* MathML
* Animated Portable Network Graphics
* Cross-Site XMLHttpRequest
* Microformats
* Web Worker Threads

Open Video and Audio

Introducing the future of online media! Firefox is the first browser to support open video and audio formats, allowing practically limitless new ways for sites to display rich content. The open formats also allow modern web pages to display media without requiring a plugin or a proprietary software download.
Color Profile Support

Do you tweak your photos or Web designs to get the colors exactly right? Now Web pages and photos appear just the way they should, thanks to improvements to our graphics engine.
Return to top
Universal Access
Improved Text Rendering

Read your language as it’s written—more like real life. With a new graphics engine, Arabic, Persian, Punjabi and other script languages now render in a remarkably seamless way.
Downloadable Fonts

View a wider variety of fonts on Web sites while you surf. Site designers and developers can create custom fonts that will be displayed and rendered properly even if you don’t have the font installed on your computer.
Improved Text Rendering screenshot
Emphasis on Accessibility

By minimizing keystrokes, allowing users to zoom in on Web pages and supporting screen readers, Firefox is that much easier to use for those with mobility disabilities and visual impairments.
Universal Customization

Go beyond translation and experience the web in a way that makes sense to you. Local developers who know what’s best for their community have customized your Firefox browsing experience with local dictionaries, search providers, live bookmarks and Web feeds. Depending on where you live, you’ll see things like BBC headlines tailored to your region or experience features that work with Baidu, the Chinese search engine.
The Language of Firefox

Firefox speaks your language like no other browser on earth. Because the Web is a worldwide resource and we believe that resource belongs to the people, we’ve made our browser available in as many local languages as possible. We have over 70 different translations, from French and Chinese to Finnish and Czech. Find your language.
Return to top

Looking For

* mozilla.org
* Wiki
* Developer Center
* Firefox
* Thunderbird

Planet Mozilla
Thursday, 3 February 2011
Mozilla Add-ons Blog — Add-ons Review Update – Week of 2011/02/02

* These posts written every 2 weeks explain the current state of add-on reviews and other information relevant to add-on developers.
* A few weeks ago, a new version of the Developer Tools was pushed live at AMO. It includes a new review process among a ton of other changes. More information here.
* Nominations at the moment are being processed very slowly. The new review system required hundreds of add-on developers to renominate their add-ons, which has placed a large workload on the editor team. Updates and preliminary reviews are under control, but nominations have been delayed at least a couple of weeks.
* Most updates are being reviewed within 5 days.
* Most preliminary reviews are being reviewed within 10 days.

The Review Queues

* These stats are taken from the last queue report. Preliminary queue stats are still pending.
* 97 new nominations that week. 534 nominations in the queue awaiting review (yeah, that’s not a typo).
* 81 new updates that week. 109 updates in the queue awaiting review.
* 2416 reviews were performed by AMO Editors in the month of January. That’s a new review record for us 🙂

Firefox 4 Compatibility

Firefox 4 will be released very soon, beta 10 is currently available for download and AMO already supports 4.0.* as a valid maxVersion. Most of the necessary documentation to upgrade your add-on for Firefox 4 is readily available:

* Firefox 4 for developers at MDC.
* Making your add-on compatible with Firefox 4.
* Firefox 4 Compatibility discussion in the Add-ons Forum. This is the best place to post any feedback and bugs related to Firefox 4 and add-on development.

Beta 7 was the first release after the codebase went through feature freeze. This means that no major changes are going to be performed, and add-ons that work correctly on current betas are likely to work in the same way until the final release. Here are some pending issues of Firefox 4 compatibility that haven’t been addressed in other blog posts:

* Since toolbar buttons are very important for developers and button sizes changed for Firefox 4, I wrote this analysis of toolbar buttons and icons in Firefox 4. One problem was brought up in the comments, which triggered the creation of bug 616472. The bug and its dependencies are progressing, and hopefully all the fixes will be included on the next beta. Once they make it to a beta or release candidate, I’ll post an update to the toolbar button article.
* I posted an explanation about the threading and worker changes in Firefox 4. If your add-on used the Thread Manager and doesn’t work in Firefox 4, that article is meant for you.
* The Add-on Bar is supposed to appear automatically when a button or other items are added to it. Bug 616419 was filed for this. It doesn’t look like it will be fixed soon, but an alternate solution is proposed in the comments.

Notes for Developers

* Add-on Performance at XUL School. This article is highly recommended to all developers. It explains a few methods to improve add-on performance, including how to easily measure startup times.
* The AMO Editor Guide. This new page in the wiki is a comprehensive guide to the work performed by AMO Editors. It will serve as an introductory guide for new editors, and is a step forward in being as transparent as possible with our review process. It’s currently being edited to adjust it to the upcoming review system.
* Useful Information for Add-on Authors. How to improve review times for your add-on, information about the review process, etc.

Jorge Villalobos

Add-ons Developer Relations Lead, Mozilla
by Jorge at Thursday, February 03, 2011 12:56:12 AM
Gervase Markham — Bugzilla API 0.9 Released – INCOMPATIBLE CHANGES

Version 0.9 of the Bugzilla REST API has been released.

This version has INCOMPATIBLE CHANGES in the data format – some field and parameter names have changed (see below). Therefore, the “/latest” installation on https://api-dev.bugzilla.mozilla.org has not been updated with it yet. It will be updated on

Wednesday 2nd March

which is 1 month from today. At that point, all clients using that installation must be able to deal with both old and new formats.[0] If you want to only support one format, you can update your code and migrate to the /0.9 installation at any point before then.

Also, 0.9 fixes BzAPI to deal with some late-breaking Bugzilla 4.0 changes. If you are deploying Bugzilla 4.0, this is the version you will need.

People deploying installations of 0.9 against their own Bugzillas should take note of the “Upgrading” section below.
New In 0.9

* Field name changes to match XML-RPC API
* Bugzilla 4.0rc2 now fully supported

Compatibility Notes

* Four field names on the “Bug” object have changed, to match the names chosen for the Bugzilla XML-RPC API’:
o reporter -> creator
o is_reporter_accessible -> is_creator_accessible
o token -> update_token
o is_everconfirmed -> is_confirmed

In each case, you will need to change your code to look for the first hash value and, if it’s not found, look for the second one.

* The emailN_reporter field is now called emailN_creator, to match the
above change.

* Versions 0.6.1 and 0.7 are now no longer available on the api-dev

Upgrading Your BzAPI

BzAPI now comes with a Bugzilla extension, suitable for 3.6 and above, which replaces (most of) the patches that we used to ship. Unless you are on an earlier version of Bugzilla, please remove the old patches (except the XML-RPC one) and install the extension instead. You may want to symlink it so it automatically gets updated in step when you upgrade BzAPI.

Those choosing not to do this will still need to take a new version of config.json.tmpl from the patches/ directory.

File bugs | Feedback and discussion

[0] I apologise for not having a better backwards-compatibility story, but it was very difficult to update all the tests to support the data being duplicated in two field names. I tried, and gave up as it was taking too long. And this is pre-1.0 software (just).
© gerv at Thursday, February 03, 2011 12:21:18 AM
Wednesday, 2 February 2011
Aza Raskin — Massive Health: Raised Money, Spending On New Hires

This blog post is by my cofounder Sutha Kamal, who is Massive Health’s fearless CEO. He is by the smarter of the two of us. He has previously sat on the other side of the VC table and most recently was the acting-CTO for Fjord, which is the mobile design firm responsible for making the a lot of the mobile experiences you have every day as good as they are. As a side note, the best gift I’ve ever received is having the funds we raised for Massive hit our bank account on the day I turned 27.

Aza and I have spent the last few weeks trekking up and down Sand Hill road, speaking with investors and looking for firms and individuals who share our mission to help people get healthy, and can help us build a great company. As a result, we’re excited that we’ve raised a $2.25 MM seed round from Felicis VC, Greylock Discovery Fund, Andreessen Horowitz, Mohr Davidow Ventures, Charles River Ventures, and Collaborative Fund. We’ve also got some amazing angels behind us, but our PR folks have asked us to keep the list short.

And now that we are funded, we are hiring.

Our goal at Massive Health is to bring the kind of innovation we expect from the Internet world to health care. As Aza mentioned, we’re excited to encourage a design renaissance in health care. We’re also excited to bring “big-data” analysis and other techniques to discover insights that improves lives. Crowdsourcing, game mechanics, and social networking are cool, and applying it to helping someone get and stay healthy? That’s exciting. That’s powerful.

There are some great companies in the consumer health space today, so what makes us different? Massive Health sits at the intersection of health care and consumer products. There are some great wellness and fitness apps out there. Whether it’s Nike+, or Cyclemeter (my personal favorite), if you want an app to help you get and stay active, you’re spoiled for choice. But what if you’re actually ill? Then there’s nothing sleek or sexy to help you manage your disease. You’re back to the world of clinical health applications that aren’t especially friendly, easy to understand or use, and certainly aren’t social. Today’s apps don’t appreciate that you’re a person. That’s simply not good enough.

We’re not proposing giving you a badge for eating your broccoli or letting you check-in and become duke of ranch dressing. Tweeting the details of your health isn’t particularly useful either. We are talking about tight feedback loops and deep insight into the interface which is your body. There is something magical in the intersection of health, motivation, data analysis, and your social graph. That’s where habits are formed, behaviors are changed, and people get healthy.

Doug Soo—our engineering lead—was employee #6 at Linden Lab, the makers of Second Life. They make enormously scalable systems and a product that’s fundamentally about people. It’s not a coincidence that he’s joined us.

We’re still in ninja mode, so we’re keeping the specifics under wraps. What we can say is that we’re looking for great people who believe in the social mission of helping people get healthier. Not just for wellness, but for the real health problems that plague our nation and the world. If our mission resonates with you, and you’re a great engineer with a lot of passion, we’d be honored if you’d check out our open jobs list. Otherwise, stay tuned… we’re excited to share more soon!

Related posts:

1. Leaving Mozilla, Starting Massive Health

by Aza Raskin at Wednesday, February 02, 2011 11:55:54 PM
Kevin Dangoor — More challenging puzzle for the devtools job

Yesterday, I posted about the Developer Tools Engineer position we’re hiring for at Mozilla. The response to my little puzzle has been terrific, but “it’s too easy” was a common refrain. So, I decided to add two more little puzzles that follow the first. The puzzles are not intended to be time consuming, but they do use a couple of modern browser features.

Give it a whirl and say hi if you make it all the way through. One person completed it last night after I put it up but before I had a chance to write this blog post.

Update: it looks like this may only work in Firefox at the moment, and possibly only Firefox 4.
by Kevin Dangoor at Wednesday, February 02, 2011 10:20:01 PM
Kevin Dangoor — More challenging puzzle for the devtools job

Yesterday, I posted about the Developer Tools Engineer position we’re hiring for at Mozilla. The response to my little puzzle has been terrific, but “it’s too easy” was a common refrain. So, I decided to add two more little puzzles that follow the first. The puzzles are not intended to be time consuming, but they do use a couple of modern browser features.

Give it a whirl and say hi if you make it all the way through. One person completed it last night after I put it up but before I had a chance to write this blog post.
by Kevin Dangoor at Wednesday, February 02, 2011 10:20:01 PM
Gervase Markham — WOT and “Trustworthiness”

It is regularly suggested that Firefox should have something like WOT (Web of Trust) for verifying the trustworthiness of websites. People often propose this as a replacement for the SSL model of identity verification (although SSL says nothing about trustworthiness, only more or less about identity) or as a replacement for Google’s list of attack sites and web forgeries.

A friend of mine recently wrote an interesting and informative blogpost. I sent a link to another friend today, who viewed it and then replied back:

That site has a truly dreadful WOT rating – who did he upset?

And a small amount of thought about that, my friends, will tell you why WOT is unsuitable for Firefox.
© gerv at Wednesday, February 02, 2011 9:19:38 PM
Bogomil Shopov — Mozilla.bg – latest page into Mozilla’s ecosystem

I am proud to announce that we, Bulgarian Mozilla community finally have mozilla.bg domain and new awesome website, based on WordPress, thanks to the hard work of the whole community.

A big thank you goes to Mark Surman, Liz Compton and Anthonia Zimmermann for all boring paperwork.
by Bogo at Wednesday, February 02, 2011 9:01:15 PM
Mozilla IT — Mozilla Scheduled Maintenance (Tree Closure) – 2/3/2011, 6am PST (1400 UTC 02/03/2011)

We will have a scheduled maintenance window Thursday Morning from 6am to 9am PST (1400-1700 UTC)

All Firefox, Fennec & TryServer trees will be closed during this window.

* 6:00am PST (1400 UTC) FTP storage cutover.
We will be doing the final cutover to increase storage space for ftp.mozilla.org Starting around 3:00am PST, we’ll be running rsyncs while the last builds complete before the downtime. After tree-closing downtime starts at 6am, we’ll do one final rsync from the old partition to the new. We will be holding off on nightly builds until after the downtime is completed.
We expect this to take until approximately 8:00am PST to complete.
More details in bug 629509.

While the tree is closed, we’ll do some additional work:

* 6:00am PST (1400 UTC) Talos Snow Leopard upgrade to 10.6.6.
RelEng will update all of the 10.6 Snow Leopard machines to Mac OS X 10.6.6. More details are in bug 629509, and is necessary for hardblocker bug 629016.
* 6:00am PST (1400 UTC) Graphserver update to report results to AMO.
We will be pushing an update to graphserver that will allow Talos results to be posted to the AMO database. More details in bug 623386.
* 6:00am PST (1400 UTC) Reset TryServer repository
We will be resetting the tryserver repo to deal with ongoing performance issues and intermittent timeouts. More details in bug 629268.

by amilewski at Wednesday, February 02, 2011 1:45:46 PM
Meeting Notes from the Mozilla community — Thunderbird Meeting Minutes: 2011-02-01
From MozillaWiki

* Minute taking Schedule. Talk to davida or dmose for schedule changes/additions.
* Note: this meeting is for interactive discussion. Feel free to ask questions!

Action Items
Friends of the Tree

Thanks to our Friends of the Tree When adding someone to this section, please get their T-Shirt size and send it to rebron@mozillamessaging.com so that he can send them a shirt!
Conversion Funnel (Priority 0 side project)

* Funnel Cake 5 still to be scheduled. Will be testing some changes on the download page to optimize for speed and then push out FC 5.

* Steady over 40% on ISPDB success rate.

Thunderbird Development

For more details, see also the driver meeting notes.
Feature Work

Account Provisioner:

* Contracts continue to be worked on.

* We’re also working on making a version that’s bundled with TB for wider testing.

Pluggable Mail Stores (bug 402392):

* Working on design for migration code – random thoughts here – https://wiki.mozilla.org/Thunderbird:Pluggable_Store_Migration

Thunderbird Conversations

no update
Thunderbird Sync

* patches in queue for sync team

* need to coordinate an add-on release

Trunk (Miramar) Development

* Active branches.

* 3.3a2 Released
* Help on fixing blockers would be very useful and appreciated, see this list of higher priority bugs.
* blocking criteria :
o Alpha n -> Serious usability issues.

o After -> no real criteria, regression/usability issues as usual.

Thunderbird Stability & Security Releases

* 3.1.8 is out on beta channel. Expected release next week.

* Bug Lists: 3.1

Major updates to 3.1
QA Updates
Marketing Updates

* Press Update: a couple articles on Miramar Alpha 2, continued mentions in Washington Post, and nice article on Web Application Tab extension

* Thunderbird ADUS up at 6.9MM, 12% on Thunderbird 2; Top Locales: Germany, US, France, Japan, Italy
* Up next:
o Getting a handle on Cebit.

o More web site, coordinating design work.

Infrastructure Update
Build / Release Update

* Request in to get download metrics (bug 630379). The intent is to get a better understanding of who our current customers are.

Web Update

* 1Q2011 support goals revised

Lightning Updates

(from gozer):

* 64 bit builders working

* buildbuit master means nightly l10repacks this week for Lightning

Status Updates

See the Mozilla Status Board for status updates specific to developers.
Roundtable Highlights
Retrieved from “https://wiki.mozilla.org/Thunderbird/StatusMeetings/2011-02-01“
by Jesper Kristensen at Wednesday, February 02, 2011 11:00:07 AM
Thursday, 3 February 2011
Meeting Notes from the Mozilla community — Mozilla Platform Meeting Minutes: 2011-02-01
From MozillaWiki
< Platform

« previous week | index | next week »
Notices / Schedule

Firefox 4

* Today is the day to decide beta 11 (and thus beta 12) plans

Firefox 3.6.14 and 3.5.17

* In beta, still plan to ship on the 8th unless something comes up(on schedule)

Firefox 3.6.15 and 3.5.18

* Draft schedule coming this week

Blocker Report

Firefox 4 Beta

* http://blocker-reports.brasstacks.mozilla.com

o 39 nominations need triage

o 10 blockers need prioritization
* http://office.smedbergs.us/blocker-report/

Blocker report for Firefox 4.0.betaN (as of 2011-02-01 10:37:33.617400-08:00)


blocking: 1703

fixed: 1589

open blockers: 114
has patch: 73
no patch: 41

open hardblockers: 33
has patch: 28
no patch: 5

open softblockers: 64
has patch: 35
no patch: 29

uncategorized blockers: 17
has patch: 10
no patch: 7

Outstanding Review Requests

brendan@mozilla.org: 5 +++++
gavin.sharp@gmail.com: 4 ++++
dao@mozilla.com: 3 +++
honzab.moz@firemni.cz: 2 ++
roc@ocallahan.org: 2 ++
joshmoz@gmail.com: 2 ++
jones.chris.g@gmail.com: 2 ++
jst@mozilla.org: 2 ++
dolske@mozilla.com: 2 ++

Firefox Development

* Of 79 total hardblockers, only 14 remain, with 11 of those being beta hard blockers.


* 8 hardblockers

* 1 betaN blocker:
o bug 629016 – blocked on test slave upgrade to 10.6.6.
* We still need help from people who can reproduce bug 603793, menu disappears on submenu mouse over.
o If your menus disappear on Windows, please contact joe@mozilla.com.


* Nice drop in blocker count (to 41)

* Two betaN blockers:
o bug 508816

o bug 573960
* 10 hardblockers


* bug 626602 (fixing transparent windowless plugin rendering by copying backgrounds)

o We have working code

o Patches going up for review
o We also have a plugin rendering performance benchmark based on “GUIMark3″. It quantifies the perf hit for not taking bug 626602 (massive), and is helping us optimize.


* 14 hardblockers left, all but 3 actual bugs are plugin issues

Tree Management

* Need downtime for

o [hardblocker] OSX 10.6.6 upgrade on test machines (~2hr, all branches) bug 629509

o ftp partition re-org (~5h, all branches) bug 614786
o Try server reset (~5h, just try) bug 629268
o graph server changes (??, all branches) bug 623386
* proposing Thursday morning, early morning Pacific 6am-8am PST for some or all of the above

Stability Report

* Beta10 – Top crasher Bug 628152 was under the radar in early Beta10 testing, then exploded. Fixed for Beta11.

* Trunk – Some stability issues mostly due to Bug 629912. Now fixed. A couple of other regressions due to additional accessibility fixes.
* Missing symbols for some crash signatures – A problem introduced when we moved the Sicorro data center to Phoenix. The solution for getting the build symbols to Phoenix is not performing (taking 15 hrs). Many signatures like xul.dll@0x189e71 scattered in crash reports. No visibility into what the crashes are – risks there.
* Although we are doing well stability-wise for FF4, we are tracking all the crash signatures that are new to FF4 and not in 3.6.13 and their status. We have already determined we cannot fix some of these but still worth keeping on the radar since we don’t know what will happen when we release. We may need to provide some emergency fix for something. https://wiki.mozilla.org/CrashKill/Firefox4#Crash_Regressions_From_3.6.13


* We’ll be going through the beta blockers right after this meeting. Also, triage will happen, too. Stick around and talk about your beta blockers.

* Should we take bug 355178 on beta 11? (ehsan)
o An analysis of the risks and benefits is available here.

o We need this for beta 11 if we decide to take it for 2.0.
* When to tag Beta 11 (clegnitto)

Retrieved from “https://wiki.mozilla.org/Platform/2011-02-01“
by Jesper Kristensen at Wednesday, February 02, 2011 11:00:04 AM
Robert O'Callahan — Distinguishing "Embeddable" Versus "Readable" Web Resources Considered Harmful

Sorry for the "considered harmful" title, but I haven't had time to think of a better one!

The Web platform distinguishes between "embeddable" and "readable" resources. Traditionally cross-origin subresource loads, such as image loads, produce a resource that is "embeddable" (e.g. rendered) but not "readable" (i.e. exposing the conents of the resource to the containing page).

However, the distinction between "embedding" and "reading" is arbitrary, because "embedding" almost always leaks some information about the resource. For example, cross-origin image loads leak the size of the image and whether it exists. When we design new Web APIs we have to decide whether they should be allowed for embeddable-but-not-readable resources, and if they are allowed, whether any information leak is tolerable — or else we design some mechanism to control the spread of the information leak. For example, the HTML5 canvas spec allows cross-origin images to be drawn to a canvas, but prevents the ultimate leak of pixel data by "tainting" the canvas so that getImageData no longer works.

Unfortunately, this design process has problems. Sometimes combinations of features extend the spread of information into a full leak; for example, by combining CSS pointer-events, SVG filters, IFRAMEs, and DOM APIs you might be able to extract image pixel data cross-origin.

Every time we declare that some leak of information is "tolerable", we implicitly create strange requirements for Web authors, for example "secret information must not be correlated with the sizes of any images at guessable URLs in your intranet". As another example, if we decide that fonts are innocuous and create an API that gives Web authors full access to the contents of a cross-origin-loaded font, we implicitly declare that for all time, fonts will not and must not contain origin-private data. Such decisions seem dangerous to me; they're bets against serendipity and the ingenuity of attackers.

Needless to say, every time we create restrictions or workarounds for embeddable-but-not-readable resources, we add complexity for Web authors, who, for example, may be surprised when canvas's getImageData fails due to an invisible taint bit, quite removed from the drawImage that set the taint bit.

Worst of all, it seems to me that this distinction between "embedding" and "reading" has very limited usefulness beyond compatibility with legacy requirements. What are use-cases where an author wants their resources to be embeddable cross-origin, but doesn't want other sites to be able to read the contents of the resources? The only case I can think of is "IFRAME widgets" that contain user data private to a different origin to the enclosing page. In those cases the IFRAME needs to be embeddable but retain its integrity against intrusion by the enclosing page. This use-case is actually not well-served by the IFRAME API, which suffers from serious deficiencies such as clickjacking. I don't know of any use-cases for an embedding vs reading distinction with other APIs.

I don't think the distinction between "embedding" and "reading" was a conscious design decision. It seems that when , and first appeared, cross-origin loads were allowed because no-one had thought of the problems that would arise. Then when APIs emerged that allowed reading the full resource data (e.g. XHR and getImageData), we realized we couldn’t allow that cross-origin, but we couldn’t break compatibility with cross-origin embedding, so we were forced to distinguish between embedding and reading.

We’re saddled with this distinction for existing APIs. However, I think we shouldn’t perpetrate it in new APIs (or any API where the compatibility burden of discarding it is low). I think in new Web APIs we should refuse to distinguish between embeddable and readable resources unless there are significant use-cases that require it. In practice, since readability usually needs to default be same-origin only, we will usually need to default to denying cross-origin embedding, and let sites opt-in to cross-origin reading and embedding using CORS or some other mechanism.

People I respect disagree, on the grounds that allowing cross-origin embedding for new resource types is more consistent with existing practice and author expectations. Their point is valid but I think that consistency is outweighed by the problems above.
by roc at Wednesday, February 02, 2011 9:26:47 AM
Michael Kaply — Running Add-on Code at First Run (and Upgrade)

Running code when your add-on is first installed or upgraded is pretty common. You might need to install a toolbar button or display a web page. I’ve seen a few different ways to do this, so I thought I’d show how I do it in my add-ons.

The best way to demonstrate this is with some sample code. I’ll make some comments on at the end.

var firstrun = Services.prefs.getBoolPref(“extensions.YOUREXT.firstrun”);

var curVersion = “0.0.0”;

if (firstrun) {
Services.prefs.setBoolPref(“extensions.YOUREXT.firstrun”, false);
Services.prefs.setCharPref(“extensions.YOUREXT.installedVersion”, curVersion);
/* Code related to firstrun */
} else {
try {
var installedVersion = Services.prefs.getCharPref(“extensions.YOUREXT.installedVersion”);
if (curVersion > installedVersion) {
Services.prefs.setCharPref(“extensions.YOUREXT.installedVersion”, curVersion);
/* Code related to upgrade */
} catch (ex) {
/* Code related to a reinstall */

Some comments on the code.

* I usually put this code in the JS file included in my XUL overlay. I don’t put it in a module. This makes it much easier to test it, since I can simply reset the preference and open a new window.
* I used Services.jsm in this example to make it simple. I don’t use Services.jsm, I roll my own custom Services file. I’ll show how in a future post.
* During development, I hardcode my version to 0.0.0. In my previous add-ons, I queried the version from the extension manager, but someone pointed out to me that this was a waste of code. Now what I do is parse install.rdf to get the current version and replace 0.0.0 with that version at runtime.
* I use a simple comparison for my versions, but if your versions are more complex (involving letters for instance), you should use nsIVersionComparator.
* There is no need for a try/catch around my call to get the firstrun preference because I put this line in my default preferences file.

pref(“extensions.YOUREXT.firstrun”, true);

* In order to tell when a user has reinstalled my add-on, I remove the installedVersion preference when my add-on is uninstalled. I leave the firstrun preference behind.
* If you’re going to display a web page at first run, here’s how you do it:

gBrowser.selectedTab = gBrowser.addTab(“http://example.com&#8221;);
}, 1000);

I found that if you don’t use a timeout, the page will intermittently not display.

Hopefully this code is useful to you. Let me know in the comments if you have any suggestions.
by Mike Kaply at Wednesday, February 02, 2011 9:13:55 AM
about:mozilla — Last call for Game On votes, Contributor Town Halls, New Firefox 4 Beta for Android and Maemo, and more…

In this issue…

* Game On Finalists: Voting ends today!
* Contributor Engagement Town Halls: North/South America + Asia
* Thanks to all MDN Doc Sprint participants!
* New Firefox 4 Beta for Android and Maemo here
* Evolving the front door to Mozilla
* “Best in Show” Mobile Add-on Developer Gives Back!
* Update on Mozilla’s web security bounty
* Introduction to Ehsan Akhgari
* PBS NewsHour and Mozilla team up for an awesome project
* Join Mozilla – First looks at creative
* Upcoming events
* Developer calendar
* About about:mozilla

Game On Finalists: Voting ends today!
Julie Choi reports that the Mozilla Labs Open Web Games contest has narrowed the finalists to 35 and community voting is open until Feb 1. Even if you don’t vote, you can enjoy these excellent browser-based games with friends.

Contributor Engagement Town Halls: North/South America + Asia
The new contributor engagement team (that’s us) will be hosting a series of town hall meetings to share early 2011 plans, get feedback and brainstorm. They’ll be hosted across three regions to accommodate the most timezones and community. First up: North/South America hosted by Mary Colvig, David Boswell and Juan Becerra (habla español). If you’re a contributor in these regions please vote on the best time and date.

Gen Kanai is planning the same for contributors in Asia. This meeting would be a conference call and IRC chat to discuss contribution at Mozilla. If you would like to participate and/or give feedback, please visit Gen’s blog post to select the best times on Feb 7-9.

Thanks to all the MDN Doc Sprint participants!
Janet Swisher reports back on this past weekend’s doc sprint and the participation was great! 30 people from over 12 countries worked on 300 documentation pages. According to Janet, “This sprint provided a couple of instances of cooperation with other organizations that I believe bodes well for MDN’s future as a resource, not just for Mozilla technologies, but for open web technologies in general.”

New Firefox 4 Beta for Android and Maemo here
You can get the latest Firefox 4 Beta from the Android Market to test on your Google Android device or go here to get Firefox 4 Beta on your Nokia Maemo device. It’s the fastest yet: “You will notice faster start-up, page load times and responsiveness to panning and zooming.”

Evolving the front door to Mozilla
David Boswell writes about the efforts to update the “Getting Involved with Mozilla” website. David also shares the news about a new community phonebook project that will help community members get in contact with each other across communities. This is something that has been requested for a long time and should help communication between Mozilla’s communities. Gerv Markham has a proposal for the community phonebook up for review.

“Best in Show” Mobile Add-on Developer Gives Back!
Chris Finke snagged “Best in Show” in the Mobile Add-ons Cup with Tapsure, an add-on that allows you to input passwords on sites by tapping a rhythm on your touchscreen. Not only did he create a great add-on, but elected to donate proceeds of his prize to Mozilla’s Open Web Fund, Drumbeat. Thanks, Chris!

Update on Mozilla’s web security bounty
Chris Lyon, Mozilla’s Director of Infrastructure Security, writes to remind us that Mozilla has expanded the list of Mozilla web services that are eligible for a security bug bounty. Please read Chris’ post for a full list of eligible websites as well as a link to the FAQ for the bug bounty program.

Introduction to Ehsan Akhgari
Ehsan Akhgari has a wonderful post about how he came to contribute to Mozilla. He writes about how the path to Mozilla was not necessarily direct and that it was the impact of the software on users that was a critical factor in why he chose to work on Mozilla. It encapsulates many of the reasons many of us contribute to Mozilla.

PBS NewsHour and Mozilla team up for an awesome project
Brett Gaylor shares a “blow by blow” summary of his trip to Washington, DC last week where he participated in a cool web video project with the PBS NewsHour team (an evening TV news program). They created an annotated version of President Barack Obama’s State of The Union Speech using popcorn.js, showcasing the kind of innovation that Mozilla Drumbeat is trying to foster with Web Made Movies.

Join Mozilla – First looks at creative
Chelsea Novak shared the design concept for the landing page for the Join Mozilla program. Join Mozilla is a program that combines the best of Mozilla’s user engagement and fundraising activities in the past and takes them to next level: making it easy for the millions of people who love Firefox and Mozilla to be connected to what we’re doing and help us create the new projects and ideas that will keep the web open for decades to come.

Upcoming events
* Feb 5-6, Brussels, Belgium, FOSDEM 2011
* Feb 12, Mountain View, CA, Dare 2b Digital 2011
* March 1 – 5, Hannover, Germany, CeBIT
* April 9-10, Bulgaria Web Summit 2011

Developer calendar
For an up-to-date list of the coming week’s Mozilla project meetings and events, please see the Mozilla Community Calendar wiki page. Notes from previous meetings are linked to through the Calendar as well.

About about:mozilla
about:mozilla is by, for and about the Mozilla community, focusing on major news items related to all aspects of the Mozilla Project. The newsletter is written by Mozilla’s contributor engagement team and will be published every Tuesday. This week’s issue is a collaborative effort.

If you have any news, announcements, events, or software releases you would like to have included in our next issue, please send them to: about-mozilla[at]mozilla.com.

You can also subscribe to the email version!
by Mary Colvig at Wednesday, February 02, 2011 8:14:18 AM
Aza Raskin — My Father’s Final Gift

Jef Raskin, my father.

Twenty five days before my father died, on my birthday exactly six years ago, he gave me a present. He had the sparkle back in his eye—the one that had been reduced by pancreatic cancer to an ashen ember—when he gave it to me. It was a small package, rectangular in shape, in crisp brown-paper wrapping. Twine neatly wrapped around the corners, crisscrossing back and forth arriving at a bow crafted by the sure hands of a man who built his first model airplane at age seven.

This small brown package will be the final gift my father ever gives me.

My family does gifts strangely. For instance, we have our own mangled interpretation of hanukkah, where each person of the family has a night to give out presents. If we have five people home for hanukkah, we celebrate only five of the eight nights. The joy of gifts are in the giving, not receiving, so before opening your present you must first guess what’s inside. This tradition is “plenty questions”, a more forgiving version than the standard twenty questions.

“Animal, Vegetable, or Mineral?”, I ask.

“It’s the kind of clear insight for which all designers and inventors strive: beauty in the simplicity of using constraints as advantages.”

We are in it for the game of teasing the gift out of the gifter. It’s like extracting a ball of yarn from a kitten. The tugs, pulls, and misdirections are the fun. The question must answerable by a simple “yes” or “no”. Naturally, the later into the questions we get, the more liberal this rule becomes. We don’t break the rule exactly, but answers become not-exactly’s and yes-but’s. In past years, the givers have often spent hours creating elaborate disguises for the gifts. I’ve shaped styrofoam into a fantastic reptilian shape to disguise a pair of earrings for my mother. She guessed them perfectly anyway. There may be collusion going on.

“Mineral”, my father says.

We often waste questions on silly asides. We ask about refrigerators and ostrich eggs when the gift is clearly book shaped. But my father is sick. Where there was once the thought that a cure might be found, only fleeting misplaced hope remains like a high school summer fling dissipating in the face of college. We know there isn’t much time. Still I ask.

“Is it bigger than a bread box?”, I stare at the package in my hands. In it is my father. The man who invented the Macintosh and misnamed what should be the “typefaces” menu the “fonts” menu. He never forgave himself for his incorrect usage of English. He groomed with exacting use of language and considered that mistake a failure of being young and reckless with semantics. The man who invented click-and-drag was now the man who could hardly keep his gaze focused on his son. The box is, of course, smaller than a bread box. It’s a question we always ask. My family smiles only out of habit.

“No”, my father says. A long pause. “No”, he says again, “it is smaller than a bread box. Smaller and sharper.” He speeds the guessing game along. Time.

“The metallic smell of water fresh from a pipe whipped my nose and water flooded the floor.”

“Sharper?”, I ask. A knife? The box is too small for a typical kitchen knife. It could be a Swiss Army knife. Jef always carries one. The big blade is for food, the little blade for everything else. He gets a bit indignant if you borrow it and use the wrong blade. I have a Swiss Army knife, but I haven’t carried it since airport security theater ramped up after nine eleven. It probably isn’t a knife. Maybe a razor? One can’t just ask outright, that doesn’t give enough information when you are wrong. Something sharp could be many things. Seeking something more strategic I ask, “Can it be found in a bathroom?”.

Long pause.


Three days before he passed, Jef had an accident. He needed to use the restroom, so—stooped under his arm—I supported his weight as he hobble to his business. There was something quietly unsettling about escorting my father to a toilet that had been taller than me when we first moved into the house twenty years earlier. I sat him down, walked out, and closed the door. Moments later, a crash jolted the house. I slammed the door open. The metallic smell of water fresh from a pipe whipped my nose and water flooded the floor. The toilet was dislocated from its base like an arm from its socket, and lodged between the toilet and the wall was my father. Despite his size, he looked small and meager. He stared up at me with eyes full of innocent surprise. Why am I on the floor, they asked? Why am I wet? The shocked curiosity in his wide-open eyes is the single most haunting image I have of my father. In the dark space between closing my eyes and falling asleep, that image sometimes steals in and taints me. When it does, there is no help for it. I have to get out of bed and go for a run. Otherwise, sleep will be overshadowed by those confused, guileless eyes.

“It must be a razor?”, I ask. He nods his assent with a satisfied smile. He gestures for me to open it. Carefully undoing the knot, the twine, and the paper reveals a cardboard box on which he has written “For Pogonotomy”. Of course there is a word for beard trimming, and of course my father knows and uses it. In high school, I played a trick on my teachers: in every essay I used my own made-up word. I used “indelic” to mean something between “endemic” and “inextricably entwined”. No matter how many times I trotted it out, not one of my teachers caught me. I used it once in passing with my father and he immediately but gently pointed it out as a non-word. Some men spend time meticulously trimming their beard. My father trimmed his vocabulary. Language is communication, and my father was fastidious about it. Often when we got into particularly deep conversations, he’d pause and continue the rest of the discussion in written form where he could distill his thoughts into a sharp crystalline relief.

The razor itself was a vintage safety razor. Looking at it, I understood his intent. It is an inventive and simple design. The razor takes a flat blade and arches it under a metal shield, giving the blade both greater mechanical strength as well as a protective sheath that keeps you safe. It’s the kind of clear insight for which all designers and inventors strive: beauty in the simplicity of using constraints as advantages.

It’s that message, rendered in steel and wood, that was my father’s final gift to me. A way of looking at the world through the lens of playful questioning. That razor remains with me as a physical reminder of an incorporeal way of thought. Twenty five days later, the razor remained but my father did not.

Jef, I miss you.

Related posts:

1. Enso Released: In Memory of Jef Raskin

by Aza Raskin at Wednesday, February 02, 2011 7:56:46 AM
Matt Thompson — Connect. Share projects. Hack everything.

This post contains the new copy and messaging we’re shipping for the Mozilla Drumbeat web site re-launch. We’ll be constantly iterating and improving as we go, so continued feedback is awesome. For context, see these posts:

* What the frak is Drumbeat?
* Drumbeat’s new front page [insert awesome here]
* Your feedback on Drumbeat’s new messaging

Front page
Connect. Share projects. Hack everything.

Drumbeat is a global community of innovators like you, 
building a more awesome web and world.

* Connect with others.
* Find great projects.
* Or share your own.

Alternate front page headlines

…are here on slideshare. To consider for future use.
About page

Updated copy is here.
F.A.Q. page

Updated copy is here.
Dance Steps for Drumbeat

A “How To” for Drumbeat Projects. Copy is here.

An overview page for Mozilla.org audiences. Staged version is here.
What is Drumbeat? (in one tweet)

#Drumbeat is a global community building a more awesome web & world. Connect with others. Find projects. Share your own http://bit.ly/aDkeqV

by openmatt at Wednesday, February 02, 2011 5:39:25 AM
The Mozilla Blog — New Firefox 4 Beta for Android and Maemo is Faster than Ever

We are excited to release the latest Firefox 4 Beta for Android and Maemo. You can get Mozilla Firefox 4 Beta from the Android Market to test on your Google Android device or go here to get Firefox 4 Beta on your Nokia Maemo device. This release is the fastest performing Firefox 4 Beta for mobile yet. You will notice faster start-up, page load times and responsiveness to panning and zooming. The Firefox Mobile Add-ons Gallery also offers more than 100 add-ons to customize the features, functionality and look of your Web experience.

You can watch this video to see some of the popular Firefox 4 Beta for mobile features in action.

In response to valuable feedback from the previous beta, this release greatly enhances performance. Our recent tests on JavaScript benchmarks show Firefox 4 Beta is faster than the stock Android browser; roughly three times faster on Kraken, about twice as fast on SunSpider and slightly faster on V8. Everything from start-up time and page load time to responsiveness and panning and zooming are snappy in this release. Other advancements in this release include increasing stability, reducing installation memory usage, improving readability with zooming, and fixing some keyboard issues.

Firefox 4 Beta for Android and Maemo delivers the Firefox experience, complete with performance, customization and security users expect, to mobile devices. Firefox 4 Beta for mobile is built on the same technology platform as Firefox 4 for the desktop, optimized for browsing on a mobile device. It includes features like Firefox Sync, Add-ons and the Awesome Screen, to give users a personalized and effortless mobile browsing experience. Firefox Sync is integrated into Firefox 4 Beta to synchronize history, bookmarks, open tabs, passwords and form data across multiple computers and mobile devices, delivering one seamless Web experience with minimal typing.

The growing Mobile Add-ons Gallery offers more than 100 add-ons to customize the features, functionality and look of Firefox. Developers can now create mobile add-ons for Firefox that allow a user easily install and use that add-on without the need to restart their browser. With Firefox 4 Beta for mobile, developers can use the latest Web technologies like HTML5, CSS and JavaScript to build fast, powerful and beautiful mobile apps and add-ons that can reach millions of people. Firefox 4 Beta already has many useful mobile add-ons to choose from and we can’t wait to see what developers build next.

We were able to accomplish many great additions and improvements in this release thanks to the feedback from our beta testers. As we continue to work on adding features and enhancing performance, we need help from our beta testers to build the best Firefox.

* Give feedback – Tap on Give Feedback on the Firefox for mobile Start page
* Get Help – Ask a question and get answers with Firefox for mobile Support
* See the release notes for a full list of features, updates and improvements included in this release.

by Mozilla at Wednesday, February 02, 2011 5:14:31 AM
Christian Legnitto — Mozilla-central landings today and the beta 11 plan

As discussed in today’s platform meeting and decided by drivers after reviewing current information, this is the plan for beta 11 and how it relates to mozilla-central development work.
Beta 11

We are pushing to get these bugs in by EOD today (PST):

* https://bugzilla.mozilla.org/buglist.cgi?quicksearch=blocking2%3Abeta%20sw:b11

If you are on the hook for any of those (including reviews and feedback) they are your number one priority.

If you are landing bugs NOT in that list, please think about the risk to beta 11. If anything is even slightly risky, please hold off a day until we branch for beta 11 before landing on mozilla-central. We will not close mozilla-central and instead trust developers to act responsibly with risk.

Once we have all / the the majority of the bugs in the query above we will call a build using the last green changeset.
Beta 12

The current plan is to build when the remaining betaN hardblockers are done. This is heavily dependent on fix and blocker creation rate. I will be doing some analysis to give people a possible date range, but as far as development is concerned everything is the same (fix as many betaN hardblockers as quickly as possible).

As usual, feel free to contact me on IRC or via email if there are questions/concerns.
by Christian at Wednesday, February 02, 2011 4:53:11 AM
Mozilla Labs — Prism is now Chromeless

The Prism project was launched in 2007 with a primary goal of Integrating Web applications into the User’s desktop experience. The project realized this goal for some prominent applications, and many user contributed bundles have been produced which make it possible to launch popular websites directly from your desktop as separate applications in a distraction free browser window. The Prism project itself, and the ways that it has been applied, have given us deep insights into this void between traditional desktop applications and the Web.
An Evolving Web

Since 2007, however, a lot has changed. Recently, browsers have begun to explore ways to solve a lot of the same problems that Prism set out to solve: specifically, improving the discovery and launch experience of the Web applications that you care about the most. Our own Open Web Apps experiment is a move in this direction, allowing users to install Web Apps for frequently used sites to afford better launch and desktop integration.

In addition to this new notion of Web Apps, we’ve learned a lot about Web extension platforms – ways to safely offer Web code deeper hooks to interact with a user’s desktop. The add-on SDK is one example of our move to use standard Web technologies to rapidly build user facing tools that do more than we can safely allow in webpages. Technically, there are some important innovations present in the add-on SDK which make it easier for developers to use code written by others, and to generate sharable modules themselves.

Finally, Web technologies have come amazingly far in these three years. We now have a usable flex-box layout optimized for interface design, we have native video and audio rendering support, more options for local data storage, 3d acceleration of Web content, and a whole lot more.
The Shoulders of Giants

The Chromeless project was announced in 2010 and was built with the goal of “Making it possible to prototype browser applications in Web technologies”. The project itself is technically very similar to Prism: it is a task focused layer on top of XULRunner (the platform upon which Firefox is built). Chromeless, however, has become a more general project than Prism which may ultimately make it possible to author desktop applications that are indistinguishable from applications written with native technologies.

If Chromeless sounds more ambitious than Prism, that’s because it is. We can afford this ambition given all of the advances discussed above. Chromeless had a huge head start which has made it possible for the project to progress rapidly: the learnings and ideas of the Prism project, the mature Firefox application platform (XULRunner), and the code and rich community behind the add-on SDK project.
The World’s Changed, so Should We!

Given the vibrant community interest in Chromeless and its rapid progress, combined with Open Web Apps and the movement toward built-in browser support for “installable” Web sites, Mozilla Labs has decided to stop maintaining Prism. Instead, we’ll focus this energy into these other two complementary projects.

Obviously the Mozilla community is a much larger force than Mozilla Labs alone, and we encourage interested community members to continue working on whatever projects they feel are most important. At the same time we’d like to ask that you jump on our forums and give us your thoughts on this change.
More than just Browsers

The final change we’re announcing today takes the form of widening of the goal of the Chromeless project, that is specifically, we now want to Make it possible to build desktop applications with Web technologies. This change emphasizes two things: first we’re interested in ultimately building Chromeless into something that can be used to ship real products. Second, we want it to be possible to build standalone desktop applications in addition to browsers.

Thanks for reading, and we eagerly look forward to your continued ideas, and contributions. Stay tuned, as we’ll have some exciting updates in the coming month on the progress we’ve made with Chromeless.

Join the discussion on the Mozilla Labs forum.
by lloyd at Wednesday, February 02, 2011 4:16:29 AM
William D — Affero Update + Documentation

Okay so lets get this post in order. As the title suggests the update on the project will come first and the documentation after. First though I would like to get a quick piece of feedback from your good selves.

I am trying to maintain this blog a lot better this year as I look back and discover that I have done a lot that has gone undocumented, so, with that in mind, I ask you…. Should I continue my two posts a day rule? Or cut it down to just the one post? You can answer this question here on this small form or in the comments at the end of this post.
Affero Update

Okay so I finally worked out why my test site was playing up (a bad .htaccess file was the cause) and I have now fixed that so I will not be going through the aggravation of moving Affero to another server.

* updated the DAL testcase to work with new test data in the database
* modified the .htaccess file to fix the odd few bugs I was getting on the development site
* updated the utilities test case to work on most domains (where Affero is in the root dir or a directory named affero just off root)
* wrote some tests for the user management class and as such started said class (currently passes all tests)
* updated the documentation (should go live about midnight) [correction… fought with phpdoc to document the code]
* completely removed the blog from the project dir

Affero Documentation (Feasibility Analysis)

Mozilla have already come up with multiple solutions which all work in tandem with each other. Not all are computer based. So, is the solution to the overall problem that this project aims to tackle, feasible for a computer based solution, or would it be better suited to a non-computer based solution?

The first step to getting the answer is to define what type of problems computers are good and bad at, and how these things tie into the problem. Next we should also define what people are good and bad at, and how these tie into the problem. Once this is done it will be possible weigh up both options and choose an avenue to continue researching with the aim of providing Mozilla a solution to their problem.
What are computers good/bad at and how does this relate to the problem?

Computers are very good at solving problems which require a large amount of constant, and/or, repetitive tasks. This is great as the system is likely to need to work with a large number of inquiries on a regular basis. Some of these tasks are also likely to involve gathering and processing of metrics. This processing, provided it is always going to be the same, can be easily automated thus saving time overall.

Computers are also good at communicating with each other over extreme distances thanks to the Internet. They can communicate in real time with little in the way of issues provided they are using the same protocols. This is relevant as whatever solution is used it will need to be globally accessible. Computers are not so good at working with people and giving them advice. This could be an issue when the problem itself requires advice to be given.

Computers are not good at making decisions either, especially when it depends on personal interest. Again something that will be needed to help solve this problem as any possible solution will likely have to interact with the user and judge (decide) what the best advice (oops…, another problem noted above) to give to the user.
What are people good/bad at and how does this relate to the problem?

People, unlike computers are bad at processing large amounts of information. They get bored of repetitive tasks. This leads to them making mistakes, and generally taking longer due to making corrections, and the need for sleep, food, toiletries, etc… This could be an issue when trying to solve the problem as people also like to get quick responses. If the responses are not swift then the end user making an enquiry may not join the community, and as we have established in the problem definition, this is not good for Mozilla.

People are also not very good at global communication. I the current day and age in which we live, it is common to utilize the Internet (via computers), to communicate globally. This can be done using email, IRC, VoIP, etc… Which allow for the
breakdown of the distance, and in some cases the time and language barriers. People can communicate over large distances without the aid of computers using what is now commonly referred to as “snail mail” or to be more specific, pen and paper, then posting it to the required destination. This can take a lot of time and can be unreliable as there are lots of opportunities for the letters to get lost. It also cost a lot when sending large quantities of responses to enquires as this method will cost per letter.

People are good however, at giving advice. It is something we often do without realizing it. Advice is something people are good at as they can tailor it to the individual they are advising. If they person being advised does not understand completely they can respond with questions and get answers back. This could be very important in solving the problem at hand, as it means that the relevant information can be given to the right people wanting to get involved with Mozilla.
Feasible plan of action

After looking at what each possibility (computer v person and paper based solution). It is clear that any solution put into play will have to use a combination of the two approaches. It is vital that global communication with quick responses where possible, is in use. This can only be done by using a computer based solution, however advice and decision making must also be used to solve this problem.

Therefore the appropriate course of action is to research current solutions to similar problems that utilize the strengths of both computers and humans alike.

Okay so this goes a little in depth about somethings that would seem obvious to most of us however you do need to remember that this project is not only to show technical competence but also to show a thorough understanding of the types of problems that computers are good at solving and why.

by FuzzyFox at Wednesday, February 02, 2011 2:38:09 AM
Code Simplicity — Open Source Community, Simplified

Growing and maintaining an open-source community depends essentially on three things:

1. Getting people interested in contributing
2. Removing the barriers to entering the project and contributing
3. Retaining contributors so that they keep contributing

If you can get people interested, then have them actually contribute, and then have them stick around, you have a community. Otherwise, you don’t.

If you are just starting a project or need to improve the community of an existing project, you should address these points in reverse order. If you get people interested in a project before you do the later two steps, then people won’t be able to enter and won’t stick around when they do enter. You won’t actually expand your community. So first, we want to be sure that we can retain both existing and new contributors. Once we’ve done that, then we want to remove the barriers to entry, so that interested people can actually start contributing. Only then do we start worrying about getting people interested.

So let’s talk about how you accomplish each step in reverse order:
Retaining Contributors

For the Bugzilla Project, this was our biggest challenge. Once somebody started contributing, what made them keep contributing? How did we keep people around?

Well, we had an interesting advantage in answering these questions, in that we are one of the older open-source projects in existence, having been around since late 1998. So we had a tremendous wealth of actual data to work with. We mined this data in two ways: First, we did a survey of all our past developers who had left the project, asking them why they had left. This was just a free-form survey, allowing people to answer any way they wanted. Then, we created a graph of the number of contributors over time, for the whole ten years of the project, and correlated the rise and fall of the graphs to various actions we took or didn’t take over time.

Once all this was done, I sent an email that out to the developers Bugzilla Project, describing the results of the research. You can read the whole email if you’d like, but I’ll summarize the findings here:

* Don’t freeze the trunk for long periods.

The Bugzilla Project has a fairly-standard system of having stable branches that receive little change (for example, the “3.4″ branch where we commit bug fixes and do minor releases like 3.4.1, 3.4.2, etc.), and a main-line “trunk” repository where all new features go, and which eventually becomes our next major release.

In the past, before a major release, we would “freeze” the trunk. This meant that no new features could be developed for several weeks or months until we felt that trunk was stable enough to call a “release candidate.” Then we would create a new stable branch from the trunk and re-open the main-line trunk for features. However, while trunk was frozen, there was no feature development happening anywhere in the Bugzilla Project.

Graph analysis showed very clearly that every time we would freeze, the community would shrink drastically and it would take several months after we un-froze for the size of the community to recover. It happened uniformly, every single time we would freeze, over many years and many releases.

Traditional wisdom in open-source is that people like to work on features and don’t like to fix bugs. I wouldn’t say that that’s exactly true, but I would say that if you only let people fix bugs, then most of them won’t stay around.

We addressed this issue by never freezing the trunk. Instead, we branch immediately at the point that we normally would have “frozen” the trunk. The trunk always stays open for new feature development. Yes, this means that for a while, our attention becomes split between the trunk and the latest branch. We’re committing the same bug fixes to the branch and the trunk. We are also doing feature development on the trunk simultaneously with those bug fixes. However, we’ve found that not only does the community expand more rapidly this way, but we also actually get our releases out more quickly than we used to. So it’s a win-win situation.
* Turnover is inevitable.

The survey found that the number one reason that contributors leave is that they no longer have time to contribute, or that they were contributing as part of their job and now they have changed jobs. Essentially, it is inevitable that most contributors eventually leave.

So if it community members are definitely going to be leaving, the only way to consistently expand the community is to figure out how to retain new contributors. If you don’t get new members to stick around, then the community will continuously shrink as old contributors leave, no matter what else you do.

So while retaining existing contributors is important–after all, you want people to stick around and contribute for as long as reasonably possible–what matters the most is retaining new contributors. How do you do that? Well, that’s a lot of what the rest of these points are about.
* Respond to contributions immediately.

The Bugzilla Project has a system of code reviews that requires that all new contributions be reviewed by an experienced developer before they can become part of Bugzilla. There have been various complaints about the system over the years, but analyzing the survey data showed that people leave the project because getting a review takes too long, not because the reviews are too hard. In fact, the reviews can be as hard as you want as long as they happen almost instantly after somebody submits a contribution.

People don’t (usually) mind having to revise a contribution. They even generally don’t mind revising it several times. But they do mind if they post a patch, don’t get a review for three months, and then they have to revise it, only to wait another three months to be told that they have to revise it again. It’s the delay that matters, not the level of quality control.

There are other ways of responding rapidly to contributions, too. For example, immediately thanking somebody for posting a patch can go a long way toward retaining new contributors and “converting” them into long-term developers.
* Be extremely kind and visibly appreciative.

For nearly every person who responded to our survey, the factors involved in not staying–beyond “my job changed” or “I didn’t have time”–were surprisingly personal. I know that we all work with computers, and perhaps we’d like to think that engineering should be a totally cold scientific profession where we all do our jobs correctly according to the requirements of the machine, and not worry about our emotional or personal involvements. However, nothing could be further from the truth–the personal interactions that people have with community members, the amount they feel appreciated, and the amount they feel assaulted, are actually the most important aspects of retaining community members.

When people contribute on a volunteer basis, they aren’t getting paid in money, they are getting paid in admiration, appreciation, the sense of a job well done, and the knowledge that they are helping create a product that affects millions of people. When somebody has contributed a patch, you need to thank them. It doesn’t matter if the patch is total crap and has to be re-written entirely, you need to thank them. They have put some work into this, and if you don’t appreciate that, they will leave before they even start. After all, most people get little enough appreciation at their workplace–they stay there because they get paid in money! They don’t need to work for free with some other organization if it also doesn’t appreciate their work, or even worse, assaults every aspect of their contribution before even thanking them for it.

Of course, you still need to correct people on the faults in their contributions. “Kindness” does not include putting bad code into your system. That isn’t kind to anybody, including the contributor whose skills probably need to improve, and who may go on believing that something they did in error was in fact correct. You have to still be careful reviewers and very good coders.

What this does mean is that in addition to telling people what’s wrong with their contribution, it’s important to appreciate what’s right about their contribution, even if it’s simply the fact that they took the time to contribute. And you have to actually tell the contributor that you appreciate the contribution. The more frequently and genuinely that you do this, the more likely you are to retain the contributor.
* Encourage a total absence of personal negativity.

One thing that drives people away from a project with lightning speed is when they get personally attacked for attempting to do something positive. A “personal attack” can be as little as an unpleasant joke about their code, instead of just a straightforward technical description of what is wrong. Saying something like, “What is wrong with you?” instead of actually leaving some helpful comment. Disguising personal criticism as “an attempt to help them code better” or “help them get along with others.” No matter how well-justified these actions may seem to be, they are all personal attacks that are extremely dangerous to your community.

Now truthfully, coding and working on a collaborative project with people who have different viewpoints can get really frustrating sometimes, and I’ve been an offender in this area just as much as anybody has been. But we all have to learn that it’s not okay to insult other developers as people just because we’re personally frustrated with them.

The solution isn’t just to say “everybody, now bottle up your frustrations until you explode,” though. There are lots of practical solutions. One of the best is to set up some specific system for handling problematic contributors. If there’s some contributor that Bob just can’t live with, there needs to be somebody in the community who Bob can go to to help work things out. We’ll call this go-to person the “community moderator.” So Bob tells the moderator about the problem, and maybe the moderator sees that other contributor really was being a terrible person or bad coder, and so this “community moderator” gently corrects that contributor. But it’s also possible that there was some communication problem between Bob and the other contributor that the moderator just needs to help resolve.

This “moderator” system isn’t the only way to deal with the problem. You can resolve the problem in numerous ways–the most important thing is that you do resolve it. Without some channel or method for dealing with personal frustrations, individual contributors will take these frustrations out on each other. You will in fact foster an environment where it’s okay for one contributor to personally attack another contributor, because that’s the only avenue they have to resolve their problems, and nobody’s stopping them.

Basically, those last two points can be summed up as: be really, abnormally, really, really kind, and don’t be mean.

We’ve been applying all of these principles in the Bugzilla Project for the past several months, and we saw an increase in the number of retained contributors almost immediately after we started applying them. I’m finally starting to feel like the community is growing again, after shrinking almost continuously since 2005 due to violations of all of the above points.
Removing the Barriers

The next step is to remove the barriers to entry. What prevents people from getting started on the project?

Usually, the biggest barrier is a lack of documentation and direction. When people already want to contribute, their next step is figuring out how to contribute. They will go to your project’s website and look around. They will wonder, “Who do I talk to about this? How do I start contributing? What do you guys want me to work on?”

For the Bugzilla Project, we solved this problem in several ways:

1. A list of easy starting projects.

Whenever we see a bug or feature request that looks like it would be easy for a newcomer to solve, we tag it as a “good intro bug” in our bug tracker. This gives us a list of good introductory projects that anybody can come and look at without having to ask us “where do I get started?”
2. Create and document communication channels.

People will almost immediately want to talk to somebody else about the project. You should have email lists and also some method of instantaneous communication like an IRC channel. For example, we have an email list for Bugzilla developers and also an IRC channel where almost all our contributors hang out. In fact, we don’t just have a normal IRC channel–we also have a web page that people can use to chat in that IRC channel. That way, people don’t have to install an IRC client just to come talk to us. Setting up that web page enormously increased the number of new people coming into the channel and communicating with us. (And the increase was entirely positive–I can’t think of a single person who used the web gateway to cause us trouble.)

Then once you have these channels, they need to be documented! People have to know how to get into them, they need to know that they exist. We have a wiki page that explains how to talk to us if you want to contribute. (Note that this is separate from our support page that describes how to get support for the project.)

Also, as a final but perhaps obvious point, the existing community has to use the communication channels. If the main contributors do all their work in an office and just talk to the people next to then and you don’t use the mailing lists or IRC channels, then the community members aren’t going to want to use those communication systems either. After all, the new contributors aren’t there to talk to each other–they’re there to talk to you!
3. Excellent, complete, and simple documentation describing exactly how a contribution should be done.

Fully document every step of your development process, and put that documentation onto a public web site. Don’t invent a new process, just document out what the existing actual process is. How do people get the code? How can they submit patches or other contributions to you? How do those contributions become an official part of the system?

We have a very simple page that describes the basic steps of our whole process, and links to documents that describe each step in more detail. It also specifically encourages people to get into communication with us, so that we know that they are there and want to help.
4. Make all this documentation easy to find.

This is a simple final step, but sometimes projects forget it! You can have all the wonderful developer documentation in the world, but if new contributors can’t find it super-easily, then you’re not actually removing any barriers to entry! We have a big “Contribute!” button on our website that describes all the different ways that people can contribute (not just code!) and links to more information about each of those.

We saw a definite upswing in the number and quality of contributions once we completed all these steps. Also, having everything documented and clearly stated on a public website meant that we no longer had to personally explain it all, every time, to every new contributor.

Direction and documentation aren’t the only things you can do though. Ask yourself, “What is stopping people from contributing?” and remove all the barriers there that you reasonably can.
Getting People Interested

How do you make people think, “Gee, I want to contribute to this project?” That’s the first step they have to take before they can become become contributors. Well, traditional wisdom states that people contribute to open-source projects because:

* They like helping.
* They enjoy being part of a community.
* They want to give back.
* They think that something is wrong and they need/want to fix it.

So you may want to make it apparent that help is needed, that an enjoyable community is there, that giving back is appropriate and appreciated, and that there are problems that need solving.

Now, to be fair, this is an area that I don’t have fully mapped out or figured out for the Bugzilla Project, yet. So I don’t have a lot of personal experience to draw on. But if we analyze other projects, we can see that some good ways of getting contributors are:

* Be a super-popular product.

This may seem obvious, but it is indeed the primary way of getting new contributors. If a zillion people use your product, it’s statistically likely that many of them will want to contribute. The Linux Kernel and WordPress are good examples of this–they have millions of users, so there’s just bound to be a lot of contributors, provided that the “barriers to entry” and the “retaining contributors” aspects of the project have also been handled.

One way to become a super-popular product–even if you’re just starting out–is to be heavily needed. The Linux Kernel was very much needed when it was first written, which is probably one of the reasons that it became popular as quickly as it did. It desperately needed to exist and didn’t exist yet.
* Be written in a popular programming language.

Generally, people are more likely to contribute to a project if it’s written in a language that they already know. WordPress has a huge contributor community, and it’s in PHP. Say what you will about PHP, it is extremely popular. There’s a large number of people who already know the language, which increases the likelihood that some of them will start supplying patches for your code.

This not the only reason you should choose a particular programming language, but it’s certainly a major motivator if you’re going to have an open-source project. I may think that Eiffel is a remarkable language, but if I wrote an open-source project in it, I would have a very hard time getting contributors.

Beyond those points, there are lots of clever ways of getting people interested in contributing to your projects, including speaking at conferences, publishing blogs, encouraging people on a one-to-one basis, and other methods that basically add up to “contact and encourage.”

I’d love to hear some of your ideas in this area, though. How do you get new people interested in contributing to your project? Has anything been particularly successful?

An open-source community is somewhat of a fluid thing–there are always going to be people coming and going for one reason or another. What’s important is that the rate of people entering and staying is greater than the rate of people leaving. All of these points help assure that, and hopefully they also make our communities productive and enjoyable places to be for everybody, even ourselves!


Comments: 7

Code Simplicity is brought to you by Max Kanat-Alexander and BugzillaSource.
by Max Kanat-Alexander at Wednesday, February 02, 2011 2:00:01 AM
SeaMonkey — News From the SeaMonkey Council

It’s been three years now since we announced any change in the lineup of the SeaMonkey Council, but in fact, we have done some of those in recent months, it just took us a while to get some good introductions written up as we’ve been more busy working on improving software than writing up statements – but now, we have completed some and can tell you about the changes at last.

While having some in-depth discussions on where SeaMonkey is going in the future, two of our long-time SeaMonkey Council members realized that involvement in leading this project has moved out of the center of their interests enough that they felt it would be better to leave this committee. While both Christian Biesinger (biesi) and Mark Banner (Standard8) note they still have a place in their hearts for SeaMonkey, they just don’t have the time and energy to be involved in managing the project any further. Both of them have contributed a lot to this project and we want to thank them for being able to build great products on the shoulders on their work and hopes they’ll help us where still possible even in the future.

As the team wanted to ensure we have a good group of dedicated people in this project management and steering committee, we decided on our developer meeting in Vienna to add two of our most active community members into the SeaMonkey Council: Philip Chee (Ratty), known from making a number of high-ranking Firefox add-ons available in SeaMonkey versions as well, and Justin Wood (Callek), who has been working hard recently on taking over a build and release engineer role for our project, will help manage this project from now on.

http://www.seamonkey-project.org/about#council now features introductions of all people in the new SeaMonkey Council, including Philip and Justin – and this new team is working together with the extended SeaMonkey community to make new and and better versions of the suite available in 2011 and beyond!
by KaiRo at Wednesday, February 02, 2011 1:24:10 AM
Bonjour Mozilla — Stuart Parmenter


(Photo : Gen Kanai)

Stuart Parmenter est tout simplement un talent précoce : vous pouvez le voir dans ce documentaire tourné à l’occasion de la libération du code de Netscape… Adolescent, Stuart a donc participé à la naissance de Mozilla, rien que ça ! En fait, Stuart fait partie du projet Mozilla depuis 1998, quand il a commencé comme volontaire. Et aujourd’hui, il dirige l’équipe “mobile” de Mozilla.

Bonjour Stuart !


English Translation

Stuart Parmenter is SIMPLY a precociously talented person: you can see him on this famous video, filmed during Netscape’s code liberation… When he was a teenager, Stuart actually participated in Mozilla’s birth… Nothing less! In fact, Stuart is part of the Mozilla project since 1998, when he began as a volunteer. And now he’s leading the “Mobile” team at Mozilla.

Bonjour Stuart!
by clarista at Wednesday, February 02, 2011 12:36:09 AM
Bonjour Mozilla — Bienvenue Grégory !


La famille Mozilla s’agrandit : le bureau de Paris vous présente Grégory Jost. Grégory commence aujourd’hui, il a été embauché pour promouvoir Firefox et les logiciels et projets Mozilla sur le continent européen (et notamment convaincre la fameuse Madame Michu !). Auparavant, Grégory a participé à une belle aventure, celle de Sokoz. Et vous savez quoi ? Parmi plusieurs propositions d’emploi, si Grégory a accepté celle de Mozilla c’est parce qu’il voulait découvrir la communauté !

Alors bienvenue Grégory… Et bonjour !


English translation:

Mozilla’s family is growing: Paris’ office presents Grégory Jost. Gregory begins today, he is hired to promote Firefox and Mozilla software and projects on the European continent (and to convince the famous Mrs Smith!). Previously, Greg was involved in a great adventure: Sokoz. And you know what? If Gregory has chosen Mozilla amongst several other job offers, it’s because he wanted to discover the community!

Welcome Gregory… and bonjour!
by clarista at Wednesday, February 02, 2011 12:31:20 AM
Tuesday, 1 February 2011
Mike Hommey — Backwards I/O vs. Forward I/O

I mentioned it in the past, and so did Taras, static initializers are currently called in reverse order of their location in a library. This can be seen, for example, in the various graphs I gathered about startup I/O. I also mentioned that I had written a small tool reversing these static initializers in ELF binaries. I however hadn’t checked the impact on startup. Until today.

The testing setup still remains the same as in previous posts and the results are still the average and 95% confidence interval for 50 startups of an unmodified Firefox 4.0b8 build.
With backwards static initializers (ms) With forward static initializers (ms) Difference
x86 3,228.76 ± 0.57% 2,888.44 ± 0.55% 340.32 (10.5%)
x86-64 3,382.0 ± 0.51% 3,102.46 ± 0.51% 279.54 (8.26%)

I’m actually surprised by the result. I did expect that forward reads would be slightly faster than backwards reads, I wasn’t expecting that much difference.

I guess I should work on bug 606137, then. Combined with relocations packing that landed after beta 10, it should have a nice startup impact.
by glandium at Tuesday, February 01, 2011 11:45:23 PM
Matt Thompson — Your feedback on Drumbeat’s new messaging

What headline would you put on Drumbeat’s new front page? Last week we asked for your help — and a flurry of interesting ideas came back through the mailing list and comment thread. Taken together, they provide an excellent snapshot of what Drumbeat’s all about (see the word cloud above).

Here’s a round-up of some of what I found inspiring or helpful. I’ve paraphrased for brevity in places, and changed punctuation a bit to make them consistent. The creativity of this community really inspires me. Not sure if there’s a clear winner here yet — but it’s been a terrific exercise so far. And inspired some ideas I’d like to share in a follow-up post. But for now…

Open innovation. Powered by you.

Start. Build. Play.
Connect. Share projects. Change the world.

Open everything. Powered by everyone.

Open web. Open minds. Open world.

Collaborate. Innovate. Commence awesomeness.

Embrace. Build. Share.

Build the open web. Build the future.

Open up.

Collaborate and grow ideas for the open web.

Love freedom. Build the web.

–Paul B.
Share ideas and projects. Help change the web.

People. Possibilities. Ideas. Think Open.

Together, we build the web.

Build the change you want to see in the web.

Share the beat. Build the future.

Comments and analysis
WTF is “open” supposed to mean anyway? …Getting more people involved and excited about everything Drumbeat is means not ostracizing people who are unfamiliar with the idea of Open Web.


Words that focus on what people *do* are better than vague adjectives. If we lead with “Build,” for instance, something like “Build the Web”, then by implication we mean the parts of the web that are open (because we’re inviting people to build it).
–Paul O.
What is Mozilla about? The web, obviously. But what else? Being new in the community, I have started to realize that at Mozilla, there is a huge “do it!” culture. There is also the idea of non-profit, of improving “individual empowerment.” Of a somehow humanistic view of what the web should be or do for us as users of it.

Where does that leave us?

For the front page headline, I’m persuaded by Paul’s argument that words that focus on what people do (verbs) are better than adjectives and nouns. Many of the ideas people shared are great potential tag lines — but a tag line is different. Tag lines can be poetic and more aspirational — these headlines need to clearly signal what our users do here. If Foursquare is “Check in. Find friends. Unlock your city,” we need the equivalent set of verbs for Drumbeat. For me, Jaime’s use of “Connect” and “Share projects” is a breakthrough in this regard. More ideas on that in a follow-up post!

by openmatt at Tuesday, February 01, 2011 10:53:59 PM
David Boswell — Featured Mozilla-based Applications for February

People and organizations are doing a lot of interesting things with Mozilla technologies. Here are two of the many Mozilla-based applications available. If you would like to suggest other applications to feature, please leave a comment.

Palo extends Excel with cost effective OLAP technology. Financial controlling with Palo is easier, faster and consistent and helps you optimize planning, reporting, analysis and more.

Apica provides tools that help people test, analyze, monitor and improve their web application’s performance.

by davidwboswell at Tuesday, February 01, 2011 10:25:15 PM
Kevin Dangoor — Work with me at Mozilla! Solve the puzzle

My first two years at Mozilla have been great fun and an amazingly positive experience. This year promises to be even more fun, where I define fun as going after some ambitious goals. This year, we’re going to be building some very cool tools and setting the stage to push the boundaries of web developer tools even farther in 2012.

Now is your chance to get in on the ground floor of this work. Be a part of the open web and help us make better tools. It doesn’t matter where you’re located… if you’re an amazing web developer or have deep developer tools knowledge, I want to talk to you.

There are two ways to apply:

1. Read the job posting and apply normally
2. Solve the puzzle for extra credit

I hope to hear from you!
by Kevin Dangoor at Tuesday, February 01, 2011 10:14:42 PM
Pedro Alves — Revenues of open source contributions – Part II
Almost 2 years ago I wrote a blog post entitled “Revenues of open source contributions”.

The main reason that led me to permanently contribute back was the “just feels right” argument. What can I say? I have the Mozilla values buried deep within.

After this 2 years I can clearly identify one major benefit: recognition. Not only on the open source world, where every new project we release is followed with interest and we have a thrilling community testing, helping fixing bugs and commiting new features, but also in the enterprise world, where we’re seen by customers as a very specialized and serious company. In the Pentaho Global Partner Summit our team got a recognition for all the hard work done recently, as we were awarded as the Best Community Contributor

Enough chat and back to work – we have a lot of releases coming soon, and that’s what really matters. That’s everyone for the support so far

by Pedro Alves at Tuesday, February 01, 2011 6:23:00 PM
John O’Duinn — Infrastructure load for December 2010


There were 1,766 pushes in December 2010. This is a continued and significant drop from September (2,436 pushes) , October (2,360 pushes) and November (2,322 pushes). This continued drop in the number of checkins is expected, considering the prolonged lockdown for FF4.0beta8, immediately followed by the lockdown for FF4.0beta9, and then the Christmas/NewYears holidays.

Overall load since Jan 2009The numbers for this month are:

* 1,766 code changes to our mercurial-based repos, which triggered 220,238 jobs:
* 33,232 build jobs, or ~45 jobs per hour.
* 105,396 unittest jobs, or ~142 jobs per hour.
* 81,610 talos jobs, or ~110 talos jobs per hour.

Infrastructure load by branch


* The long-running lockdown for FF4.0beta8, and then for FF4.0beta9 definitely took their hit on who was able to checkin, and where/when.
* The load on TryServer reduced back to ~50% of our overall load. So far, I do not know why. Anyone got suggestions?
* We are still double-running unittests for some OS; running unittest-on-builder and also unittest-on-tester. This continues while developers and QA work through the issues. Whenever unittest-on-test-machine is live and green, we disable unittest-on-builders to reduce wait times for builds. Any help with these tests would be great!
* The entire series of these infrastructure load blogposts can be found here.
* We are still not tracking down any l10n repacks, nightly builds, release builds or any “idle-timer” builds.

Detailed breakdown is :
#Pushes this month

#Pushes per hour

Here’s how the math works out (Descriptions of build, unittest and performance jobs triggered by each individual push are here:
the math behind the graphs
by John at Tuesday, February 01, 2011 5:08:12 PM
Gen Kanai — Contributor Engagement Asia town hall meeting planning

As 2011 starts, I am happy to be working with a newly created team, Contributor Engagement, to help Mozilla communities in Asia contribute to Mozilla. Team-mates of mine, Mary Colvig and David Boswell and William Quiviger have all blogged recently about our new team and efforts.

To that end, we are scheduling a ‘town hall meeting’ for Asian Mozilla community members next week, either Monday, February 7th, Tuesday, February 8th, or Wednesday, February 9th. This meeting would be a conference call and IRC chat to discuss contribution at Mozilla — what you enjoy about it, what could be improved, what tools you could use to make it easier to contribute to Mozilla, updates + happenings with Mozilla and so on. To start, we’d like to give an overview of the new team, share some very early 2011 plans and most importantly, get some feedback.

If you are a Mozilla community member in Asia and would like to join this call, I have selected 3 days and 5 time slots per day. Please check this poll at Doodle.com and select the time slots that are best for you.



I will publish the most popular time and conference call information on this blog. Please watch this blog for details of the conference call. If you have any questions about this conference call or any other question about Mozilla’s communities in Asia, please do not hesitate to contact me at gen at mozilla dot com.
by Gen Kanai at Tuesday, February 01, 2011 2:46:11 PM
Paul O’Shannessy — The new Firefox default home page is seriously sexy….

The new Firefox default home page is seriously sexy. Seriously.

A couple weeks ago Stephen Horlander designed an updated default home page for Firefox. Over the weekend, we landed most of it. So first off, a huge thanks to him.

Mihai Sucan did an awesome job converting the HTML & CSS Steven prototyped into something we could check in, which involved a lot of fun with media queries (seriously, resize your window with it open), as well as a lot of work to make sure it worked with RTL locales.

And then finally, I hooked up the “Restore Previous Session” button. Not the HTML & CSS (that was Stephen & Mihai), just the parts that made it hide when appropriate and work when pressed. Now hopefully a few people realize that feature exists 🙂

I also can’t forget to mention Marco Bonardo, who hooked up about:home back in August so that we could even get to this point.

Keep in mind, the image I’m showing here is the unbranded “Minefield” version of the page. When loading this in Firefox it won’t look like your computer is going to explode. I think there is a little bit more tweaking that will be done, but it already looks so much better than it used to.
by Paul O’Shannessy at Tuesday, February 01, 2011 2:15:19 PM
Mike Conley — MoMo All-Hands: Day 2 (Sunrise, The Meeting Room, Demos, Dinner at Uncle Bo’s)

I woke up after a night of fitful dreaming about long airplane rides, dip masquerading as hummus and missing socks.

I only had myself to blame for the socks. Em had awesomely helped me pack two weeks worth of clothes into a carry-on bag, and the socks had been my responsibility. Sigh. Oh well.

It was early at this point. Too early. I glanced at the bedside clock…6 AM. It’d been a long time since I’d been up this early. And yet, strangely, I felt fully rested.

Fully rested, and excited. I was in Hawaii, baby!

I was determined to make the best of the early morning, and watch the sunrise. So, I scrambled around, getting dressed – during which, I got a few shots of the sun starting to rise through my hotel room window.
Through the window of my room at the Ilikai Hotel
Through the window of my room at the Ilikai Hotel
Looks like other people are awake, too.
Looks like other people are awake, too.
It’s pretty high up. I was on the 23rd floor.
It’s pretty high up. I was on the 23rd floor.

It was time to hit the pavement. I threw on my sandals, and stepped into the elevator. I tried not to think about my sock problem. I figured I would spend most of my trip in sandals, so the lack of socks really wouldn’t be an issue until later on in the trip.

The hotel was pretty close to the beach, but the sun was coming up fast, and I didn’t want to miss it. I started jogging, flew past the Hilton lagoon, and made it to the beach in time to take these shots:
It took me about 5 minutes to jog to the beach, and the sun had already come up quite a bit.
It took me about 5 minutes to jog to the beach, and the sun had already come up quite a bit.
I’m pretty sure that’s an inactive volcano in the distance.
I’m pretty sure that’s an inactive volcano in the distance.
There was a rock barrier going out into the water. I walked down to the end of it for some shots, and took a video. The rocks were black, volcanic stuff.
There was a rock barrier going out into the water. I walked down to the end of it for some shots, and took a video. The rocks were black, volcanic stuff.
Taken from the end of the rock barrier. That’s a catamaran boat. I rode one of those later on in the trip.
Taken from the end of the rock barrier. That’s a catamaran boat. I rode one of those later on in the trip.

And this video:

It was very peaceful and serene.
The Ilikai Hotel is in there. Guess which one?
The Ilikai Hotel is in there. Guess which one?
Palm trees on the beach at sunrise.
Palm trees on the beach at sunrise.

Before going back up, I took a few minutes to walk around the hotel. There was a nice decorative fountain near the entrance, as well as a Kona Coffee shop.
That’s the Ilikai Hotel.
That’s the Ilikai Hotel.
A decorative fountain near the hotel.
A decorative fountain near the hotel.

I’m not a big coffee drinker, but apparently Kona Coffee is a pretty BFD. Before I left home, my Mom asked me to bring a few bags back. I didn’t have a chance on this morning though – the Kona Coffee shop was closed:
Precious Kona coffee. It’s closed at this point, so I’d come back a few days later.
Precious Kona coffee. It’s closed at this point, so I’d come back a few days later.

I eventually made it back to my room to grab a quick shower and shave before the 9AM breakfast.
The Meeting Room

The hotel we were staying at was the Ilikai Hotel, which is featured in the opening to Hawaii Five-O.

The hotel didn’t want you to forget that either – they were pumping episodes of Hawaii Five-O through some flat-screens near reception, 24/7.

Along with the hotel rooms, the Ilikai was also providing a meeting room for the team for the week. The meeting room was also where breakfast and lunch would be served. It was a pretty awesome arrangement.

Here are some shots of the meeting room.
This was our meeting room for the week.
This was our meeting room for the week.

We’ve got a patio outside too, in case we decide that we need to have a meeting in the sun:
And the view from the patio!
And the view from the patio!

When I got to the meeting room, there were already a bunch of people there, and I went around and said a lot of hello’s. Once again, a lot of names and faces flew by, and it was hard to keep them all straight in my head.

Breakfast was yogurt with granola, and what appeared to be banana bread. Delicious.

After breakfast, David Ascher gave a talk about the mission of Mozilla Messaging, and what we’d accomplished in 2010, and what we were aiming to accomplish in 2011. There was a nice and easy, accessible vibe in the room, and I don’t think it was just because everybody was wearing Hawaiian shirts – the whole crew just seemed to gel that way.

After the talk, we more or less figured out the schedule for the rest of the week. That day, we’d be doing a bunch of demos.

The demos were pretty cool. Blake did one on the account provisioning service that he’s been working on for Thunderbird:

And then showed off some more experimental work that he and a few others been doing on a project called Thunderbird Air. Think of Thunderbird Air as a jam session for ideas about messaging interfaces. It’s pretty cool.

Then, we got a demo of F1, MoMo’s shiny new Firefox add-on that makes sharing stuff easy. It’s pretty badass. Here’s an early video showing off what F1 does:

After that, Andrew Sutherland gave a talk on the new widgeting library he was working on called WMSY.

Afterwards, there was a big talk about mail storage with David Bienvenu – one of the original developers of Thunderbird.

After that, it was lunch break. Salad and sandwiches. Very tasty. There was also some peculiar bread that had a sweet taste and was blue/purple inside. Very interesting.

After lunch, people just hacked on their laptops for a bit, and chatted. Smaller discussions about other projects broke out. People went out onto the patio for sun. Very relaxed and casual. Eventually, someone plugged in the XBox and the Kinect, and we watched David Ascher and Dan Mosedale do some extreme white-water rafting.
Dinner at Uncle Bo’s

Eventually, things wound down. Old habits die hard, and the group started to fold around 5PM. At that point, I packed up my stuff and headed back to my room. I talked to Em on Skype. I got ready for dinner – I’d be meeting the rest of the group downstairs at 6PM.
This is the view from my hotel room. That’s the Hilton lagoon in the middle, and the beach and ocean just beyond.
This is the view from my hotel room. That’s the Hilton lagoon in the middle, and the beach and ocean just beyond.

I showed up at the lobby just in time for Sancus to tell me that we were meeting at 6:30PM instead of 6PM. That gave me just enough time to run around and try to grab a few photos:
There was a nice little garden just outside the back entrance of the hotel.
There was a nice little garden just outside the back entrance of the hotel.
The sun was starting to go down…
The sun was starting to go down…
A river runs through it. “It” being Honolulu, of course.
A river runs through it. “It” being Honolulu, of course.

I got back to the lobby just in time to meet the group as we started to head to a restaurant called “Uncle Bo’s“. Apparently, it’s pretty well known in Hawaii. The food was eclectic, but tasty. I spent most of dinner talking with James Burke, John Hopkins, Mark Banner and David Sifry about things like British humour, Top Gear, and trolling Nigerian prince scammers. Good times.

Watermelon sorbet for dessert. Delicious.

I didn’t take photos during the dinner (at this point, I still didn’t know everybody, and would have felt weird photographing them), but I know Roland Tanglao did. Here are a few:
Photo Credit: Roland Tanglao
Photo Credit: Roland Tanglao
Photo Credit: Roland Tanglao
Photo Credit: Roland Tanglao
Photo Credit: Roland Tanglao
Photo Credit: Roland Tanglao

Stuffed, we cabbed back home. Some of the team was headed to a patio on the beach, and I tagged along. As some live music played, I talked school and science fiction with Andrew Sutherland and Gozer. I also found out that Gozer is a pool shark, and we decided to find a time to hit a pool hall sometime over the week.

At some point, a wave of exhaustion hit me, and I decided to head back to the hotel.

I made my way back to my room, jotted down my daily notes, and nodded off.

Click here to go back to Part 1.
by Mike at Tuesday, February 01, 2011 1:12:48 PM
Nicholas Nethercote — Memory profiling Firefox on TechCrunch

Rob Sayre suggested TechCrunch to me as a good stress test for Firefox’s memory usage:

{sayrer} take a look at techcrunch.com if you have a chance. that one is brutal.

So I measured space usage with Massif for a single TechCrunch tab, on 64-bit Linux. Here’s the high-level result:

34.65% (371,376,128B) _dl_map_object_from_fd (dl-load.c:1199)
21.14% (226,603,008B) pthread_create@@GLIBC_2.2.5 (allocatestack.c:483)
08.93% (95,748,276B) in 4043 places, all below massif’s threshold (00.20%)
06.26% (67,112,960B) pa_shm_create_rw (in /usr/lib/libpulsecommon-0.9.21.so)
03.10% (33,263,616B) JSC::ExecutablePool::systemAlloc(unsigned long) (ExecutableAllocatorPosix.cpp:43)
02.67% (28,618,752B) NewOrRecycledNode(JSTreeContext*) (jsparse.cpp:670)
01.90% (20,414,464B) js::PropertyTree::newShape(JSContext*, bool) (jspropertytree.cpp:97)
01.57% (16,777,216B) GCGraphBuilder::AddNode(void*, nsCycleCollectionParticipant*) (nsCycleCollector.cpp:596)
01.48% (15,841,208B) JSScript::NewScript(JSContext*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned short, unsigned short, JSVersion) (jsutil.h:210)
01.45% (15,504,752B) ChangeTable (pldhash.c:563)
01.44% (15,478,784B) g_mapped_file_new (in /lib/libglib-2.0.so.0.2400.1)
01.41% (15,167,488B) GCGraphBuilder::NoteScriptChild(unsigned int, void*) (mozalloc.h:229)
01.37% (14,680,064B) js_NewFunction(JSContext*, JSObject*, int (*)(JSContext*, unsigned int, js::Value*), unsigned int, unsigned int, JSObject*, JSAtom*) (jsgcinlines.h:127)
00.97% (10,383,040B) js::mjit::Compiler::finishThisUp(js::mjit::JITScript**) (jsutil.h:214)
00.78% (8,388,608B) js::StackSpace::init() (jscntxt.cpp:164)
00.69% (7,360,512B) pcache1Alloc (sqlite3.c:33491)
00.62% (6,601,324B) PL_DHashTableInit (pldhash.c:268)
00.59% (6,291,456B) js_NewStringCopyN(JSContext*, unsigned short const*, unsigned long) (jsgcinlines.h:127)
00.59% (6,287,516B) nsTArray_base::EnsureCapacity(unsigned int, unsigned int) (nsTArray.h:88)
00.52% (5,589,468B) gfxImageSurface::gfxImageSurface(gfxIntSize const&, gfxASurface::gfxImageFormat) (gfxImageSurface.cpp:111)
00.49% (5,292,184B) js::Vector::growStorageBy(unsigned long) (jsutil.h:218)
00.49% (5,283,840B) nsHTTPCompressConv::OnDataAvailable(nsIRequest*, nsISupports*, nsIInputStream*, unsigned int, unsigned int) (nsMemory.h:68)
00.49% (5,255,168B) js::Parser::markFunArgs(JSFunctionBox*) (jsutil.h:210)
00.49% (5,221,320B) nsStringBuffer::Alloc(unsigned long) (nsSubstring.cpp:209)
00.43% (4,558,848B) _dl_map_object_from_fd (dl-load.c:1250)
00.42% (4,554,740B) nsTArray_base::EnsureCapacity(unsigned int, unsigned int) (nsTArray.h:84)
00.39% (4,194,304B) js_NewGCString(JSContext*) (jsgcinlines.h:127)
00.39% (4,194,304B) js::NewCallObject(JSContext*, js::Bindings*, JSObject&, JSObject*) (jsgcinlines.h:127)
00.39% (4,194,304B) js::NewNativeClassInstance(JSContext*, js::Class*, JSObject*, JSObject*) (jsgcinlines.h:127)
00.39% (4,194,304B) JS_NewObject (jsgcinlines.h:127)
00.35% (3,770,972B) js::PropertyTable::init(JSRuntime*, js::Shape*) (jsutil.h:214)
00.35% (3,743,744B) NS_NewStyleContext(nsStyleContext*, nsIAtom*, nsCSSPseudoElements::Type, nsRuleNode*, nsPresContext*) (nsPresContext.h:306)
00.34% (3,621,704B) XPT_ArenaMalloc (xpt_arena.c:221)
00.31% (3,346,532B) nsCSSSelectorList::AddSelector(unsigned short) (mozalloc.h:229)
00.30% (3,227,648B) js::InitJIT(js::TraceMonitor*) (jsutil.h:210)
00.30% (3,207,168B) js::InitJIT(js::TraceMonitor*) (jsutil.h:210)
00.30% (3,166,208B) js_alloc_temp_space(void*, unsigned long) (jsatom.cpp:689)
00.28% (2,987,548B) nsCSSExpandedDataBlock::Compress(nsCSSCompressedDataBlock**, nsCSSCompressedDataBlock**) (mozalloc.h:229)
00.27% (2,883,584B) js::detail::HashTable::SetOps, js::SystemAllocPolicy>::add(js::detail::HashTable::SetOps, js::SystemAllocPolicy>::AddPtr&, unsigned long const&) (jsutil.h:210)
00.26% (2,752,512B) FT_Stream_Open (in /usr/lib/libfreetype.so.6.3.22)
00.24% (2,564,096B) PresShell::AllocateFrame(nsQueryFrame::FrameIID, unsigned long) (nsPresShell.cpp:2098)
00.21% (2,236,416B) nsRecyclingAllocator::Malloc(unsigned long, int) (nsRecyclingAllocator.cpp:170)

Total memory usage at peak was 1,071,940,088 bytes. Lets go through some of these entries one by one.

34.65% (371,376,128B) _dl_map_object_from_fd (dl-load.c:1199)
21.14% (226,603,008B) pthread_create@@GLIBC_2.2.5 (allocatestack.c:483)
06.26% (67,112,960B) pa_shm_create_rw (in /usr/lib/libpulsecommon-0.9.21.so)

These three, although the biggest single entries, can be more or less ignored; I explained why previously.

03.10% (33,263,616B) JSC::ExecutablePool::systemAlloc() (ExecutableAllocatorPosix.cpp:43)

This is for code generated by JaegerMonkey. I know very little about JaegerMonkey’s code generation so I don’t have any good suggestions for reducing it. As I understand it very little effort has been made to minimize the size of the generated code so there may well be some easy wins there.

02.67% (28,618,752B) NewOrRecycledNode() (jsparse.cpp:670)

This is for JSParseNode, the basic type from which JS parse trees are constructed. Bug 626932 is open to shrink JSParseNode; there are a couple of good ideas but not much progress has been made. I hope to do more here but probably not in time for Firefox 4.0.

01.90% (20,414,464B) js::PropertyTree::newShape() (jspropertytree.cpp:97)

Shapes are a structure used to speed up JS property accesses. Increasing the MAX_HEIGHT constant from 64 to 128 (which reduces the number of JS objects that are converted to “dictionary mode”, and thus the number of Shapes that are allocated) may reduce this by 3 or 4 MB with negligible speed cost. I opened bug 630456 for this.

01.57% (16,777,216B) GCGraphBuilder::AddNode() (nsCycleCollector.cpp:596)
01.41% (15,167,488B) GCGraphBuilder::NoteScriptChild() (mozalloc.h:229)

This is the cycle collector. I know almost nothing about it, but I see it allocates 32,768 PtrInfo structs at a time. I wonder if that strategy could be improved.

01.48% (15,841,208B) JSScript::NewScript() (jsutil.h:210)
01.37% (14,680,064B) js_NewFunction() (jsgcinlines.h:127)

Each JS function has a JSFunction associated with it, and each JSFunction has a JSScript associated with it. Each of them stores various bits of information about the function. I don’t have any good ideas for how to shrink these structures. Both of them are reasonably large, with lots of fields.

00.97% (10,383,040B) js::mjit::Compiler::finishThisUp() (jsutil.h:214)

Each function compiled by JaegerMonkey also has some additional information associated with it, including all the inline caches. This is allocated here. Some good progress has already been made here, and I have some more ideas for getting it down a bit further.

00.59% (6,291,456B) js_NewStringCopyN() (jsgcinlines.h:127)
00.49% (5,292,184B) js::Vector::growStorageBy() (jsutil.h:218)

These entries are for space used during JS scanning (a.k.a. lexing, tokenizing). Identifiers and strings get atomized, i.e. put into a table so there’s a single copy of each one. Take an identifier as an example. It starts off stored in a buffer of characters. It gets scanned and copied into a js::Vector, with any escaped chars being converted along the way. Then the copy in the js::Vector is atomized, which involves copying it again into a malloc’d buffer of just the right size. I thought about avoiding this copying in bug 588648, but it turned out to be difficult. (I did manage to remove another extra copy of every character, though!)

In summary, there is definitely room for more improvement. I hope to get a few more space optimizations in before Firefox 4.0 is released, but there’ll be plenty of other work to do afterwards. If anyone can see other easy wins for the entries above, I’d love to hear about them.
by Nicholas Nethercote at Tuesday, February 01, 2011 1:09:07 PM
Samuel Sidler — Camino Checkins, January 2011 Edition

The big news this month is that we finally shipped Camino 2.1 alpha 1. If you haven’t already, go download it and enjoy wonderful new features like an improved location bar, the ability to hide the status bar, and offline mode. But the biggest new feature is a full update to Gecko 1.9.2 and all those wonderful HTML5 features.

Outside of Camino 2.1 alpha 1, here’s what landed:

* Bug 610658 – Split HistoryDataSource into two parts In this bug, Stuart re-factored HistoryDataSource to support our new autocomplete implementation. While the change may appear to be back-end only, it also speeds up opening the history manager for everyone.
* Bug 600187 – Fields in Google Apps are sometimes created without focus (and can’t receive focus without switching away) Google applications sometimes bring out weird browser bugs and this issue was no exception. In a previous bug, Stuart had worked around a focus issue using a specific method. Unfortunately, the fix needs to be a bit further up the chain to handle some dynamic applications. And now it’s fixed!
* Bug 506345 – Typing in location bar is horrendously slow with large history file after new autocomplete landed Camino 2.1 will feature a rewritten autocomplete implementation. When the beginnings of that implementation landed, users with large histories began noticing slowdowns. This bug fixes a large part of the problem.
* Bug 380606 – Selected download should use list selection color, not text highlight color When you make a selection in the download manager, we previously used the text-highlight color, as set OS-wide. In this bug, Chris changed the behavior so that we now use the list selection color.
* Bug 613833 – Background of selected download is not grayed out when Downloads window is not front most An issue that existed for a while but was made more visible by the fixing of bug 380606, this bug fix does exactly what its summary says: the background of a selected download will be grayed out when the Downloads window is not the front most window.
* Bug 624107 – autocomplete fails when typing capitals even if/when Title and/or URL contains those capital letters This was a minor issue in our new autocomplete implementation which made case sensitive searches fail.
* Bug 553139 – Figure out what to do about CVS_TAG and CVS_TIME with Hg Most people won’t notice this change to Info.plist, but those that do will be grateful they can now determine what changeset their Camino build was made from.
* Bug 626072 – History not showing up in autocomplete (for new nightly with autocomplete re-write, Jan 2011) A follow up from landing the new autocomplete that adds history back to the bar.
* Bug 498941 – Partition off the icons in the location bar More location bar work. This bug moves the various icons off into their own partition on the right side of the location bar.
* Bug 558432 – Java checkbox in prefs doesn’t work In Gecko 1.9.2, the ability to turn Java on and off was removed. This bug adds the feature back to Camino so users can control Java.
* Bug 625220 – Disable Java by default in Camino 2.1 As part of bug 558432, we opted to disable Java by default for all users of Camino 2.1. Given the stability and security issues with Java and its relative lack of use on the internet these days, disabling it seemed like a wise choice. (It can be re-enabled in the preferences.)
* Bug 547337 – Figure out what to do about FAYT on 1.9.x Since moving to Gecko 1.9.2, find-as-you-type had been broken. In this bug, it was re-implemented.
* Bug 626142 – Fix plug-in dtd With the addition of Java blocking came a host of other plug-in blocking (as a hidden preference) and some Firefox-specific strings. In this bug, Smokey fixed the Firefox-specific strings.
* Bug 592697 – Remove “Always use my page and link colors” from prefs A number of people used this preference without knowing what it did, ultimately causing problems. In the interests of simplifying Camino, we have removed the preference.
* Bug 574560 – Focus moves into a dead view after editing an anchor in the url and pressing enter Chris fixed the bug stated in the summary. (Need more info than that?)
* Bug 577528 – Release Notes for Camino 2.1a1 The release notes for Camino 2.1 alpha 1.

by Samuel Sidler at Tuesday, February 01, 2011 1:00:00 PM
Mozilla Web Development — Python scoping: understanding LEGB

Note: this is a repost from my blog. You can find the original post here.

Python scoping fun! Read about LEGB to understand the basics of python scoping.

I never bothered to read about how python scoping works until I hit this. It’s not exactly something to research until you have issues with it. 🙂

I had something like this going on:

def func1(param=None):
def func2():
if not param:
param = ‘default’
print param
# Just return func2.
return func2

if __name__ == ‘__main__’:

Note: Actual code was not as straightforward, func2 was actually a decorator. Admittedly, using the same parameter name is not a must, but it’s still a curiosity. I just wanted to fall back to a default value on run-time.

If you try to run this in python, here’s what you get:

~ $ python test.py
Traceback (most recent call last):
File “test.py”, line 11, in
File “test.py”, line 3, in func2
if not param:
UnboundLocalError: local variable ‘param’ referenced before assignment

If you’re curious, you can read about the principles of LEGB. You have to understand a bit about compilers and the AST to get what’s going on behind the scenes. You might think that replacing lines 3-4 with:

param = param or ‘default’

Might work. But no. You can’t assign the same parameter at the local level if the enclosing level defines it. Even this fails:

param = param

Fun, no?
Read more

* LEGB (stackoverflow)
* Python docs on scope and namespaces.

by Paul Craciunoiu at Tuesday, February 01, 2011 12:17:11 PM
Meeting Notes from the Mozilla community — Mozilla Project Meeting Minutes: 2011-01-31
From MozillaWiki
< WeeklyUpdates

« previous week | index | next week »
Video for today’s meeting

Friends of the Tree

* Janet Swisher nominates all the 30+ people who participated in the MDN documentation sprint this past weekend. See http://hacks.mozilla.org/2011/01/mdn-doc-sprint-was-a-huge-success/ for details. (T-shirts are in process.)

Upcoming Events

This Week

Monday, 31 January

Tuesday, 1 February

Next edition of about:mozilla released. Please send tips to about-mozilla[at]mozilla.com.

Wednesday, 2 February

* Contributor Engagement Townhall for No/So America – Time TBD – please vote.

* MDN Community Meeting 10:00 am Pacific in #devmo on irc.mozilla.org

Thursday, 3 February

Contributor Engagement Townhall for No/So America – Time TBD – please vote.

Friday, 4 February

Saturday, 5 February

Fosdem, Brussels

Sunday, 6 February

Fosdem, Brussels

Next Week

Saturday, 12 February:
Dare2BeDigital conference, Tech Museum: Mozilla will be running a video booth at the Dare2BDigital conference for young women (13-16) teaching girls how HTML5 and open video lets you run your own show – no YouTube or Flash needed! The key component of this tutorial will be demonstrating the Universal Subtitles project and we need localizers to show them how it works in realtime. Sign up to help in-person or online here.
Product Status Updates
Firefox 4

* We’re still processing the feedback, but beta 10 looks great!

* Firefox 4 is awesome. Users want us to release. We’re doing great work (~318 bugs fixed since beta 10) and converging, but slightly slower than anticipated
o 35 betaN hardblockers (down from 50 last week)

o 32 final hardblockers (down from 38 last week)
* We will decide about beta 11 (and a possible 12) by this Tuesday (tomorrow)
o See the newsgroup post for reasoning / options

+ tl;dr – If we think we can get all betaN hardblockers by this Friday, we will build this Friday. If we think they will take longer, we build this Tuesday to get coverage for the >318 fixes we already have

* Damon: Heartbeat of Engineering

Firefox 3.6

* 3.6.14 and 3.5.17 are on the beta channel, look good so far

* Currently on track to ship the 8th (on schedule)
* The proposed schedule for 3.6.15 and 3.5.18 will be sent around this week

Mobile Firefox

* Beta 4 real coming soon


* Lots of progress on various planning pieces from last week’s off-site; watch for details around Thunderbird 3.3 and more to coalesce in tb-planning.

Older Branch Work

* Great work from WebMadeMovies and Univeral Subtitles team’s on PBS Newshour State of the Union project. Demo and posts here and here

* Getting ready to ship “OpenAttribute,” the world’s simplest attribution tool. (Post Drumbeat Festival project.)


The limit is 3 minutes per speaker. It’s like a lightning talk, but don’t feel that you have to have slides in order to make a presentation.




More Details
Your Title Here

Your Name Here

What are you going to talk about?

Links to slides or images you want displayed on screen

Link to where audience can find out more information
A Rant about Feedback


A brief history, some thoughts and a final question


See what our users are saying
Status Updates By Team
Release Engineering


* New Hires

o Matt Brandt starts today in WebQA, Yay!
* QA Team visited Google QA team to discuss quick release cycle development and affects on the testing process. Good discussion.

Desktop Firefox

* test and release of Beta 10 this week (Monday)

Browser Technologies

* Testing and signed off Beta4


* Last Week’s Releases:

o MDN Monday January 24, 2011 https://bugzilla.mozilla.org/show_bug.cgi?id=628272

o Mozilla.com 1.1 Release Tuesday January 25 , 2011
o Ship AMO 5.12.7

Automation & Tools

* Know YUI? Please ping dkl in #ateam to help us unstick a bugzilla improvement

* Working hard with Mobile and Releng to bring up some kind of TP4 solution for android this week
* Investigating improvements to VMWare’s record and replay solution, if anyone has ideas, let us know.
* All our notes are always here



* At Google and Mozilla, Bug Bounties are Big Successes

* Web Tool On Firefox To Deter Tracking

* Mozilla Dash hides the browser interface

* Mozilla Dash clears the board

* Firefox 4′s Tenth Beta Squashes Bugs

* Mozilla reaches for almost perfect 10 with latest Firefox 4 beta
* Firefox 4 entering the home stretch


Creative Team

Community Marketing

* What’s up with SUMO? – Jan. 29

Developer Tools
Introducing New Hires

* QA Matt Brandt (Matt Evans)

* Jetpack: Alexandre Poirot (Myk Melez)
* Desktop: Guillermo Huerta
* Year Up Interns for Desktop/Release Engineering: Julius Berry, Eljon Balangue, Spencer Hui (phong/zandr/jlaz)

Foundation Updates
Retrieved from “https://wiki.mozilla.org/WeeklyUpdates/2011-01-31“
by Jesper Kristensen at Tuesday, February 01, 2011 11:00:03 AM
QMO — Firefox 4 FIXED Bugday this Friday!

As some of you may already know, we released Firefox 4.0 beta 10 last week. These releases are coming fast and furious. In an effort to make Firefox 4 even better, the developers have been fixing hundreds of bugs; this is where you come in. We need your help to verify these bugs have been fixed.

This is an excellent opportunity for you to make a valuable contribution to Firefox and make it better. Verifying these bugs are fixed allows us to make sure Firefox is rock solid for release day and allows us to vet out any regressions which may be hiding.

Here’s what we will be doing:

* Download and install the latest Firefox nightly
* Join us on irc.mozilla.org #bugday
* Go through the list of bugs
* Try to reproduce the bug in Firefox
o If you can reproduce it, reopen the bug
o If you can’t reproduce it, mark the bug verified fixed
* The person who verifies the most bugs will get a $50 voucher for Amazon.com

Don’t worry if you’ve never done anything like this before. We’ll have people from Mozilla QA on hand to answer any questions and to help guide you through process.

If you are interested, please join us this Friday!

Starts: February 4, 2011, 9:00 am
Ends: February 4, 2011, 5:00 pm
by ashughes at Tuesday, February 01, 2011 10:30:07 AM
Allen Wirfs-Brock — The Browser is a Transitional Technology

In the graphic for my Third Era of Computing post I have two pairs of lines labeled “Transitional Technologies”. In my model, a transitional technology is a technology that emerges as a computing era settles into maturity and which is a precursor to the successor era. Transitional technologies are firmly rooted in the “old” era but also contain important elements of the “new” era.

Transitional technologies that preceded the emergence of the Personal Computing Era included time-sharing and minicomputers. Both of these technologies emerged as corporate computing matured and both technologies personalized, to a degree, human interaction with corporate computing resources. Time-sharing allowed individuals to directly access a fractional share of large mainframe computing resources. Minicomputers reduced the cost and complexity of computers to the point where they could be applied to departmental level problems and could be programmed or administered by individuals.

Time-sharing and minicomputers were significant steps towards the Personal Computing Era as they offered the first glimpses of what is possible when a computer is used to empower individuals. Most of the earliest personal computers physically resembled minicomputers and their operating systems were modeled after minicomputer OSes and time-sharing user interfaces. However, the true archetype of the modern personal computer anticipated something very different than a scaled down corporate computer.

My diagram shows cellphones and the “www” as two of the transitional technologies from the Personal Computing Era to the Ambient Computing Era. By “www” I meant both the concept of ubiquitous information access via public websites and the personal computer hosted browser applications used to access such information. Both cellphones and the web established themselves as mainstream technologies in the 1990’s, just as personal computing was reaching maturity. Both are personal and task-centric. The browser itself is the epitome of a Personal Computing Era application program.

Both the cellphone and the www give us glimpse of things to come in the Ambient Computing Era and both establish some of the foundation technologies for that era. But we shouldn’t expect the Ambient Computing Era as it matures to be just a refinement of cellphones and web browser any more than the Personal Computing Era was a only a refinement of time-sharing and minicomputers.

Right now, we seem to be in second golden age of browser innovation but that doesn’t mean that the browser, as we know it, will continue into the Ambient Computing Era. Recall that Digital Equipment Corporation, the minicomputer company that grew into the world’s second largest computer company, hit the all-time high for its stock in 1987. That was the same year that Apple introduced the Mac II and Microsoft introduced Windows 2.0. Ten years latter the Personal Computing Era was firmly established but DEC and the minicomputer were no more.

For those of us to work on browser technologies that means it isn’t good enough to just create a great new PC-based web browser release every year or two (or even every 6 weeks, or every three months). We also have to aggressively work on the new technologies and user experiences that will make the web browser irrelevant. Personally, I expect that many web technologies including HTML, CSS, and JavaScript are going to be foundational for the Ambient Computing Era but I don’t expect them to be packaged in a browser-like application running on running on a Windows or Mac PC. That transition has already started.
by allen at Tuesday, February 01, 2011 7:05:37 AM
John Lilly — GSB Talk on Mozilla and Scaling

Last week I got to attend a class at Stanford Business School taught by one of my favorites, Huggy Rao. The course is on “scaling” — an over-used word, but one that Huggy’s been really digging into lately — resulting in some great insights. This particular class covered a case study authored by Huggy with Bob Sutton on the rise of Mozilla and Firefox, so it was fun to participate in.

Huggy asked me to do a quick 10 minute introduction to the class. I chose to talk about the differences between then and now — how much has changed in the 5.5 years since Firefox’s initial 1.0, and what the new challenges of scaling are. So, naturally, my first comment to the students was that most of the case was irrelevant to today’s world. That Mozilla was amazing and unique and special — for lots of reasons that include (1) breaking the MS/IE monopoly distribution and usage of the browser, (2) doing it in a way that enabled lots of innovation and competition that we’re seeing now, and (3) finding our own way through the journey — not behaving like anyone else in the market ever really has. So that’s cool. In that battle, though, access to users was probably the biggest challenge — it looked impossible when Mozilla started, and it’s remarkable — incredible, really – that we ultimately have gotten the reach we have.

But fast forward to today’s world, where we have more than 600M users on Facebook, more than 400M users of Firefox, and networks like LinkedIn and Twitter with global reach of a hundred million or more. Combine that with the rise of the Apple App Store and mobile devices — with something approaching 200M user accounts that all have credit cards associated with them. (And if there’s any doubt, these numbers are truly huge. I put in some cultural references in my talk — about 100M people will watch the SuperBowl. And only about 20M watch the nightly news in America; 30M listen to NPR. We think of these institutions as huge, but they’re nowhere near Internet scale at this point. The new networks have left them behind, quite handily.)

So now a huge part of the world is accessible, a huge part of the world is ready and able to download an app or click on a shared link. Which means that access is no longer the chief initial obstacle to scaling. That means you can see companies like Zynga or Groupon rise from nothing to massive practically overnight. Clearly, the initial challenge is about rising above the noise of an increasingly crowded field of ways for people to spend their time and money, but it’s very, very possible to get to tens or hundreds of millions of users quickly. Which means that now you’ve got companies that are dealing with huge, complex, global user bases at an extremely early point in their history. My view is that scaling successfully — which means sustaining that scale over time — will be dependent on figuring out how to make the teams and processes in rocket ship organizations operate effectively.

I know not all the analogies in the slides are apples-to-apples, but what’s clear is that we’re living in an era of hyper-distribution, where things can change very, very quickly. I’m really glad that smart people like Huggy and Bob are thinking about how to help us all learn how to manage these in the future.

Fun conversation, thanks to Huggy for the invitation! My few slides are below — they’re very incomplete and mostly served to provoke some interesting discussion. (PS — the deck is sort of a tweener deck graphically between my Mozilla-style slides and what I’ll use here at Greylock — haven’t been here long enough to monkey with the Greylock slides yet. 🙂 )
Mozilla and Scaling

View more presentations from John Lilly.
by John at Tuesday, February 01, 2011 6:53:59 AM
Mozilla Labs — Last Day to Vote: Game On Community Choice Award

Today is the last day to VOTE for the Game On Community Choice Award. Take a few minutes to rate the sheer awesomeness of these games. We will be announcing the winner of the Community Choice award on Thursday, February 3, along with all the other prize winners. We will also be randomly selecting three lucky voters and send you a special-edition Mozilla Labs Game On swag pack!

So here’s how to vote:

1) Click on the Big Red VOTE NOW Button on the Game On homepage

2) Register for a Game On account

3) Vote Away! You’ll be shown 5 random games to evaluate.

Have fun playing and choosing your Community Choice favorites! To check out all the games, visit the Game On Gallery.

by Julie Choi at Tuesday, February 01, 2011 6:30:12 AM
Paul O’Shannessy — The California DMV has Terrible Browser Recommendations

It appears as though the California DMV has not updated their website in the past 10 years…

To be able to use this online application, your computer will need to have one of the latest versions of either the Internet Explorer, Netscape Communicator/Navigator, or equivalent web browsers. For Internet Explorer you must have version 4.0 or higher. We suggest you use Netscape Communicator/Navigator version 6.0 or higher to eliminate any possible printer problems.

— California DMV Browser Requirements

Internet Explorer 4 came out in 1997. Netscape 6 came out in 2000. How far we’ve come…

In related news, the next available appointment (to take the “written” test) at the DMV in San Francisco is halfway through March. I bet I could get a new passport sooner.
by Paul O’Shannessy at Tuesday, February 01, 2011 6:17:23 AM
Aza Raskin — Redesigning OSX Spaces: 45˚ Is All It Takes

This is a guest blog post written by reader Luka Vida, a front-end guy and computer science student at University of Zagreb in Croatia. If you’d like to do a guest blog post, send me an email.

Almost all Mac users have used, at least once, Apple’s solutions to windowing woes: Exposé quickly rearranges all open windows in an ad-hoc grid for quick perusal, and Spaces enables separate virtual desktop which lets you divide your workspace into sensible areas. It’s the second feature I want to discuss. Switching between each Space is quick and easy, but with a simple redesign tweak it could be greatly improved.
Current Condition

The default setup for Spaces provided by Apple is four spaces placed in two rows and two columns. Switching between spaces imitates physical world movements, so the user moves by pressing control plus the arrow key in the desired direction. This grid setup, while seemingly innocuous, is at the heart of a number of usability issues.

The first problem is the arbitrary distinction between solid and fluid boundaries. User can always go right and left (illustrated by the green and blue arrows), but can’t always go up and down (shown by the red arrows). That is, the topology of Spaces is that the left and right edges connect, but the top and bottom edges do not. Stranger, perhaps, is exactly how the left-right boundary conditions are treated. The mental model is as if you took a horizontal strip and rearranged them in a grid. Moving right from the top-right space moves you to the bottom-left space. In essence, it’s a topological spiral which results in a strange breakage of symmetry. While I can see the argument for why this makes sense, in the heat of the moment, it’s just confusing.

The true problem that comes from all of this is a lack of habituation. I have to know which space I am in order to figure out how to get to the space to which I want to go. Even if I know my email is in the lower-left space, without knowing which space I am in, I’m not sure which direction I need to move. That breaks my train of thought by making me think about the system-state and not what I’m doing.
The Solution

Before you get in a tizzy over whether Apple could ever make a design mistake, here is a simple solution that solves all of these problems. Just rotate the layout of the spaces by 45°.

Here’s why it is better:

* No matter which space I am in, the keyboard shortcut to move to any other space is always the same. To move to the top-most space, I can always use the up arrow command. The same is true for the other three directions. If my mail is in the left-most space, no matter where I am, I can use left to get there. Unlike Spaces as it stands now, with this tweak the interface becomes habituatable.
* There is no strange wrap-around behavior. It’s a much simpler mental model.

That’s about it. A change in orientation seems to solve all of the problems.

Aza’s Note: An open question with Luka’s solution is how to extend it to more than four spaces. If you’ve got a solution, put it in the comments.

Related posts:

1. Redesigning the iPhone’s Buttons

by Aza Raskin at Tuesday, February 01, 2011 5:48:54 AM
Jono S. Xia — Last chance to rate games for GameOn 2010

Go to the game gallery, and log in. You’ll get a selection of five random games and be asked to play and rate each one. The rating period has been extended to February 1 — that’s tomorrow — so this is your last chance. Of course, the gallery will still be up after tomorrow.

Have fun!

by jonoscript at Tuesday, February 01, 2011 5:43:28 AM
Mozilla Labs — Home Dash Faster in your Language with 3

Following up on the initial release of Home Dash last week, Home Dash 3 adds initial localization support for Spanish, German and Chinese. The Prospector team apologizes for not having more languages (and especially for falling back to Spanish for locales like pt; edit: thanks to mrfyda for providing pt-PT for the next version!), but we only know a handful of languages. Good thing though is that you can contribute translations for your language now, so if you have a better translation than what you’re seeing, share it with us on GitHub!

Home Dash localized in Spanish

This latest version should also feel faster for those that type quickly after opening up Home Dash. Instead of showing all your sites and tabs immediately, if you type something to filter out those results, Firefox won’t have to work as hard to render all your thumbnails. Additionally, as you point at various thumbnails, the screen will flash less when you skip over a gap between thumbnails.

There’s also some improvements to the input box including the ability to see a list of clickable suggestions similar to Find Suggest. And for those who wanted to be able to press down (and up) to navigate through the list of results, you can thank jviereck on GitHub for the initial implementation!

Search suggestions and moving down the list

For the more advanced users, similar to how you can get the current page’s url by pressing twice, you can now see the full url when pointing at a link by pressing . The new suggestion list also lets you cycle through the words by pressing . (Note that the first will clear the selection so that you can continue typing after the primary suggestion, but subsequent s will immediately search with the next word.) And for those that like seeing the keyboard shortcut shown in the status, supahgreg provided the patch that now correctly shows instead of on Windows and Linux!

There’s many more fixes in Home Dash 3, so check out the full list of changes since Home Dash 2.

If you’ve already installed Home Dash, you should be getting an update soon. Otherwise, install Home Dash on a Firefox 4 Beta, and leave feedback or contribute! As a reminder, you can press to temporarily deactivate Home Dash.
by Mardak at Tuesday, February 01, 2011 5:32:48 AM
Alex Fowler — DNT: 1 = “Tell sites I do not want to be tracked”

Mozilla lands Do Not Track HTTP header into nightly builds today: 30 lines of code to support more privacy online.

My colleague, Sid Stamm, Mozilla’s privacy engineer announced this morning that we have uploaded working prototypes of our Do Not Track HTTP header in nightly builds (pre-beta versions of Firefox). Anyone interested in testing it out can download one of these versions and see how we are implementing the header.

In collaboration with the researchers at Stanford’s donottrack.us, we have modified the header to now state “DNT: 1″ when a user turns on the option within the browser. This is shorter than the original proposal for “X-Do-Not-Track,” and this is what we will be bringing forward to the industry.

Testers will not notice any difference in browsing online until sites and advertisers start to respond to the header. For now, broadcasting DNT: 1 will be akin to displaying EFF’s Blue Ribbon campaign, for those of you who remember the popular online rights campaign from the 90s.

Currently, the feature shows up in the “Advanced” panel within Firefox Preferences. It pains me that it’s not under the “Privacy” panel, yet. This reflects our desire for speed in getting the feature into Firefox, as updating the “Privacy” UI and content will require additional engineering bandwidth. We’ll have more to say on this once we move the new feature into upcoming beta releases.

We were blown away by the overwhelmingly positive response to last week’s announcement of our HTTP header proposal. We are having daily interactions with a broad array of interested companies, advertisers, consumer advocates, developers, and researchers to flesh out the details of how to interpret the header. Everyone here at Mozilla remains committed to working with all stakeholders in determining whether this approach provides a more nuanced, persistent and simple way for users/sites/advertisers to recognize and respect choice and control online than other opt-out or blocking mechanisms.

Alex Fowler

(Image: Zazzle mock-up for a different kind of do-not-track “header” based on our implementation.)

by firstpersoncookie at Tuesday, February 01, 2011 4:17:10 AM
Robert Kaiser — Weekly Status Report, W04/2011
Here’s a summary of SeaMonkey/Mozilla-related work I’ve done in week 04/2011 (January 24 – 30, 2011):

* Build Infrastructure:
Worked with Callek some more on buildbot migration fallout resolution while he got 2.0.12 builds done.
I also helped investigating and discussing some omni.jar switch fallout.
* Jökulsárlón Download Manager:
I did some more work on Jökulsárlón Download Manager, putting in some suggested fixes, and making list loading more stable and more usable. This culminated in version 0.3 now being available on AMO.
* Data Manager:
I discovered a slight bug with international domain names (IDN) in the Data Manager search, and created a patch for that, which meanwhile has landed in SeaMonkey trunk.
In addition, I started investigating the largest open work item I have on my plate for this feature: adding a web storage panel. Die to the still rare usage, all of application cache, DOM Storage (global/localStorage), and indexDB will be listed in that panel, and some of those have clumsy mechanics to get what I need there, so it’s not as easy as I hoped so far, and I made less progress than I hoped, but I hope I can get to something useful soon.
* SeaMonkey L10n:
I went through the pending sign-offs for the next beta on the L10n dashboard, accepted or rejected them as possible or necessary, and in the process wrote up a sign-off check list for documentation on what I’m looking at there.
In preparation for the FOSDEM conference coming up this weekend, I prepared a first version of the slides for my talk about In-tab UI in the Mozilla DevRoom.
This topic as well as my whole presence on this conference will not be SeaMonkey-centered, but I hope to meet some fellow SeaMonkey community members as well as a whole lot of Mozillians and people from other projects there.
* Various Discussions/Topics:
Ongoing graphics driver instabilities, more Fennec testing on the N900, fighting wiki spam, getting SeaMonkey future going, thinking about my own future plans, FOSDEM, Firefox Betas, getting the JS engine fixed for SeaMonkey browser-chrome tests, Firefox 4 UI, etc.

Jens has made his “InvisibleSmiley” quite visible when he landed built-in Sync support in SeaMonkey trunk in the last days of the week, which now makes exchange of all browser data like bookmarks, history, form data, tabs, etc. easy between different installations of SeaMonkey, Firefox, and even mobile Firefox – and you can even access your browser data on an iPhone with the “Firefox Home” app (just see “Firefox” and “SeaMonkey” as more or less synonyms when it comes to Sync, the service is operated and written by Mozilla primarily for Firefox, but SeaMonkey is just using exactly the same code)!
With this and having some testing of the nightlies that followed this landing, we should be ready for doing a SeaMonkey 2.1 Beta 2 very soon now and probably will get it going this week still, with a large number of improvements since the first beta.
I’m also looking forward to meet as many Mozillians and people from other communities as possible at FOSDEM in Brussels!
by KaiRo at Tuesday, February 01, 2011 3:52:51 AM
Chelsea Novak — Join Mozilla – First looks at creative

If you’ve been following Mark Surman’s blog, you’ll have learned that we will be launching a user engagement initiative called Join Mozilla early this year. Join Mozilla is a program that takes the best of what we’ve done in terms of user engagement and fundraising in the past and takes the next step: making it easy for the millions of people who love Firefox and Mozilla to be connected to what we’re doing and help us create the new projects and ideas that will keep the web open for decades to come.

There are a lot of variables involved in assembling a program like this. One of the most important of which is the pathway in for potential participants in Join Mozilla. As the program is in it’s infancy, we know that we will be iterating a lot in the coming weeks, months and years. We need to learn about what matters to people who are a part of Join Mozilla, how they like to communicate and what makes them feel like they are a part of this amazing project.

One of the first things people interested in Join Mozilla will experience is the program landing page. We’ve worked with Mozilla design Übermensch Sean Martell and with creative agency Engine Company 1 to create the page that will start the whole Join Mozilla experience. Click on the image below to see what it will look like.

The guiding principles for the page were this: the sign-up/contribution form had to be on the same page; the sign-up text had to be short and engaging; there had to be as few outbound links as possible and; the design had to be “knock-your-socks-off” cool, while accommodating the limitations of sign-up form provided by our payment processor.

The page that is currently being built has a few tweaks that aren’t represented in the mockup shown here. The “edit this link” button will be removed from the Mozilla.org footer, as the sign-up page is a secure-hosted form, so it can’t be edited like other pages on Mozilla.org. Also, the opt-in check boxes have been changed to the following:

-I want to receive the Join Mozilla newsletter
-I agree to the Mozilla privacy policy [with a link to said privacy policy]

We also plan on testing several iterations of the subheadline to see which one resonates best with users.

I’ll be sharing ideas and designs for other elements of the program over the next few weeks.

by Chelsea Novak at Tuesday, February 01, 2011 3:05:10 AM
Mark Surman — Definitions: media, freedom, web.

I had a good conversation with John Udell the other day (thanks!). We were making a list of concepts people need to internalize if they want to think like the web. The next morning, a particular concept jumped to mind: Openendedness. The web is never finished. It’s built to be built on.

The idea of openendedness is a striking one when comparing the web to other media. Newspapers. Films. Books. Television. Comics. Long playing records. Every important medium since the printing press has organized itself around discrete objects that have a start and a finish. The web does not.

As I posted last week, I hope to spend a good chunk of 2011 exploring the openended nature of the web and the way it’s shaping other media. Riffing on last year’s Mozilla Drumbeat theme, I’m using the phrase media, freedom and the web as an umbrella to throw ideas and projects under. Given this, I figured it would be useful to unpack what these words mean to me. Let’s start with …

The kind of freedom I am talking about: The openendedness of digital things. Bulding things we can build on.

Loosely, I’m talking about software freedom here. In 1986, Richard Stallman declared that software should have four freedoms. Paraphrased they are: the freedom to use, study, remix and share. While many people don’t buy into the four freedoms per se, the basic ideas are widely accepted. Some rough approximation of use / study / remix / share is what most people mean when they say ‘free’ or ‘open’ in relation to technology.

Freedom in this sense is useful conceptual frame that not only helps us understand the web but may also give us tools to reinvent the media of the past. It’s use / study / remix / share that make the web openended. The same frame offers a useful set of design tools as we start to reinvent media more widely.

My simple web definition: An infinite box of LEGO that lets anyone build (almost) anything.

Consciously and unconsciously, we have baked freedom and openendedness into the very fabric of the web. At the most literal level: huge parts of our internet culture and economy rest upon a foundation of free software (Google, Amazon, etc.). But the essence of these ideas reaches even further: web wouldn’t be what it is today without the ability to look under the hood, get your hands dirty, and fix what doesn’t work.

I find best way to explain this to most people is to talk about the LEGO that the web is built with. HTTP. HTML. CSS. JavaScript. Etc. At its core, the web is these building blocks. The wonderful, diverse (and occasionaly horrible) web that now spans the world is made up primarily of these things.

Importantly: we have this web because so many of us were able to use this LEGO to invent, build and bend things without asking permission from others. No one has to ask Tim Berners Lee less if they want to use HTML or Brendan Eich if they want to use Javascript. No one had to ask to view source. This is the very practical magic of the web.

Openendedness is central here. The network and the LEGO blocks are built to be built upon. They are built this way not only technically, but also culturally and conceptually. People steeped in the web — and many people who have grown up with it — don’t think about finishedness in the same way we their parents did. Iteration. Adaptation. Extension. These are the things they value, and that might benefit all media.

My simple definition for media: The things that connect us. The stories we tell. The people who tell them.

We all talk about media. But we talk about it differently. Some of us talk in the abstract sense that McLuhan meant: the material essence of a particular medium. Print. Film. Web. Others talk more tangibly about the stories we tell and how we tell them. Books. Movies. Social networks. Still others personify ‘the media’, talking about the people who make it. ‘The media is screwing up politics and democracy’ or ‘the media sucks’.

As the web era moves from disruption to reinvention, it’s important to contemplate what is happening with all of this. Things are changing at all levels. The material essence of what we used to call print or film. The ways we tell stories as books and movies. And, most dramatically, the people who make media (which we increasingly recognize to be ‘all of us’). All of these things are in play.

For me, the most interesting aspect of this reinvention is this question of finishedness vs. openendedness. Typesetting and the printed page were rigid and closed. The wiki and the web page are openended. We use them for seemingly similar purposes, but to very different effect.

As we reinvent and make choices, we have a chance to build the openended nature of the web into all media.

Why hop through these three concepts? Partly to map the terrain for a series of experiments. I’m hoping Mozilla Drumbeat can explore media, freedom and the web in some very practical ways during 2011.

However, McLuhan also urged us to ‘contemplate what is happening’ with media if we want to shape it. This requires a shared vocabulary, a broadly understood set of concepts. For me, the openended nature of the web is one of these concepts. Many more people need to understand that the web is built on freedom, even if we end up using different words.

In my next post, I want to do an old media / new media case study. I started out my career as a filmmaker, so it’s probably about how cinema might be reinvented on the web.

This is the first in a series of posts about media, freedom and the web.

Filed under: drumbeat, mfw, mozilla, openweb, poetry
by msurman at Tuesday, February 01, 2011 2:54:28 AM
Instantbird — Status Update: November 2010 – January 2011

It’s been over two months from our last status update and a lot of changes and updates have occurred (from changeset to changeset). Below we list changes for the nightly trunk builds of Instantbird (0.3a1pre).

* Basic support for Twitter was added (bug 598).
When the twitter account is connected, a timeline conversation automatically opens. If the conversation is closed by the user, it’s reopened automatically when new messages arrive. The user should disconnect the account from the account manager to prevent new messages from being displayed.
There’s a “track” advanced option that allows to specify keywords to track. This is a comma separated list of keywords. Comma means OR, space inside a keyword means AND.
* The conversation UI has received a slight update:
On Mac the splitter between the conversation and input boxes was reduced.
For all operating systems, the status bar of the conversation window is now automatically hidden when the window is made small.
* After quite a lot of debate, the wording of the option for when to create a new conversation window was updated (bug 387).
* An old regression where the new JavaScript logger used *nix style line breaks on all systems was fixed so Windows logs can be viewed in Notepad (bug 473).
* The conversation window can now be minimized with the ESC key (bug 441).
* Support for Windows CE was dropped.
* The themes preference pane now shows if themes are disabled or incompatible (bug 364).
* Multi-user chats now show an disconnected icon when offline or after leaving a room (bug 520).
* libpurple has been updated to 2.7.9 (from 2.7.3)
* Localized strings with a keyboard accelerator were not localized properly in the ‘Join Chat’ dialog (bug 655).
* For Developers:
o The menus are no longer created with a preprocessor directive and are now included via a XUL overlay (bug 622).
o A large number of updates have occurred in jsProtoHelper.jsm, used to simplify the creation of JavaScript protocols. They are now able to access account-specific preferences (bug 495), handle username splits (bug 647), join chat rooms (bug 648). In addition, some bugs were fixed to ignore the libpurple proxy structure (bug 649), automatically highlight messages containing the user’s nick in multi-user chats (bug 661), and some clean up occurred.


* Release 0.3 alpha 1.
* Florian is attending FOSDEM, where he’ll show Instantbird on Sunday, February 6th, 2011 in a talk about XULRunner Applications entitled “Instantbird and Conkeror — A view from the authors” (Axel Beckert will be discussing Conkeror).
* Research into setting up a non-profit organization.

By the way… Happy new year! Yeah… we are late ;).
by Florian at Tuesday, February 01, 2011 2:45:34 AM
Firefox Support Blog — What’s up with SUMO – Jan. 29

This video is 1280×720 so right-click it and choose Full Screen to get a better view.
The big things this week:

* Army of Awesome is now localizable. If you are interested in seeing Army of Awesome in your language, contact Kadir: atopa (at) mozilla (dot) com
* Top 19 articles + templates will be ready for localization by Thursday.
* Mobile ready SUMO coming soon. Here’s the demo site shown in the video.

Here are the notes from the wiki:

Sumo Development

* working on the notification system, but nothing apparent for users


* L10n of Army of Awesome
* Kadir to give a talk at FOSDEM in Brussels this weekend


* http://spreadsheets.google.com/ccc?key=piA-a-dXCL2p7vB5pTu0HKA&hl=en
* Cheng to update the spreadheet and take out metrics we don’t need anymore
* AoA contributions going up

Knowledge Base

* Fx4 status + l10n
* Tracking upcoming changes to Session Restore, Panorama and Page loading notifications.
* Top 19 articles + templates will be done by Thursday.

Live Chat

* We are asking people about the searchterms they used before they enter Livechat. This is to create input for a sprint where we will try to improve searchresults in the KB

by Michael Verdi at Tuesday, February 01, 2011 2:20:25 AM
Michael Coates — Application Security Tutorial Videos
A fantastic new project just started at OWASP titled AppSec Tutorial Series.

From the project page:

The OWASP Appsec Tutorial Series breaks down security concepts in a easily accessible, friendly way. Each video is 5-10 minutes long and highlights a different security concept, tool or methodology.

The project is led by Jerry Hoff and you can find the first video here and also embedded below. Enjoy!

-Michael Coates – @_mwc
by Michael Coates at Tuesday, February 01, 2011 1:50:00 AM
Anthony Hughes — Status Report 2011.4

In an effort to better manage my projects and workflow, I’m trying to blog my weekly status reports. Enjoy!

For more detailed information, please see my detailed status report.

* Panorama project well underway now with 7 / 15 tests assigned to developers
* Firefox 4.0b10 testing (now live on beta channel)
* Firefox 3.6.14 testing (now live on beta channel)
* Firefox 3.5.17 testing (now live on beta channel)
* Stepped into role as 2nd-lead to Dave Hunt for the Mozmill Endurance Tests project

Resolved Bugs

No bugs resolved this week, but made progress on:

* bug 614973 – testPasswordNotSaved.js failure
* bug 623962 – testDownloadStates.js failure
* bug 626674 – testAccessPageInfoDialog.js failure

Next Week

* Automation
o fix testPasswordSavedAndDeleted
o land first set of Panorama tests
* Desktop
o Continue to triage bugs and Litmus results to 0
* Services
o Start drafting rewards/achievements plan

Time Breakdown

by ashughes at Tuesday, February 01, 2011 1:05:06 AM
Sid Stamm — Try out the “Do Not Track” HTTP header
Last week, I blogged about some of the work we’re doing at Mozilla to help people better control how they’re tracked as they browse the web. The basic idea was to give people a universal “opt out” of tracking for behavioral advertising. A Firefox user will be able to check a box in the preferences dialog and then a HTTP header would be sent with all HTTP requests so all servers know the user wants to opt out.

Well, I’m excited to report that we’ve landed the first iteration of this feature into Firefox nightly builds (the pre-beta builds that are rough around the edges)! If you’d like to try out the feature, grab a nightly build; I must warn you though, these nightlies are not as stable as the beta releases.

In the build, to enable the feature, open the preferences pane and select the advanced tab. Tick the box that says “Tell sites I do not want to be tracked” and start browsing.

Every connection your browser makes to download content will send a signal that says “don’t track me.” Literally, it looks like this to servers:

DNT: 1

Note: this is different from the initial experiment that used “X-Do-Not-Track” and my original post last week that said “Tracking-Preference: do-not-track”; it’s both shorter and very precise. The researchers at donottrack.us are also recommending this syntax.

I encourage you to try out the test builds, or if you’d like to wait for a more stable version, wait for an upcoming beta release with the feature in it. We do not anticipate that sites are looking for the signal yet, so you probably won’t notice a difference as you browse the web. I’m hoping to have a demo site available shortly that will give you an example of what types of changes you might see using this feature — and when I do, I’ll post a link here.
by Sid Stamm at Tuesday, February 01, 2011 1:00:43 AM
Monday, 31 January 2011
William D — No Coding Tonight

Okay so today has been a day of catchup for my maths homework that I neglected during my exam period, though my day is not yet over 😦

I have yet to go to my other job (the one which pays but does not challenge). So I doubt I will get anymore code done by the end of the night, however, I will do what I can to fix the testcase for the DAL and get a proper staging site setup…. something along the lines of affero.wduyck.com. Will post more once I have made my mind up.

Yes I am moving most of my sites to wduyck.com however this blog is staying put for the time being…. I have moved it before and it was a bit of a job full. I am going to get the rest of this college year out of the way before doing anything as big as that.

So just a friendly update. Don’t forget to read the latest Affero documentation post which you can find here.

Garr! I hate late nights, and working, and exams, and homework, and, and, well….. yeah….. I just wish life was easier and less complex…. but don’t we all?
by FuzzyFox at Monday, January 31, 2011 11:47:57 PM
David Burns — DDD9 – Slides and thoughts

On Saturday I did a talk at DDD9, a .NET Community driven conference, about writing maintainable tests with the main focus on Page Object Pattern for tests.

My slides and Demo are available for all to see. Unfortunately I made the mistake in assuming that Microsoft would have a guest wifi connection for all people to use so people in my talk couldn’t see my example. I have been spoiled by speaking at other venues and having to worry. Sorry all! P.S. If presenting with a Mac take a MiniDisplay Port to VGA converter. I only had a MiniDisplay to DVI and had to go hunting for one with one of the organisers.

The talks on the day were not bad for what they were talking about. Unfortunately I did fall into the trap of believing talk would be on what they title was. To be fair to Gary Short he did say it was the first time that he did his talk. I did learn a few things from his talk but was hoping to see more of a deep dive into .NET Collections and not micro-optimisations. All of this was made up by Gary’s excitable talking style of course.

The next talk that enjoyed was by Helen Emerson. She did a talk on “CSS is Code, How do we avoid the usual problems”. CSS admittedly has always been something I knew enough to get me by and always then asked others when I got stuck. Helen did show the usual mistakes and how the order of styles is important from the file. Yes I do know its Cascading Style Sheet and it does what says on the tin, but I still learnt that! I did also do my part in selling a fellow Selenium committer’s startup, MogoTest from Kevin Menard, as a way to check layouts in different browsers.

Thanks to all of those who came to my talk and to the organisers of the day
by David Burns at Monday, January 31, 2011 7:44:54 PM
William D — Affero Problem Definition
Generalized Problem definition

Mozilla is a large project with a great selection of ways to get involved, however the information on this selection is scattered across the 100+ Mozilla websites. For someone wanting to get involved, finding out what contribution options are available, as well as finding documentation about these options, can be a very large hurdle, let alone finding out where to go with any questions.
Why is this a problem?

If those looking to get involved cannot find the information they are looking for then they will likely not become contributors.
So what if people don’t contribute to Mozilla?

If people didn’t contribute to Mozilla then they will not be able to ship their products such as Mozilla Firefox® as only a relatively small number of people are actually employed by the organisation. “It’s fair to say that. Mozilla is not an organisation that happens to have a community built around it, but rather a community that happens to have support from and organisation.” (Boswell, 2010)
So what if Mozilla cannot ship its products?

As a non-profit they will not be at risk of losing profit; however they will lose money they get from partnerships due to their products. These products are also used as leverage in their respective markets to help insure the success of their mission.
by FuzzyFox at Monday, January 31, 2011 7:03:20 PM
Jeff Walden — Waiting for Superman

Hacks (if you’re into web developer-y things: subscribe!) has a post on the latest MDN sprint, a well-attended event with many fresh faces. This bodes well for Mozilla documentation. Sheppy always has more docs to write than time to write them. Even with recent help, there’s too much for documentation writers at Mozilla-the-corporation to handle. But Mozilla-the-community can get it done if people are willing to do it.

Yet there’s the rub: if. Some people who could absolutely kill writing documentation instead write patches, curate mailing lists or forums, run IRC channels, or translate. It’s no given that there will be writers sufficient to the tasks at hand. Even if there are, what will they choose to document? Will they write about ooh, shiny! or about technologies more abbreviation than word? Docs will probably get written, but it might take awhile, particularly if the change is hard to grok in short order.

Who will write critical documentation for your next great fix if Mozilla-the-corporation lacks the writers and Mozilla-the-community chooses to work on other important tasks?


There is no cavalry, no Superman to save the day.

You know the technology in question, the nature of the fix. You’re the person who can best explain what you did. You don’t need to have the change explained to you in order to document it. The person uniquely suited to documenting your fix is you.

Maybe you’re not the best writer. Take a stab anyway. Write something hackish and dump it in a user sub-page, then mention it in the relevant bug when you add the dev-doc-needed keyword. Or edit the relevant page and ping a good writer for a once-over.

You know the ins and outs of the change. The expert writer doesn’t. Write up the change if you can. But if you can’t, just getting it out there, even in an unpolished state, makes it vastly easier for him to translate your expert knowledge into expert documentation.
by Jeff at Monday, January 31, 2011 5:20:26 PM
Paul Craciunoiu — Python scoping: understading LEGB

Python scoping fun! Read about LEGB to understand the basics of python scoping.

I never bothered to read about how python scoping works until I hit this. It’s not exactly something to research until you have issues with it. 🙂

I had something like this going on:

1 def func1(param=None):
2 def func2():
3 if not param:
4 param = ‘default’
5 print param
6 # Just return func2.
7 return func2
10 if __name__ == ‘__main__’:
11 func1(‘test’)()

Note: Actual code was not as straightforward, func2 was actually a decorator. Admittedly, using the same parameter name is not a must, but it’s still a curiosity. I just wanted to fall back to a default value on run-time.

If you try to run this in python, here’s what you get:

~ $ python test.py
Traceback (most recent call last):
File “test.py”, line 11, in
File “test.py”, line 3, in func2
if not param:
UnboundLocalError: local variable ‘param’ referenced before assignment

If you’re curious, you can read about the principles of LEGB. You have to understand a bit about compilers and the AST to get what’s going on behind the scenes. You might thing that replacing lines 3-4 with:

param = param or ‘default’

Might work. But no. You can’t assign the same parameter at the local level if the enclosing level defines it. Even this fails:

param = param

Fun, no?
Read more

* LEGB (stackoverflow)
* Python docs on scope and namespaces.

by Paul Craciunoiu at Monday, January 31, 2011 3:00:00 PM
Wil Clouser — md5verify: A script to automatically verify file integrity

I have a lot of files on my computer. Email archives, personal documents, stuff for work, photos I’ve taken…the list goes on – I’m sure most people reading this are in a similar boat. On occasion I’ve found some files to be missing or corrupt which is disturbing but is probably something to be expected. The bad part is, I keep backups, but I rotate them out when they reach a certain age which means if I don’t notice a file is corrupt or missing I’ll eventually lose it forever.

I stayed up late a few nights ago and wrote a script to raise an alert when something has changed. On its first run the script will recursively walk a directory tree hashing each file and storing the hashes in the directory (in an md5sum compatible formatted file). On subsequent runs it will begin tracking new files automatically but it will also print messages for missing and changed files. By saving the checksums in each directory it becomes portable – you can copy a directory somewhere else and still be able to verify nothing changed (a quick md5sum -c checksums.txt will let you know).

By default the script only prints messages when it sees something fishy so it’s perfect to drop into cron and it uses exit statuses so it’ll work for nagios too. I’ve been running it for a few months and have found a couple files that have changed – nothing critical yet but it’s nice to know it’s there.
by Wil Clouser at Monday, January 31, 2011 1:36:01 PM
hacks.mozilla.org — MDN doc sprint was a huge success

More than 30 contributors from at least a dozen countries, touching approximately 300 documentation pages.

Those are the results from the documentation sprint that started Friday, January 28 at 14:00 UTC. While the sprint was scheduled to end at midnight UTC on Saturday, some participants were still making updates on Sunday.

This sprint provided a couple of instances of cooperation with other organizations that I believe bodes well for MDN’s future as a resource, not just for Mozilla technologies, but for open web technologies in general.

Paul Irish, developer relations dude for Google Chrome, and one of the folks behind Modernizr and HTML5 Boilerplate, helped muster participants, and then during the sprint, added browser compatibility tables for a number of CSS and DOM pages.

Colin Clark and Anastasia Cheetham from the Inclusive Design Research Centre began work on updating and migrating information on accessibility and ARIA from the CodeTalks wiki to MDN. Colin first approached me about the possibility of doing this during the Mozilla Drumbeat Festival, back in November. During the sprint, Colin created An overview of accessible web applications and widgets, and Anastasia created Keyboard-navigable JavaScript widgets.

Below is a summary of the work that was accomplished. Given the massive amount of work that was done, I might have omitted something; if so, please let me know and I’ll correct this post. I am deeply grateful to everyone who contributed, and especially to those who spent large chunks of their weekend free time on the sprint.

* Jeremie Patonnier created a categorical classification of SVG elements, created pages for 38(!) of the 80 SVG elements and cleaned up some existing elements, thereby covering all the basic elements. He also populated the index page for SVG attributes, and interlinked the element and attribute pages. As a result, the SVG reference now has a structure, and the beginnings of useful docs.
* Manuel Strehl made significant updates to many sections of the SVG Tutorial, complementing Jeremie’s work on the SVG reference.
* Tom Schuster created a mapping of HTML Attributes to the elements they belong to, and several other people added descriptions. Tom also updated Array.toString and Object.toString, and cleaned up reference pages for basic JavaScript types, including adding version information and fixing syntax.
* Marc-Aurèle Darche made improvements to the XUL tutorial Element Positioning article, and XUL attribute dlgtype.
* wellington7 cleaned up Creating a skin for Firefox/Getting started.
* Masahiko Imanaka translated some pages about CSS column properties into Japanese.
* Jonathan Wilsson created pages for CSS page-related pseudo-classes and pseudo-elements, re-wrote the page for pseudo-classes, added examples, syntax highlighting, and tags to a whole bunch of HTML element pages, created the HTMLParagraphElement page, and added a Chrome screenshot to the HTML element, which isn’t implemented in Firefox yet.
* Ms2ger improved several HTML element pages.
* Miles Clark improved several CSS property pages, and expanded the examples for position and float.
* Maxime Chatelle and Paurobally Roxane translated several HTML-related pages into French.
* Addy Osmani fleshed out the Introduction to web development page, making it actually (and very) useful.
* shiawuen added an example to event.currentTarget.
* brianloveswords edited the JavaScript Getting Started article, and created a placeholder for aggregated compatibility information (which we need to figure out how to automatically populate).
* Tomislav Jovanovic enhanced the article on JavaScript strict mode. Unfortunately, we didn’t know that Jeff Walden was about to replace that page with the contents of the recent Hacks blog post about strict mode. Tomislav then added examples and other improvements to the post-Hacks version of the page.
* Florian Scholz continued his work from the October doc sprint, cleaning up the MathML reference pages, and adding the element.
* Trevor Hobson updated a bunch of (that is, 11) XPCOM interface reference pages, something he works on regularly, doc sprint or no doc sprint.
* David Bruant, another doc sprint veteran, considerably expanded the JavaScript Proxy article.
* Eric Shepherd created templates for tagging items as applying to “mobile” only, for a button to “see this on JSFiddle”, and for embedding a rendered SVG image from an attached XML file. He also wrote documents related to Electrolysis content views and the Toolkit Profile Manager. And he reviewed and copy-edited many of the other articles written and updated during the sprint.
* Daniel Lopretto added examples to document.activeElement and document.anchors, provided alternatives for document.width and document.height, and expanded the example for CSS attribute selectors.
* Ryan Olson added a live example for CSS positioning, and added some descriptions to the HTML attribute table.
* Adam Dane created pages for and HTML elements and fixed up syntax highlighting and indention of examples for about 50 HTML element pages.
* Andreas Wagner documented XPCOM interfaces for bug 606966, “Need an async history visit API exposed to JS”, updated Displaying Places information using views for bug 543444, and updated a few XPCOM interfaces for navigation history.
* Jussi Kalliokoski wrote Creating a simple synth, about using the Audio API.
* Matheus S. Svolenski and Fabricio Ferracioli each translated some articles into Portuguese.
* Janet Swisher finished updating the IndexedDB asynchronous API reference pages to match the current draft standard and Mozilla implementation.
* Garann Means updated parts of Rich Text Editing in Mozilla, added a JSON example to AJAX Getting Started, and added a section on clearing floats to the CSS float property. Since Garann and I live in the same city, we met on Saturday morning for some in-person doc sprinting.
* Mason Stewart added notes to the legacy attributes that have been replaced by CSS properties, in the HTML Attributes page, and proofread and fixed up several other pages.
* Alex Lakatos created live examples for the CSS properties background-repeat, background-position, and list-style.
* Archaeopteryx created the page documenting nsIAppStartup_MOZILLA_2_0.
* Christian Sonne updated gradient-related CSS properties to include browser compatibility information, added an example to clear, and summary, examples, and “see also” to :visited.
* Divya Manian added or updated browser compatibility information on over a dozen CSS pages.

by Janet Swisher at Monday, January 31, 2011 1:31:15 PM
Brett Gaylor — Yes we did!

This past week, I was fortunate to be part of a great collaboration between Mozilla and the PBS Newshour team, creating an annotated version of Barack Obama’s State of The Union Speech using popcorn.js. While the demo itself is fairly humble, its actually quite an accomplishment given that we had only met the Newsroom staff the day of the speech during a meeting at the Corporation For Public Broadcasting. I think the Newshour team experienced the power of the open web first hand – a talented group of developers were able to collaborate quickly and produce something of high quality (not unlike a tv newsroom). So much so that we’ve begun a conversation on PBS to use popcorn.js in all of their future analysis.

The whole experience was a great example of the kind of innovation that we’re trying to foster with Web Made Movies: video producers come up with new use cases for technology , and the resulting code is put in a repository for future use. It’s proof that web video is an engine for innovation and HTML5 is a great space to be exploring.

David Humphrey and PBS Newshour recently blogged about their experiences. I thought I’d provide a blow by blow.

January 25th, 2011
Washington, DC: Ben Moskowitz, Nicholas Reville, Geoffrey MacDougall and myself are pacing around a presentation room at the Corporation for Public Broadcasting. We’ve come to express why we think there is natural alignment between public media and the open web.

A little bleary from travel, a previous day of meetings, and bad breakfast joint coffee, we meet a room full of people involved in American public media – PBS affiliate stations, the PBS Newshour team, National Public Radio, and others.

We had created some demos over the previous 2 weeks – including this popcorn treatment of a PBS Newshour piece on Hait (only the first several minutes are annotated). We also experimented with the WGBH Open Vault, creating a parser for their metadata schema that would translate into popcorn data (due to mp4 video, works only in webkit browsers. Ben and his cousin created this example video report, based on lesson plans in the PBS Newshour piece on Haiti. Nicholas at PCF also showed the results of a translation party that Universal Subtitles had hosted with PBS Newshour.

We felt the presentation went well – the room was definitely thinking about the possibilities present in popcorn, and immediately grasped the advantage of adopting Universal Subtitles.

After the speech, PBS Newshour correspondent Hari Sreenivasan remarked how they wished they had it for the State of The Union address. “Isn’t that tonight? Someone asked” Hari nods. A wireframe is sketched out.

We’re with Travis Daub, the Newshour’s digital producer. He’s on the phone getting the run down on when the video of the president’s speech will be on Youtube. He says midnight, and analysis will come in throughout the evening These news people stay up all night, too!

We hop on the popcorn irc channel (link). I ask David Humphrey at CDOT if he is up for bringing popcorn.js to the State of The Union. He laughs, of course he is. He asks if Anna Sobiepanek and Scott Downe who are co-op students at Seneca if they are in – you bet. Rick Waldron, a javascript ninja at Bocoup picks up on what is happening and starts writing code immediately based on the spec. Ben Moskowitz and I rush to keep up, posting wireframes, and communicating with Dean Jensen at PCF / Universal Subtitles who is co-ordinating the transcript that will be instumental in timing the analysis. Travis logs into IRC from his iphone in a cab.

Robert Bole for the Corporation for Public Broadcasting orders some Chinese food.

75% of the code necessary to convert PBS’ annotation system to popcorn. The wireframes are posted. Its gonna pull in twitter, have chapter selectors, wash your car, and email Obama. This is going to be easy. Lets watch the speech.

Travis starts uploading the video.

Snag. The encoded video doesn’t have audio. Travis will have to start again, and do it twice for browser compatability. Ouch. The video is so long that the encoding process is painful.

New snag. Servers seem to be failing.

Multiple snags. Grumpiness sets in. Travis valiantly posting new versions. Popcorn hackers have the analysis working with a dummy video – just waiting for the pieces to come together.

The pieces are not coming together. The night is called.

The next day
A snow storm, a train travel, multiple taxis and subways, a hamburger at a breakfast spot – next thing you know its midnight again. Is it working yet? No, it is not. Inconsistencies in the transcript. Hotel Wifi killing us. Must sleep.

With a final push, and additional work in the morning, the bugs are ironed out. Vanessa Dennis at PBS Newshour adds styling and pushes to their blog on the front page. My favourite quote from theirblog:

“The Web is changing, and we at the PBS Newshour are changing with it through experiments like these.”

Experiments like these can be exhausting, but the thing I love about working with Mozilla is that we make change by building things. It feels great that Web Made Movies is really starting to accomplish this.
by Brett Gaylor at Monday, January 31, 2011 1:02:00 PM
Mike Conley — MoMo All-Hands: Day 1
A Delicious Flight

After waking up, cleaning up, and eating, I was more or less ready to go. Blake was stopping by around 11:30AM with the airport taxi, and I had about an hour to myself. I decided that now would be a wonderful opportunity to purchase some flying snacks from the nearby convenience store.

Moments later, I was browsing the shelves. I grabbed some granola bars, and some raisins. On my way out, I saw some flatbread, and was immediately reminded of the time that my friend Doug offered me some flatbread with roasted red pepper hummus on it. And I remembered that it was delicious. Immediately, I was hit by a craving, grabbed the flatbread, and went to go find the hummus.

Eventually, I zeroed in on the hummus section. Unfortunately, the tub of roasted red pepper hummus that I found was about the right size for a whole family, and I thought that’d be a bit of a waste (since I wasn’t sure I’d be able to refridgerate it upon landing). So I dug around in the shelves until I found a smaller tub, grabbed it, paid, and left.

Now, I know what you’re thinking: “Mike – this minutia is really of no interest to me. Am I really going to have to hear about the food you bought and ate? Is this how these posts are going to go?”. Just rest assured, I’m bringing this up for a reason. The hummus comes into play later.

Blake arrived, I hopped into the car, and we were off. We compared snacks: Blake was packing some awesome-looking homemade banana bread with chocolate chips.

It was going to be a delicious flight.
A Newbie Goes Through Security

It’d been a little while since I’d been through airport security, and I had forgotten some of the moves. I did my best to follow Blake’s example – I pulled out my laptop to be screened independently. I tossed down my jacket. I lined it all up all neat and tidy for the little luggage car-wash to scan it.

Soon, it was my turn to walk through the metal detector. In front of me, Blake had sailed through and was already getting his stuff off of the conveyer belt.

I walked through the gate. BEEP BEEP BEEP BEEP.

“Sir, do you have anything in your pockets?”

Oh yeah. I had everything in my pockets. Wallet, keys, cell-phone, belt, watch, I’d forgotten all of it. So there I am, scrambling to void my pockets of their contents, and tossing them into a little bowl to be scanned.

Security was not impressed.

After an extremely thorough wand-scanning, I was eventually let through. I gathered my stuff up, and hurried over to Blake.
The Storage Seat

We reached our terminal without incident. We had an hour to kill before boarding, and chatted about the upcoming meeting, science fiction, Ricky Gervais, video games. Boarding was a piece of cake.

Although we had booked our tickets seperately, somehow, our seats were in the same row. There was a lone seat in between us. The plane filled up…and filled up…and the seat remained empty. Suddenly it dawned on me: Blake and I were probably about to get a free storage seat between us. Awesome-sauce.

I became so excited about the middle seat that I was starting to sweat everytime someone else came onto the plane. One or two stragglers would saunter on, and I was sure the jig was up. But somehow, someway, it didn’t happen. The storage seat was saved. It immediately became home to a host of overflow items.

It was at this point that the captain came on the horn to tell us that there was a problem. During the safety check, he found out his oxygen mask wasn’t working. Maintenance would be sending a part over, and it’d take somewhere around 30 minutes to get it all sorted.

30 minutes later, we were underway, and hurtling down the tarmac. Eventually, the seatbelt sign was turned off. I reached for my book. It was going to be a long flight (approx 6 hours).

That’s when the flight attendant announced that the water wasn’t running in the front bathroom. So we were down to one bathroom. The girl across the aisle from me groaned audibly.

Moments later, we found out that our in-flight movies were not working. The same girl groaned even louder, whipped out her cellphone, and began texting furiously. I was reminded of this Louis C.K. bit on Conan…

It was an uneventful flight. Blake and I chatted a bit, and then I read, and he listened to music. There was a Mythbusters marathon on the on-board television, so that was entertaining. I learned today that if a diver in one of those old-school scuba suits is down 300 feet, and suddenly has his air supply cut off…the waterpressure is strong enough to compress all of his organs into his helmet like a human meatball. Gross. Thanks Mythbusters.
Landing, and the Hummus Incident

Landing was no biggie. The captain came on the horn again to tell us that they had to cut power the plane in order to get the bridge attached to us. As the lights went out, I could see the light of a cellphone illuminate the face of the girl across the aisle. Texting commenced at a furious pace. I don’t think she was very happy with the flight.

Next, Blake and I meandered our way to U.S. security and customs. Along the way, we helped a mother and daughter find their New Zealand flight. While in the line-up, I realized that I was still carrying a bottle of water that I’d purchased in the Toronto airport. And it was still more or less full.

To avoid embarrassment, I chugged it back. The whole half-litre. Dazed from over-hydration, I tossed all of my gear, pockets and all, upon the security conveyor belt like a boss. I was determined to do this like a pro, and gave Blake the “I know what I’m doing this time” eyebrows.

Shoeless, beltless, pockets emptied, I passed through the metal detector like a marathon runner at the end of a race. Not a sound from the machine. It was glorious.

“Step over this way, sir”.

I was suddenly redirected to security, and told to empty my backpack.

As the security guard rummaged, my hummus fell out, and wobbled onto the table.

Suddenly, all eyes went to the hummus.

“Sir, what is this?”

“It’s hummus.”

“No, it’s not.” I looked closer. Damn it, I’d been duped by similar packaging. It was full-blown dip, not hummus. So much for healthy snacking.

“Oh, sorry, it’s dip. Not hummus. Dip.”


“Sir, I’m going to have to ask you to stay right here.”

I had started to sweat a little. Meanwhile, Blake was getting his shoes on, and was eyeing me curiously.

“It’s the hummus,” I said. He mouthed “Oh”.

3 or 4 minutes later, I was shuttled over to an official looking desk, where an official looking guard was presiding over my very fraudulant hummus.

“I thought it was hummus. You can keep the dip. I don’t want to the dip. You can have the dip.” I kept saying. I was worried that they thought I’d lied to them while calling it hummus. Or was there some sort of dip embargo? What the hell was going on?

“I don’t want the dip,” the tired looking employee said to me. He had a thousand-yard stare going on. This guy was not a fan of his job – at least not today.

“Your boarding pass says that you came in from Toronto. They should have stopped it at security over there”. He jabbed a finger at the dip. “This is over 50 millilitres of liquid. They shouldn’t have let it through.”

I made a weak attempt at humor by mentioning that the dip wasn’t exactly a liquid, and was more like handcream. He didn’t seem amused. I cut the crap and shut my mouth.

He then spent 5 minutes collecting all of my personal identification, and taking photos of me with the security camera. He assured me that I wasn’t in trouble, and that, in fact, Toronto airport security was in trouble. I remarked that I hoped nobody was going to lose their job over this. He grunted, handed me my boarding pass, and wished me a good day.

Dip-less, I walked back to Blake, gathered up all of my stuff, and we started walking towards our departure gate.
A Chance Encounter

We had stopped by a Tim Hortons to grab some food, when Blake nudged me.

“Come this way,” he said. I followed him back to the Tim Hortons line-up

“Mike Conley, meet David Ascher. David Ascher, meet Mike Conley.”

So it turned out that David Ascher, CEO of Mozilla Messaging, and my new boss, was taking the same flight with his wife. We said hello, and chatted a bit, and then headed towards our gate.

Huh. What were the chances?

We boarded without incident. Blake and I weren’t sitting together on this flight – I was sitting next to some charming older ladies who were slamming back the in-flight alcohol like it was going out of style.
In Hawaii

It was a hard leg of the flight. After approximately forever, we landed. This was at about 10PM Hawaii time, or 3AM Toronto time. At this point, I’d been awake for about 19 hours. I was exhausted, groggy, and probably dehydrated.

A section of the airport terminal had no windows. It was warm out, but not uncomfortably so. It was a bit humid. I saw palm trees in the shadows.

Eventually, David, his wife, Blake and myself were able to hail a cab. We whisked through the Hawaiian night. I remember thinking that the outside part Hawaii we were driving through seemed like an interesting mix of industrial and tourist. Kind of like if Niagara Falls and Hamilton were smashed together.

Finally, we pulled up to our hotel. After checking in, my body had pretty much given up.

It’s funny how 19 hours of just sitting still in a chair will exhaust you.

Before reaching the elevators, we ran into a few more members of the team who’d arrived before us. There were quick introductions (too quick – I’d have to ask for names again later on), and then we were up to our rooms.

Inside my room, I dumped by bag, plugged in my laptop, and sent a few e-mails to let people know I had arrived safely. I prepared for bed.

As I rummaged through my luggage, something was bugging me…

“Hm…let’s see…shorts, pants, underwear, shirts…”

My eyes went wide.

No socks.

I hadn’t brought socks.

Click here to go to Part 2.

Click here to go back to the introduction.
by Mike at Monday, January 31, 2011 9:06:33 AM
Mike Conley — MoMo All-Hands. In Hawaii.

It’s been a little while since I posted. Well, I’ve been busy.

In Hawaii.

That’s right. Hawaii. Mozilla Messaging just sent the entire team to Hawaii for an all-hands meeting. And, believe it or not, we got a hell of a lot done. It’s amazing how productive people can be in shorts, Hawaiian shirts, and sandals! No joke!

It was also an opportunity for me to meet my new teammates. It’s a fantastic group, and a very warm welcome. They’re smart, committed, quirky, and hilarious. I think I’m really going to enjoy working with this team.

Anyhow, I had a great time, and learned a lot.

And I took notes.

Here’s part 1…
by Mike at Monday, January 31, 2011 9:05:50 AM
Planet Mozilla Blog — Planet Additions: Class Of 1/30/2010

Anya Kamenetz (feed) – Anya Kamenetz is a Mozilla contractor blogging about Mozilla & education.

Rafael Espíndola (feed) – Rafael Espíndola joined Mozilla last December to work on Rust. He has also been trying to build Firefox with the clang compiler. Before joining Mozilla he worked on the Portable Native Client project and before that in gcc (both at Google).

Bonjour Mozilla (feed) – Bonjour Mozilla is originally a French blog made and updated by Mozilla community members and created in June of 2010. There now exists an English Feed with translations for the main posts, that regularly portray and highlight Mozilla community members around the world.
by raccettura at Monday, January 31, 2011 7:29:42 AM
Philipp von Weitershausen — Status report for January

The month of January in Sync land was dominated by two things:

* sorting out the aftermath of Sync 1.6 which unfortuantely reshuffled and duplicated a lot of users’ bookmarks,
* finishing up all the work we need to do for Firefox 4


My colleague Richard Newman and I sat down and stared at the bookmark sync code for quite a bit. We identified and fixed a bug introduced in 4.0b8 that caused the reordering problems people had reported. We also made bookmark sync less aggressive about reparenting bookmarks which should alleviate many of the bookmarks-are-moved-to-the-unsorted-folder and bookmarks-are-duplicated issues. These were fixed for Firefox 4.0b10 / Sync 1.6.2. We also identified a bunch of old bugs, particularly related to the restore-from-backup functionality. These are already fixed and will go out in Firefox 4.0b11 / Sync 1.6.3.

Many of those bugs were due to parallel structures that were not synchronized properly, assumptions that certain values would not change, and similar things. This prompted me to quote Phil Karlton’s famous bonmot a couple of times:

There are only two hard things in Computer Science: cache invalidation and naming things.

Firefox 4

Apart from a few UI improvements to the Sync preference window and its dialogs, the remaining work for Firefox 4 mostly consistent of making history sync use the new asynchronous bulk API that Shawn Wilsher implemented. This speeds up sync when you’re syncing down a lot of history (e.g. the first sync on a second device) while improving the UI’s responsiveness at the same time.

As a byproduct, we also fixed a long standing problem in Sync: when a particular record could not be added to the local profile, Sync would stop altogether for that engine, leaving all other changes, including any local changes, unsynced.

by philikon at Monday, January 31, 2011 7:09:20 AM
Philipp von Weitershausen — Doubling up on blockers (and other bugs)

As we’re getting closer to shipping Firefox 4, less of us have any blockers to work on while the pressure increases on the few people that do. Here are some thoughts and experiences on how to level that.

This past month we picked up a few blockers in Sync that had people’s bookmarks duplicated and reordered. An embarrassing and unfortunate scenario, especially since it was hard to reproduce and our unit tests were all passing, of course. We had gotten reports of duplicated bookmarks in the past. So while we had recently made some changes to bookmark sync that may have made situation worse, it certainly looked an old lurking bug.

After two days of staring at the code, writing tests that passed and getting nowhere, I asked my colleague Richard Newman to help me out. In previous projects I’ve had extremely good experiences with pair programming. In this technique, two developers sit down over one machine and one text editor. The “navigator” dictates the general direction while the “driver” writes the actual code. Developing code this way has a lot of advantages:

* Two sets of eyes see more than one. Simple mistakes that can slow an individual developer down, such as typos, off-by-one errors, etc. happen less.
* Code is reviewed before it’s checked in. Granted, we already do that at Mozilla.
* Code is reviewed instantly. Less developer and reviewer time is wasted with an asynchronous review cycle and less time has to be spent explaining why a particular change was made this or that way.

However, Richard works remotely, nearly a thousand miles away, although fortunately he’s in the same timezone. As it turns out, pair programming over a distance works great when you have the right tools. Here’s what we did:

* We both had hands-free phones available, so we got on the phone and started walking through the code together.
* As we bounced ideas off each other, we collected our findings in an Etherpad. This allowed us to write down our ideas in a structured manner, while allowing the other one to reorder and restructure them as we filed bugs.
* On some of those bugs, we paired up in the traditional pair-programming sense. To compensate the lack of a common screen to stare at, we used a shared GNU screen session where I brought up an instance of emacs so that we could take turns in “driving.”

We ended up doing this this for three whole afternoons. We found potential culprits, filed bugs and fixed a bunch. The experience very much reminded me of on-site pair programming. I suggest you try it some time, be it with a colleague who’s remote or not. You’ll feel extremely productive even if you’re not writing a single line of code yourself. Not only that, you’ll end the session with a much better understanding of what the code does (instant r+!).

Let’s kill those blockers dead.

by philikon at Monday, January 31, 2011 6:41:12 AM
BlueGriffon — Short break
For those of you who sent us email (bugs, feedback, etc.) about BlueGriffon or recently filed a bug on bugzilla.bluegriffon.org, please be patient, we will probably not be able to answer/comment before the 4th or 5th of feb. Thanks.
© BlueGriffon at Monday, January 31, 2011 3:14:00 AM
Dave Herman — Proper tail calls in Harmony

In the last ECMAScript committee meeting, we promoted the proper tail calls proposal from “strawman” to official “proposal” status. There’s still work to do to make it into a polished spec, and it ain’t over till it ships, but I’m really excited that we could be making proper tail calls a guaranteed feature of JavaScript.

In short, proper tail calls make it possible for a function to delegate its result to a function call without allocating unnecessary space in the runtime system. In most languages, function calls always require allocating a stack frame, and stack frames are only deallocated on return. But this implementation approach isn’t necessary and even makes it impossible for programmers to write certain kinds of programs. Language implementations that guarantee proper tail calls promise that, whenever a function delegates to a function call to provide its final result (according to a fixed set of rules about what such delegation looks like syntactically), the runtime system will not indefinitely keep the caller’s frame allocated while the callee runs.

Why does this matter? For one, it makes it possible to break up large while or for loops into separate functions that tail-call one another, passing their state around as arguments instead of updating a shared piece of state. This makes it easier to understand the state and to build mock states in order to test the pieces of the algorithm independently. (I wonder if it might even open up opportunities to parallelize pieces of an algorithm into separate web workers. I’ve got another post coming on how some of Brendan’s recent ideas for Harmony might help with web workers.) Generally speaking, tail calls make it possible to modularize program control. Whether it’s just for the occasional one-off delegation (which proper tail calls makes as space-efficient as a goto), or for writing in full-on continuation-passing style (which, without proper tail calls, are more or less destined to blow the stack), this offers more flexibility for programmers to write more modular code.

The other people who stand to gain are compiler-writers. After all, compiling to JavaScript is getting more popular all the time. Tail calls make it possible to simulate lots of different kinds of control constructs in other programming languages. People have tried using setTimeout with a delay of 0, but browsers throttle these events with a minimum timeout of around 5 to 10 milliseconds (apparently, to support web pages that rely on the delay for animations). Having an officially guaranteed tail call mechanism makes it possible to compile control constructs like continuations, coroutines, threads, and actors. And, of course, it’s useful for compiling source languages with tail calls!

A word about stack traces: some people worry that tail calls interfere with getting useful stack traces. And it’s true that it can be useful to track the complete call history for stack traces, including tail calls. Now, when necessary, there are simple workarounds programmers can use for turning tail calls into non-tail calls. But a better answer is for VM writers to provide smarter stack traces which track only a finite number of the most recent tail calls in their stack traces. This satisfies the requirement of bounding the amount of allocation (since it’s a bounded amount of history) but still keeps useful diagnostic information in the stack trace. In the end, it’s true that this is a trade-off. In my experience, this cost is worth the benefit of being able to write better delegation and control abstractions.
by dherman at Monday, January 31, 2011 1:51:25 AM
Sunday, 30 January 2011
Michael Verdi — Firefox Loves You

Hi. I sent you here because you were complaining on Twitter about how much you hate Firefox. I understand. There are times when a program will so totally piss me off that I find myself out on the lawn ranting to the neighborhood children. Let me try to help.

Try Firefox 4 with a new profile

This is my favorite way to upgrade to Firefox 4 which is super fast and has some great new features like App Tabs and Panorama that I’m already hooked on. If you’ve still got questions or you run into problems, just ask our community of volunteers who will help you figure it out.
by Verdi at Sunday, January 30, 2011 10:12:56 PM
Wladimir Palant — Why you do not want to use the LOAD_ANONYMOUS flag

When you are creating a Firefox extension you don’t need to use browser’s default settings when downloading something, you can choose from a number of load flags defined on the nsIRequest interface instead. Some of them are really useful, e.g. the flags controlling caching. And then there is LOAD_ANONYMOUS flag that sounds like a good idea for downloads of public files — after all, why should you allow cookies and such? Making user tracking possible isn’t the point here.

Adblock Plus 1.3.2 added this flag for downloads of filter subscriptions, development build users didn’t notice any issues. Shortly after the release I had to revert this change and release Adblock Plus 1.3.3 however. Turned out that “no authorization tokens” included proxy authentication as well. So for users accessing the web through a proxy that requires authorization (e.g. NTLM authorization in some companies) the download would always fail with channel status NS_ERROR_PROXY_CONNECTION_REFUSED and HTTP response “407 Proxy Authentication Required”. Fewer than 0.1% of the users were affected, I must consider myself lucky to have found the problem so soon after the release. Other people might not be so lucky, hence this warning: LOAD_ANONYMOUS flag might be useful in some very special scenario, you probably don’t want to use it in your extension however.
by Wladimir Palant at Sunday, January 30, 2011 8:49:03 PM
Eric Shepherd — The Sheppy Report: Week of January 24

This was an absurdly productive week, even before our wildly successful documentation sprint — which Janet will be blogging about separately.

Stuff I did before the doc sprint

* Documented the nsIMenuObjectBox interface, which picked up a new attribute recently.
* Added notes that the MozAfterPaint event is no longer sent by default:
o MozAfterPaint
o Mozilla preferences for uber-geeks
* Documented the alternate style sheet API
o Live example
o document.enableStyleSheetsForSet()
o document.lastStyleSheetSet
o document.preferredStyleSheetSet
o document.selectedStyleSheetSet
* Finally added a PromoteJS campaign box to my blog. Had to hack at my theme a bit to do it, which is why I hadn’t gotten to it previously.
* Finished the documentation for the Add-on Repository API:
o Add-on Repository code module (written by Mossop, cleaned up by me)
o SearchCallback
o Interfacing with the Add-on Repository (a how-to guide with sample code)
* Updated the toolbar reference documentation to cover the idea of external toolbars.
o XUL toolbar element
o XUL toolbox element
o The toolbar‘s toolboxid property.
o The toolbox’s externalToolbars property.
* Created a new Performance section to contain performance-related documentation and started moving existing content into this section.
o Cleaned up and updated the PerfMeasurement.jsm reference.
o Added Measuring performance using the PerfMeasurement.jsm code module.
* Documented the new -moz-windows-theme media query.

Stuff I did during the doc sprint

* Added the MobileOnlyInline and MobileOnlyHeader templates, which insert “Mobile Only as of Gecko X” notes in the documentation.
* Created the JSFiddleLink template, which creates a “See this on JSFiddle” button.
* Documentation for Electrolysis content views has been written; the affected documents are:
o Working with content views (new)
o nsIContentView (new)
o nsIContentViewManager (new)
o nsIFrameLoader (updated)
o nsIDOMWindowUtils (updated)
* Documented nsIProfile, then realized it’s so obsolete it was never used in Firefox. But we have it for historical reference now anyway.
* After that, I moved on and documented the new Toolkit Profile Manager APIs:
o nsIToolkitProfileService
o nsIToolkitProfile
o nsIProfileLock
o nsIProfileUnlocker
* Made multiple updates to the MDC Style Guide to clarify several points, mostly related to code samples.
* Added screen shots from Google Chrome to the HTML meter element documentation, since it’s not supported in Gecko yet.
* Created the EmbedSVG template, which renders an SVG file that’s attached to the article into the page, given its filename.
* Reviewed and copy-edited articles updated by others during the sprint.

Crazy awesome!
by sheppy at Sunday, January 30, 2011 12:33:51 PM
Saturday, 29 January 2011
Ghislain ‘Aus’ Lacroix — Songbird for robots, another Friday, another preview

Howdy birders,

As promised, here is a fresh preview of Songbird for Android with many improvements for you to chew on over the weekend. 🙂

Before I mention any of the good stuff, here are some things you’ll need to know to be able to enjoy using it.

* You’ll need an Android phone that’s running Android 2.1-update1 or newer for the OS
* To install, you will need to enable installing applications from unknown sources (Typically under Settings -> Applications -> Check ‘Unknown Sources’ Option).You’ll also need to manually uninstall the previous preview release before you can install the new one
* When we release a final version through the Android Market you will need to manually uninstall this build — which will wipe data related to it
* This build will expire 4 weeks from today so get your testing in while it’s hot!

OK, now here are some fixes and feature additions we’d like to highlight. 🙂

* Headsets and Headphones getting disconnected will cause playback to pause
* Issues with opening the application from the widget have been fixed
* The correct song should always play on phones with phone storage as well as SD card storage
* Sorting issues have been resolved for all phones
* Minor visual cleanup with regard to Facebook notifications

And finally, there are still some known issues which you should know about.

* Genre listing is still a little wonky on phones with phone storage and SD card. You will get duplicate genres populated with songs you wouldn’t expect (Amon Tobin in Rock? I don’t think so!)
* Sometimes an album will be incorrectly listed under an artist. This issue is also related to how some phones handle phone storage vs external SD card storage.
* Sometimes the photostream photos don’t load and the spinner stays there instead. That sucks and we’ll fix it.
* If time permits, we will be including support for Bluetooth Headsets and Wired Headsets/Headphones with playback controls on them

Now, you’re ready to download the APK.

We’re still a few weeks away from a final release in the Android Marketplace, but this will probably be our last preview build until then so let us know what you think as it may be your last chance before we release. 🙂

Thanks again to all of you who have taken the time to provide feedback. We really appreciate it.

Have a great weekend!
by Aus at Saturday, January 29, 2011 2:30:43 PM
Ehsan Akhgari — Why I do what I do

Let’s go back to spring, 2006. I was a regular guy, who knew how to write code, and had some free time on his hands. Back then, after a few years of using free software extensively, I decided that I wanted to stop being only a consumer of free software, and I wanted to give something back to the amazing free software community. So, I set out to seek an answer to what today seems like one of the most important questions that I ever asked myself, career-wise: “Where can you have the most impact?”

As it turned out, answering that question wasn’t easy. I had a dilemma. I didn’t know if I could be effective in a free software community at all (I had no experience in that back then). I didn’t know what projects needed the most help. I didn’t know how I could have the most positive impact that was potentially possible. I didn’t know where my help was needed, and appreciated.

So I started to write down a list of all of the free software projects that I used regularly. I (unfortunately) don’t have that list around any more, but I remember tens of projects were on that list. Then I sat down, gazed at the list, and told myself: “Well, this sure didn’t make the choice easy now, did it?”

It certainly did not. I had all sorts of stuff on that list, from complex things such as the Linux kernel, to very narrowly scoped projects such as gnokii. I knew that I had to come up with a set of criteria in order to pick up a project from the list, so I decided that I would either look into the projects with the most possible positive impact on users worldwide, or with the projects which could get the most benefit from my expertise. The list came down to Mozilla and Wine.

Mozilla was the winner of the first category. It was the project with the most potential positive impact on the world, according to what I thought. Wine was the winner of the second category. It was the project with the most potential for taking benefit from my expertise (I used to know lots of stuff about the Windows internals, as I had been doing systems programming for Windows for a long time). The easier choice for me would have been Wine, as I already had a list of things to work on in Wine, and I had a pretty good idea what needed to be done. But I don’t like things which come easy. I like challenges. So I chose Mozilla.

At that point, I practically knew nothing about contributing to Mozilla. I went ahead and started to read the hacking guides that Mozilla published at the time. Then I grabbed the source and tried to look at it. It gave me the chills. It was this huge source code which looked very intimidating. I couldn’t even get it to compile! So I looked for people who would help me to get started. timeless and mcsmurf were the two people who helped me compile Firefox for the first time (yes, back in the day, compiling the Mozilla code base for the first time took a while — it took me about a month to finally get a build!). Then I started to find bugs to work on. I learned how to write patches, test them, ask for review, ask them to be committed, etc. The first patch ever committed to the Mozilla code base on my behalf was bug 338179.

Fast forward almost four and a half years later. I’m still working on the Mozilla project, and I’m pretty happy with what I do!

I have two disjoint sets of reasons why I enjoy my work in the Mozilla project: selfish and altruistic reasons.

I like to feel that there are things that every one of us can do which can have tremendous effect on the world. There are humanitarian causes in which one could participate. Most people wouldn’t consider contributing to a software project as one, but I do. At the broad scope, I see the Mozilla project as a humanitarian cause to empower individuals over the Internet. We build the technology which has made some amazing things possible. Projects such as Ushahidi and Kiva are built over the Internet, and people all around the world are using the Internet on a daily basis to engage with other people, find new ideas, get involved in their society, and improve their lives.

Getting involved in the Mozilla project has also helped me become a better person. It has improved my self-confidence a lot, as it has shown me over and over that I can surprise myself (in a good way!), and it has made me feel that I’m useful. This has been extremely important to me. It has also been a constant stream of technical challenges to me, which has kept me happy. And it’s always nice to see how people react when they find out that I work on Firefox. I’ve got a lot of compliments, and a lot of thank-you’s, and it’s flattering. It gives you a warm feeling inside, and I know that’s something that I’m lucky to have.
Trackback URL for this post:
by Ehsan Akhgari at Saturday, January 29, 2011 10:47:17 AM
BlueGriffon — RPM for Fedora >= 13

Remi Collet had made available a Fedora >= 13 RPM for BlueGriffon 0.9RC1 !
© BlueGriffon at Saturday, January 29, 2011 8:08:00 AM
Mary Colvig — Contributor Engagement Town Hall

As promised in last week’s news about the new contributor engagement team, we’re going to host a few “Town Hall” sessions to share out early plans, get feedback and brainstorm. We’d like to make this a regular happening. To start we’ll host these initial calls over the next two weeks and in different timezones to accommodate as many people as possible. Rough line up:

* Week of Jan 31: North/South America with Mary Colvig, Amie Tyrrel, David Boswell and Juan Becerra (Juan will help with Spanish and am looking for someone to help with PT-BR)
* TBD: Asia with Gen Kanai
* TBD: Europe & Africa with William Quiviger

For next week’s call I’d like to find a time that works best around work and school hours for community in No. and So. America. If you’re in these regions and contribute to Mozilla, please note the times that work best for you on this “Doodle.” They are:

Wednesday, Feb 2nd:

* 12:30 PST/8:30 PM UTC
* 2:30 PST/10:30 PM UTC
* 3:30 PST/11:30 PM UTC

Thursday, Feb 3rd:

* 12:00 PST/8:00 PM UTC
* 1:00 PST/9:00 PM UTC
* 2:00 PST/10:00 PM UTC
* 3:00 PST/11:00 PM UTC

Please spread the word about this call — an RSVP will go out as soon as we settle on a time. William and Gen will be following up to set up the Europe, Africa and Asia timezone-friendly calls soon!

by Mary Colvig at Saturday, January 29, 2011 7:17:12 AM
Planet Mozilla

Collected here are the most recent blog posts from all over the Mozilla community. The content here is unfiltered and uncensored, and represents the views of individual community members. Individual posts are owned by their authors — see original source for licensing information.
Subscribe to Planet


* Atom
* RSS 2.0
* RSS 1.0

Subscription list:


Last update: Thursday, February 03, 2011 2:01:42 AM
Other Planets

* Mozilla Education
* Mozilla Interns
* Mozilla Messaging
* Mozilla Online (Chinese)
* Planet Bugzilla
* Planet Firefox
* Planet Firefox Mobile
* Planet UX
* Planet QMO


* (feed) Aakash Desai
* (feed) Aaron Leventhal
* (feed) Above The Fold
* (feed) Adam Christian
* (feed) Air Mozilla
* (feed) Aki Sasaki
* (feed) Al Billings
* (feed) Alan Starr
* (feed) Alex Faaborg
* (feed) Alex Fowler
o DNT: 1 = “Tell sites I do not want to be tracked”
* (feed) Alex Fritze
* (feed) Alex Polvi
* (feed) Alex Vincent
* (feed) Alexander Limi
* (feed) Ali Ebrahim
* (feed) Ali Rayl
o Songbird for robots, another Friday, another preview
* (feed) Alice Nodelman
* (feed) Alina Mierlus
* (feed) Alix Franquet
* (feed) Allan Beaufour
* (feed) Allen Wirfs-Brock
o The Browser is a Transitional Technology
* (feed) Alon Zakai
* (feed) Anamaria Stoica
* (feed) Andreas Gal
* (feed) Andreas Nilsson
* (feed) Andrew Stein
* (feed) Andrew Sutherland
* (feed) Andy Edmonds
* (feed) Anthony Hughes
o Status Report 2011.4
* (feed) Anya Kamenetz
* (feed) Aravind Gottipati
* (feed) Armen Zambrano Gasparnian
* (feed) Arun K. Ranganathan
* (feed) Atul Varma
* (feed) Austin King
* (feed) Axel Hecht
* (feed) Aza Raskin
o Massive Health: Raised Money, Spending On New Hires
o My Father’s Final Gift
o Redesigning OSX Spaces: 45˚ Is All It Takes
* (feed) BabelZilla
* (feed) Barbara Hueppe
* (feed) Bas Schouten
* (feed) Basil Hashem
* (feed) Ben Combee
* (feed) Ben Galbraith
* (feed) Ben Hearsum
* (feed) Ben Hsieh
* (feed) Benjamin Smedberg
* (feed) Benjamin Stover
* (feed) Benoit Jacob
* (feed) Blair McBride
* (feed) Blake Kaplan
* (feed) Blake Winton
* (feed) Blog of Data
* (feed) Blog of Metrics
* (feed) BlueGriffon
o Short break
o RPM for Fedora >= 13
* (feed) Bob Clary
* (feed) Bob Lord
* (feed) Bobby Holley
* (feed) Bogomil Shopov
o Mozilla.bg – latest page into Mozilla’s ecosystem
* (feed) Bonjour Mozilla
o Stuart Parmenter
o Bienvenue Grégory !
* (feed) Boris Zbarsky
* (feed) Brad Lassey
* (feed) Brendan Eich
* (feed) Brett Gaylor
o Yes we did!
* (feed) Brian Birtles
* (feed) Brian Crowder
* (feed) Brian King
* (feed) Bryan Clark
* (feed) Bugzilla Tips
* (feed) Burning Edge – Firefox
* (feed) Calendar
* (feed) Cameron McCormack
* (feed) Cameron Roy
* (feed) Camino Blog
* (feed) Camino Update
* (feed) Carsten Book
* (feed) Cesar Oliveira
* (feed) Chelsea Novak
o Join Mozilla – First looks at creative
* (feed) Chris AtLee
* (feed) Chris Blizzard
* (feed) Chris Cooper
* (feed) Chris Crews
* (feed) Chris Double
* (feed) Chris Finke
* (feed) Chris Hofmann
* (feed) Chris Ilias
* (feed) Chris Jones
* (feed) Chris Leary
* (feed) Chris Lyon
* (feed) Chris Pearce
* (feed) Christian Legnitto
o Mozilla-central landings today and the beta 11 plan
* (feed) Christian Sejersen
* (feed) Christoph Dorn
* (feed) Clint Talbert
* (feed) Code Simplicity
o Open Source Community, Simplified
* (feed) Colin Barrett
* (feed) Community Surveys Blog
* (feed) Curtis Bartley
* (feed) Damon Sicore
* (feed) Dan Mills
* (feed) Dan Mosedale
* (feed) Dan Witte
* (feed) Daniel Einspanjer
* (feed) Daniel Glazman
* (feed) Daniel Holbert
* (feed) Danny Moules
* (feed) Dave Dash
* (feed) Dave Herman
o Proper tail calls in Harmony
* (feed) Dave Townsend
* (feed) David Anderson
* (feed) David Ascher
* (feed) David Bienvenu
* (feed) David Bolter
* (feed) David Boswell
o Featured Mozilla-based Applications for February
* (feed) David Boswell
o Featured Mozilla-based Applications for February
* (feed) David Bradley
o Songbird for robots, another Friday, another preview
* (feed) David Burns
o DDD9 – Slides and thoughts
* (feed) David Dahl
* (feed) David Eaves
* (feed) David Humphrey
* (feed) David Mandelin
* (feed) David Miller
* (feed) David Miller
* (feed) David Rolnitzky
* (feed) David Tenser
* (feed) Davide Ficano
* (feed) Deb Richardson
* (feed) Delphine
* (feed) Dietrich Ayala
* (feed) Dion Almaer
* (feed) Doron Rosenberg
* (feed) Doug Turner
* (feed) Doug Warner
* (feed) Drew Willcoxon
* (feed) Dustin J. Mitchell
* (feed) Dwayne Bailey
* (feed) Dão Gottwald
* (feed) Edward Lee
* (feed) Ehsan Akhgari
o Why I do what I do
* (feed) Eric Shepherd
o The Sheppy Report: Week of January 24
* (feed) Erica Jostedt
* (feed) European Mozilla Community Blog
* (feed) Fabien Cazenave
* (feed) Felipe Gomes
* (feed) Firebug Blog
* (feed) Firefox Metrics Project
* (feed) Firefox Support Blog
o What’s up with SUMO – Jan. 29
* (feed) For the Record
* (feed) Francesco Lodolo
* (feed) Francis Gastellu
o Songbird for robots, another Friday, another preview
* (feed) Francis Robichaud
* (feed) Frank Hecker
* (feed) Frederic Wenzel
* (feed) Frédéric Buclin
* (feed) Frédéric Buclin
* (feed) Frédéric Wang
* (feed) Gary Kwong
* (feed) Gavin Sharp
* (feed) Gen Kanai
o Contributor Engagement Asia town hall meeting planning
* (feed) Geo Mealer
* (feed) Georges Auberger
o Songbird for robots, another Friday, another preview
* (feed) Gervase Markham
o Bugzilla API 0.9 Released – INCOMPATIBLE CHANGES
o WOT and “Trustworthiness”
* (feed) Ghislain ‘Aus’ Lacroix
o Songbird for robots, another Friday, another preview
* (feed) Gijs Kruitbosch
* (feed) Giorgio Maone
* (feed) Graydon Hoare
* (feed) Grey Hodge
* (feed) Guy Pyrzak
* (feed) Harvey Anderson
* (feed) Heather Arthur
* (feed) Henri Sivonen
* (feed) Henrik Gemal
* (feed) Henrik Moltke
* (feed) Henrik Skupin
* (feed) Instantbird
o Status Update: November 2010 – January 2011
* (feed) Irakli Gozalishvili
* (feed) J. Paul Reed
* (feed) James Socol
* (feed) Jan Leger
o Songbird for robots, another Friday, another preview
* (feed) Jan Odvarko
* (feed) Jane Finette
* (feed) Jason Orendorff
* (feed) Jay Patel
* (feed) Jay Sullivan
* (feed) Jeff Griffiths
* (feed) Jeff Muizelaar
* (feed) Jeff Walden
o Waiting for Superman
* (feed) Jennifer Boriss
* (feed) Jeremy Orem
* (feed) Jesse Ruderman
* (feed) Jim Blandy
* (feed) Joe Drew
* (feed) Joel Maher
* (feed) John Britton
* (feed) John Daggett
* (feed) John Ford
* (feed) John Gaunt
o Songbird for robots, another Friday, another preview
* (feed) John Lilly
o GSB Talk on Mozilla and Scaling
* (feed) John O’Duinn
o Infrastructure load for December 2010
* (feed) John Resig
* (feed) John Slater
* (feed) Johnathan Nightingale
* (feed) Johnny Stenback
* (feed) Jonathan Griffin
* (feed) Jonathan Protzenko
* (feed) Jonathan Watt
* (feed) Jono S. Xia
o Last chance to rate games for GameOn 2010
* (feed) Jorge Villalobos
* (feed) Josh Aas
* (feed) Josh Geenen
* (feed) Joshua Cranmer
* (feed) Julian Seward
* (feed) Julie Deroche
* (feed) Julie Martin
* (feed) Just Browsing
* (feed) Justin Dolske
* (feed) Justin Dow
* (feed) Justin Fitzhugh
* (feed) Justin Lebar
* (feed) Justin Scott
* (feed) Justin Wood
* (feed) Kadir Topal
* (feed) Karl Tomlinson
* (feed) Kent James
* (feed) Kev Needham
* (feed) Kevin Dangoor
o More challenging puzzle for the devtools job
o More challenging puzzle for the devtools job
o Work with me at Mozilla! Solve the puzzle
* (feed) Kevin Gerich
* (feed) Kyle Huey
* (feed) L. David Baron
* (feed) Laura Mesa
* (feed) Laura Thomson
* (feed) Les Orchard
* (feed) Li Gong
* (feed) Ludovic Hirlimann
* (feed) Luis Villa
* (feed) Lukas Blakk
* (feed) Madhava Enros
* (feed) Majken “Lucy” Connor
* (feed) Marcia Knous
* (feed) Marcio Galli
* (feed) Marco Bonardo
* (feed) Marco Zehe
* (feed) Margaret Tallman
* (feed) Mark Banner
* (feed) Mark Côté
* (feed) Mark Finkle
* (feed) Mark Smith
* (feed) Mark Steele
* (feed) Mark Surman
o Definitions: media, freedom, web.
* (feed) Markus Stange
* (feed) Mary Colvig
o Contributor Engagement Town Hall
* (feed) Massimiliano Mirra
* (feed) Matt Brubeck
* (feed) Matt Crocker
o Songbird for robots, another Friday, another preview
* (feed) Matt Evans
* (feed) Matt Thompson
o Connect. Share projects. Hack everything.
o Your feedback on Drumbeat’s new messaging
* (feed) Matt Woodrow
* (feed) Matthew Gregan
* (feed) Matthew Willis
* (feed) Matěj Cepl
* (feed) Max Kanat-Alexander
* (feed) Meeting Notes from the Mozilla community
o Thunderbird Meeting Minutes: 2011-02-01
o Mozilla Platform Meeting Minutes: 2011-02-01
o Mozilla Project Meeting Minutes: 2011-01-31
* (feed) Melissa Shapiro
* (feed) Mic Berman
* (feed) Michael Coates
o Application Security Tutorial Videos
* (feed) Michael Erlewine
* (feed) Michael Kaply
o Running Add-on Code at First Run (and Upgrade)
* (feed) Michael Verdi
o Firefox Loves You
* (feed) Michael Wu
* (feed) MicroB
* (feed) Mike Beltzner
* (feed) Mike Conley
o MoMo All-Hands: Day 2 (Sunrise, The Meeting Room, Demos, Dinner at Uncle Bo’s)
o MoMo All-Hands: Day 1
o MoMo All-Hands. In Hawaii.
* (feed) Mike Connor
* (feed) Mike Hommey
o Backwards I/O vs. Forward I/O
* (feed) Mike Kristoffersen
* (feed) Mike Morgan
* (feed) Mike Pinkerton
* (feed) Mike Schroepfer
* (feed) Mike Shaver
* (feed) Mike Smith
o Songbird for robots, another Friday, another preview
* (feed) Mike Taylor
* (feed) Milos Dinic
* (feed) Mitchell Baker
* (feed) Mounir Lamouri
* (feed) Mozdev
* (feed) Mozilla Add-ons Blog
o Add-ons Review Update – Week of 2011/02/02
* (feed) Mozilla DevTools
* (feed) Mozilla Developer DevNews
* (feed) Mozilla Developer Webwatch
* (feed) Mozilla Digital Memory Bank
* (feed) Mozilla IT
o Mozilla Scheduled Maintenance (Tree Closure) – 2/3/2011, 6am PST (1400 UTC 02/03/2011)
* (feed) Mozilla Korea
* (feed) Mozilla Labs
o Prism is now Chromeless
o Last Day to Vote: Game On Community Choice Award
o Home Dash Faster in your Language with 3
* (feed) Mozilla Messaging NOC
* (feed) Mozilla SVG Update
* (feed) Mozilla Security
* (feed) Mozilla Services
* (feed) Mozilla Standards
* (feed) Mozilla Web Development
o Python scoping: understanding LEGB
* (feed) Mozilla Web-Tech Blog
* (feed) MozillaZine
* (feed) Murali Nandigama
* (feed) Myk Melez
* (feed) Nagappan
* (feed) Neil Deakin
* (feed) Nicholas Nethercote
o Memory profiling Firefox on TechCrunch
* (feed) Nick Nguyen
* (feed) Nick Thomas
* (feed) Onno Ekker
* (feed) Pascal Chevrel
* (feed) Pascal Finette
* (feed) Patrick Finch
* (feed) Patrick Walton
* (feed) Paul Craciunoiu
o Python scoping: understading LEGB
* (feed) Paul Kim
* (feed) Paul O’Shannessy
o The new Firefox default home page is seriously sexy….
o The California DMV has Terrible Browser Recommendations
* (feed) Paul Osman
* (feed) Paul Rouget
* (feed) Pedro Alves
o Revenues of open source contributions – Part II
* (feed) Phil Ringnalda
* (feed) Philipp von Weitershausen
o Status report for January
o Doubling up on blockers (and other bugs)
* (feed) Philippe M. Chiasson
* (feed) Pierros Papadeas
* (feed) Planet Mozilla Blog
o Planet Additions: Class Of 1/30/2010
* (feed) Planet Mozilla Interns
* (feed) QMO
o Firefox 4 FIXED Bugday this Friday!
* (feed) Rafael Ebron
* (feed) Rafael Espíndola
* (feed) Ragavan S
* (feed) Ray Kiddy
* (feed) Rey Bango
* (feed) Richard Milewski
* (feed) Rob Arnold
* (feed) Rob Campbell
* (feed) Rob Lord
o Songbird for robots, another Friday, another preview
* (feed) Robert Accettura
* (feed) Robert Helmer
* (feed) Robert Kaiser
o Weekly Status Report, W04/2011
* (feed) Robert Longson
* (feed) Robert O’Callahan
o Distinguishing “Embeddable” Versus “Readable” Web Resources Considered Harmful
* (feed) Robert Sayre
* (feed) Robert Strong
* (feed) Rock Your Firefox
* (feed) Romi Hardiyanto
* (feed) Rumbling Edge – Thunderbird
* (feed) Ryan Doherty
* (feed) Ryan Flint
* (feed) Ryan Tomayko
o Songbird for robots, another Friday, another preview
* (feed) Samuel Sidler
o Camino Checkins, January 2011 Edition
* (feed) Sarah Doherty
* (feed) Scott MacGregor
* (feed) SeaMonkey
o News From the SeaMonkey Council
* (feed) SeaMonkey QA
* (feed) SeaMonkey Trunk Tracker
* (feed) Sean Alamares
* (feed) Sean Martell
* (feed) Seth Bindernagel
* (feed) Seth Spitzer
* (feed) Shane Caraveo
* (feed) Shawn Wilsher
* (feed) Shyam Mani
* (feed) Sid Stamm
o Try out the “Do Not Track” HTTP header
* (feed) Siddharth Agarwal
* (feed) Smokey Ardisson
* (feed) Staś Małolepszy
* (feed) Stephen Donner
* (feed) Stephen Horlander
* (feed) Stephen Lau
* (feed) Steve England
* (feed) Steve Fink
* (feed) Steve Won
* (feed) Stuart Parmenter
* (feed) Suneel Gupta
* (feed) Tanner Filip
* (feed) Tantek Çelik
* (feed) Tara Shahian
* (feed) Taras Glek
* (feed) Tarek Ziadé
* (feed) Ted Mielczarek
* (feed) The Bugzilla Update
* (feed) The Firefox
* (feed) The Mozilla Blog
o New Firefox 4 Beta for Android and Maemo is Faster than Ever
* (feed) Thunderbird Localization
* (feed) Tim Riley
* (feed) Timothy Nikkel
* (feed) Tobias Markus
* (feed) Toby Elliott
* (feed) Tom Ellins
* (feed) Toni Hermoso Pulido
* (feed) Tony Chung
* (feed) Trent Mick
* (feed) Tristan Nitot
* (feed) Tyler Downer
* (feed) Updating the MPL
* (feed) Vladimir Vukićević
* (feed) Wil Clouser
o md5verify: A script to automatically verify file integrity
* (feed) William D
o Affero Update + Documentation
o No Coding Tonight
o Affero Problem Definition
* (feed) William Quiviger
* (feed) William Reynolds
* (feed) Wim Benes
* (feed) Wladimir Palant
o Why you do not want to use the LOAD_ANONYMOUS flag
* (feed) WoMoz
* (feed) Zach Lipton
* (feed) Zack Weinberg
* (feed) Zak Greant
* (feed) Zbigniew Braniecki
* (feed) about:mozilla
o Last call for Game On votes, Contributor Town Halls, New Firefox 4 Beta for Android and Maemo, and more…
* (feed) fantasai
* (feed) hacks.mozilla.org
o MDN doc sprint was a huge success
* (feed) matthew zeier (mrz)
* (feed) timeless

Maintained by the Planet Mozilla Module Team. Powered by Planet Venus. View our Privacy Policy.


Filed under: Uncategorized

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )


Connecting to %s

Metal Video Free Download, Death Metal Video, Black Metal Video, Heavy Metal, A-Z - VileMetalVids.com //]]>-->

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); var pageTracker = _gat._getTracker("UA-3302257-1"); pageTracker._initData(); pageTracker._trackPageview();
Liputan 6 - Aktual Tajam dan Terpercaya
<!--// -->
<!--// -->

Kontak Kami

Email : redaksi@sctv.co.id atau liputan6@sctv.co.id     Faximile : 021 - 7278 2055,
Telepon : 021 - 2793 5555 Ekstensi 1211 - 1216,
SMS : ketik komentar <spasi> Komentar Anda, Kirim ke 7266
lain-lain : kirim komentar di http://blog.liputan6.com, kirim surat pembaca di http://www.liputan6.com
Minggu, 20 Februari 2011
Selamat Datang   |      |  
<!-- -->
Afrika Barat
Sementara, di Koumassi dekat Abidjan, pasukan pro-Gbagbo juga menembakkan gas air mata kepada para...






Saham & Valas Update : 20/2/2011 02:01
1 2 3 4 5 6
Topik Pilihan
Komite Pemilihan merahasiakan alasan tidak lolosnya Arifin Panigoro dan George Toisutta, serta calon lain, dari proses verifikasi.
Dengan ditariknya film-film Hollywood dari bioskop-bioskop, menurut Tantowi Yahya, ini menjadi satu peluang besar bagi industri...
Fitur pemanjang Twitter melalui alamat tmi.me kemungkinan masih bisa digunakan kecuali untuk Direct Message dan akun yang...
Amnesti tersebut dijanjikan kurang dari sepekan gelombang protes, yang memaksa mantan Presiden Zine al-Abidine Ben Ali lari...
Pilihan Editor
<!---Gate Kaleidoskop 2010
<!--//<![CDATA[ var m3_u = (location.protocol=='https:'?'https://ads4.kompasads.com/new2/www/delivery/ajs.php':'http://ads4.kompasads.com/new2/www/delivery/ajs.php'); var m3_r = Math.floor(Math.random()*99999999999); if (!document.MAX_used) document.MAX_used = ','; document.write (""); //]]>-->
<!--//<![CDATA[ var m3_u = (location.protocol=='https:'?'https://ads4.kompasads.com/new2/www/delivery/ajs.php':'http://ads4.kompasads.com/new2/www/delivery/ajs.php'); var m3_r = Math.floor(Math.random()*99999999999); if (!document.MAX_used) document.MAX_used = ','; document.write (""); //]]>-->
<!--//<![CDATA[ var m3_u = (location.protocol=='https:'?'https://ads4.kompasads.com/new2/www/delivery/ajs.php':'http://ads4.kompasads.com/new2/www/delivery/ajs.php'); var m3_r = Math.floor(Math.random()*99999999999); if (!document.MAX_used) document.MAX_used = ','; document.write (""); //]]>-->
<!-- -->
Pilih Surat Kabar Bangka Pos Banjarmasin Post Kompas Pos Kupang Serambi Indonesia Sriwijaya Post Surya Tribun Batam Tribun Jabar Tribun Kaltim Tribun Pekanbaru Tribun Timur Wartakota Pilih Majalah & Tabloid Angkasa Bola Chip Gaya Hidup Sehat Hai Info Komputer Kontan Motor Plus Otomotif Net Nakita National Geographic Nova PC Plus Sinyal Soccer Idea Pilih Penerbit Elex Media Komputindo Gramedia Majalah Gramedia Pustaka Utama Grasindo Kepustakaan Populer Gramedia Gramedia International Pilih Media Elektronik KOMPAS.com Sonora Motion FM Pilih Industri Bentara Budaya Dyandra Promosindo PT Gramedia Printing Group Universitas Media Nusantara Pilih Hotel Amaris Hotel Santika Indonesia The Kayana The Samaya