# Planet Thunderbird

## May 17, 2013

### David Ascher

#### You are more than your job title

In grad school, I remember a conversation across the campus green with an visiting psychologist from Harvard.  I don’t remember much about the conversation except that he introduced me to Isaiah Berlin’s notion of the Hedgehog and the Fox, and correctly pegged me as a Fox.  I think I was a bit offended at the simplification, but time has proven him right.  I’m certainly no hedgehog.

I got into a silly argument on twitter last night, about whether my looking to hire someone who I labeled (as job descriptions make us do) a “Coding Designer” was not just foolish (I’d seen the Unicorn references in my tweetstream already) but apparently a bad idea, because, so the ultra-simplified argument goes, you somehow can’t be both.  And so I’ll use the energy to rant a bit about what seem to be prevailing attitudes around titleism and narrow definitions of “professionalism”.

We all need to define ourselves to others. It helps us be understood, and hopefully valued.  Labels can be useful for that. We also, even more, like to label others.  It helps us simplify our approach to them.  If I can find a label for you, then I can rely on a prioris about how people with that label tend to think and behave, and I don’t need to actually get to know you too much.  The more people we interact with, the more important these shortcuts are.  Some roles are particularly subject to that (Recruiters, VCs, politicians, etc. — people who routinely talk to dozens if not hundreds of people a day).  And the best at these roles are those who use a different labeling system than their peers.  Recruiters who see the latent ambition or genius in a shy candidate; VCs who see the determination behind a stutter, or, conversely, the lack of self-confidence behind the bravado, etc.

Labels are useful and practical in the short term.  And I don’t know how one could run a large HR department without them.  But we should be careful to not take them too seriously, as in the long term, they can hurt. They hurt because people, especially interesting, worth-getting-to-know people, are much more subtle, complicated, confusing and hard to categorize creatures.  Whether you take the label too seriously when thinking about others (e.g., refuse to see the valid opinion about a design expressed by a non-Designer) or about yourself (and limit your impact on the world because “oh, that’s not something that a mere ____ like me could say/do”), you’re not getting the most out of anyone involved.

As I write this, I realize that I feel quite strongly about this topic.  Part of it is probably because I grew up in an educational system, which at least then believed way too much in labeling people and determining their fate based on that label.  Much waste ensued.  Part of it is probably because I can’t for the life of me figure out what my label should be, and if I can’t, then that must be bad. I’ve had a range of professional labels, from scientist to engineer, architect, team lead, vice president, CTO, CEO, blah blah blah.  I’ve been called a designer, strategist, entrepreneur, boss, blah blah blah. None of those words will, I hope, be in my epitaph.  And so I get cranky on twitter at night, because if there are people who strive to be both excellent at design and at coding, then by golly we should encourage them.

Titles are a poor approximation of a professional ideal, and a profession is a poor approximation of a human’s breadth, contributions, and talents.  Embrace your inner fox, and if you happen to have both design and coding skills, can see a problem, conjure up a solution, prototype it, welcome challenges to your idea from peers, data, and users, apply.

## May 16, 2013

### Robert Kaiser

#### Preserving Software - Feedback Requested!

As Digital Preservation is part of the agenda of the US Library of Congress, they're doing a workshop on Software Preservation next week, and Mozilla was invited as an expert group. Otto de Voogd and myself are in the delegation going there (I'll be roughly in the Washington, DC, area from Saturday until June 2) for Mozilla - and the text below is a guest post by Otto with questions that we would like some feedback on so we can represent the Mozilla community as well as possible:

On the 20th and 21st of May the Library of Congress holds a workshop on the topic of preserving software.
Otto de Voogd and Robert Kaiser will be representing Mozilla, putting forward our viewpoint as custodians of a codebase with a significant heritage and importance.

Many questions and thoughts arise. Here's an overview of ours; we look forward to feedback.

- Should archivists keep source codes or executables or both?

Executables and source code are both valuable. Executables are valuable because the source code is sometimes not available, or perhaps the build tools are not, and setting up a build environment for older code can be a difficult and complex thing.

Source is valuable to determine how a program works. It also makes it possible to reuse code and algorithms, especially, but not only, in the case of open source software.

- Preserving documentation.

Preserving documentation that goes with software, seems logical.
Would this need to go as far as preserving discussion threads and entries in bug trackers?

- Preserving environments/platforms.

It seems obvious that without preserving an environment in which the software can run, it is going to be impossible to experience the software.
Preserving such an environment should therefor be part of the software preservation effort.

To avoid the physical constraints imposed by preserving old hardware (which would be a preservation effort in its own right), a solution would be to build virtual machines and emulators.
As hardware capacity constantly grows, running virtual versions of older hardware should generally be feasible.

To fully recreate an environment we'd also need to preserve the operating systems and other software tools that the preserved software needs to run.
Those being software themselves would logical already be included in any software preservation effort.

Preserving documentation concerning environments, would also be required.
To build virtual machines and emulators it would be helpful for hardware makers to make technical specifications available. One could envision this to become a legal requirement at least for older hardware.

Can we imagine a world where web based emulators would allow an online digital library to serve users worldwide? Users who would be able to run old software in emulators running in their browsers...

- Is everything worth preserving, if not how does one go about selecting what is worth preserving?

Does one need to preserve every version of software, just the last version or all major releases? What about preserving software that has not spread widely. Would there be some threshold, or some other criteria?

- How does one index software and search the library?

There will be a need to gather meta data about software and the preservation of documentation as we already mentioned. This meta data and documentation could serve to populate an index enabling for instance the search for particular features.

- Can software preservation help in making code reusable?

If there are good ways to actually find relevant and useful code, this could lead to more reuse not only of actual code, but also of algorithms and concepts.
It may also become a valuable source for students who wish to learn about actual implementations of software solutions.

At the very least a minimum of meta data, such publication dates, copyright owners and licenses should be available to determine how certain code can be reused.
In particular for open source software we believe that software libraries should strive make it available without restrictions.

- Preserving data formats.

The software preservation effort should also include an effort to preserve data formats. Including technical descriptions of those formats and the tools to read, write and edit those formats.

- Can software preservation help in the discovery of prior art?

We believe it can, and as such preserving old code could be a great tool in preventing the repatenting of existing software concepts.

Of course we believe that software patents shouldn't exist in the first place, as software is already covered by copyrights, but at the very least prior art is a good avenue to prevent some of the worst abuse of software patents.

- How do copyrights affect software libraries?

A lot of software is licensed to be used on a particular piece of hardware or only available via subscription. How does this affect software libraries? Should there be exceptions like there are for traditional libraries?

In the life cycle of software, the commercially exploitable time is limited, likely anything older than 10 years no longer has any commercial value.
Maybe copyrights on software should be significantly reduced to something like 10 years, which is more than enough to cover the commercially exploitable timeframe of the software life cycle.

Such a limit would greatly enhance the work of software libraries, increasing availability and ease of access as well as removing a lot of the red tape involving requests for permission to keep copies.

- What about software as a service?

And what about software as a service, where neither the source code nor the executables are ever published? How can something like Gmail be preserved, when neither the service's code nor the environment is available to the public?

- Preserving "illegal" or cracked copies?

What if a copy of a piece of software comes from an illegal source? A cracked version with modifications maybe? They have value in themselves as they are a cultural expression.

What if such an illegal copy is the only copy still available? Would it make sense to preserve that too?

## May 08, 2013

### Calendar

#### Lightning 2.3b2 with fixed localization

Hello Folks. If you have been using Lightning 2.3b1 with a localized version of Thunderbird, you probably had troubles with undefined entities. This happened due to a glitch with the Mozilla localization dashboard, the wrong changeset was used.

I have just uploaded Lightning 2.3b2, which should fix the issue. As always, you can download beta versions from the addons.mozilla.org site in the “Developer Channel” box. If you have previously installed a beta, you should get the update via automatic updates.

### Robert Kaiser

#### Editing Maps in JavaScript

The OpenStreetMap project has launched an all-in-JavaScript map editor called "iD" this week:

While we at Mozilla know you can do a lot of good things in JS these days - after all, we're even launching our own phone OS building fully on HTML+JS, and we have been using more and more JS code to power key functionality in our browsers and other products over the years - it's great to see that complex things like editing maps can be done fully in JS and available for all platforms now, while previously it took proprietary and availability-limited technologies like Flash or Java to do the same thing.

Great work, OpenStreetMap guys!

(And yes, as a contributor to OpenStreetMap and even OSMF member, I am biased, but free and open map data on the web fits Mozilla philosophy pretty well anyhow...)

### Joshua Cranmer

#### Understanding the comm-central build system

Among the build systems peer, I am very much a newcomer. Despite working with Thunderbird for over 5 years, I've only grown to understand the comm-central build system in gory detail in the past year. Most of my work before then was in trying to get random projects working; understanding it more thoroughly is a result of attempting to eliminate the need for comm-central to maintain its own build system. The goal of moving our build system description to a series of moz.build files has made this task much more urgent.

At a high level, the core of the comm-central build system is not a single build system but rather three copies of the same build system. In simple terms, there's a matrix on two accesses: which repository does the configuration of code (whose config.status invokes it), and which repository does the build (whose rules.mk is used). Most code is configured and built by mozilla-central. That comm-central code which is linked into libxul is configured by mozilla-central but built by comm-central. tier_app is configured and built by comm-central. This matrix of possibilities causes interesting bugs—like the bustage caused by the XPIDLSRCS migration, or issues I'm facing working with xpcshell manifests—but it is probably possible to make all code get configured by mozilla-central and eliminate several issues for once and all.

With that in mind, here is a step-by-step look at how the amorphous monster that is the comm-central build system works:

##### python client.py checkout

And comm-central starts with a step that is unknown in mozilla-central. Back when everyone was in CVS, the process of building started with "check out client.mk from the server, set up your mozconfig, and then run make -f client.mk checkout." The checkout would download exactly the directories needed to build the program you were trying to build. When mozilla-central moved to Mercurial, the only external projects in the tree that Firefox used were NSPR and NSS, both of which were set up to pull from a specific revision. The decision was made to import NSPR and NSS as snapshots on a regular basis, so there was no need for the everyday user to use this feature. Thunderbird, on the other hand, pulled in the LDAP code externally, as well as mozilla-central, while SeaMonkey also pulls in the DOM inspector, Venkman, and Chatzilla as extensions. Importing a snapshot was not a tenable option for mozilla-central, as it updates at an aggressive rate, so the functionality of checkout was ported to comm-central in a replacement python fashion.

##### ./configure [comm-central]

The general purpose of configure is to discover the build system and enable or disable components based on options specified by the user. This results in a long list of variables which is read in by the build system. Recently, I changed the script to eliminate the need to port changes from mozilla-central. Instead, this script reads in a few variables and tweaks them slightly to produce a modified command line to call mozilla-central's configure...

##### ./configure [mozilla-central]

... which does all the hard work. There are hooks in the configure script here to run a few extra commands for comm-central's need (primarily adding a few variables and configuring LDAP). This is done by running a bit of m4 over another file and invoking that as a shell script; the m4 is largely to make it look and feel "like" autoconf. At the end of the line, this dumps out all of the variables to a file called config.status; how these get configured in the script is not interesting.

##### ./config.status [mozilla/comm-central]

But config.status is. At this point, we enter the mozbuild world and things become very insane; failure to appreciate what goes on here is a very good way to cause extended bustage for comm-central. The mozbuild code essentially starts at a directory and exhaustively walks it to build a map of all the code. One of the tasks of comm-central's configure is to alert mozbuild to the fact that some of our files use a different build system. We, however, also carefully hide some of our files from mozbuild, so we run another copy of config.status again to add in some more files (tier_app, in short). This results in our code having two different notions of how our build system is split, and was never designed that way. Originally, mozilla-central had no knowledge of the existence of comm-central, but some changes made in the Firefox 4 timeframe suddenly required Thunderbird and SeaMonkey to link all of the mailnews code into libxul, which forced this contorted process to come about.

Now that all of the Makefiles have bee generated, building can begin. The first directory entered is the top of comm-central, which proceeds to immediately make all of mozilla-central. How mozilla-central builds itself is perhaps an interesting discussion, but not for this article. The important part is that partway through building, mozilla-central will be told to make ../mailnews (or one of the other few directories). Under recursive make, the only way to "tell" which build system is being used is by the directory that the $(DEPTH) variable is pointing to, since$(DEPTH)/config/config.mk and (DEPTH)/config/rules/mk are the files included to get the necessary rules. Since mozbuild was informed very early on that comm-central is special, the variables it points to in comm-central are different from those in mozilla-central—and thus comm-central's files are all invariably built with the comm-central build system despite being built from mozilla-central. However, this is not true of all files. Some of the files, like the chat directory are never mentioned to mozilla-central. Thus, after the comm-central top-level build completes building mozilla-central, it proceeds to do a full build under what it thinks is the complete build system. It is here that later hacks to get things like xpcshell tests working correctly are done. Glossed over in this discussion is the fun process of tiers and other dependency voodoo tricks for a recursive make. #### The future With all of the changes going on, this guide is going to become obsolete quickly. I'm experimenting with eliminating one of our three build system clones by making all comm-central code get configured by mozilla-central, so that mozbuild gets a truly global view of what's going on—which would help not break comm-central for things like eliminating the master xpcshell manifest, or compiling IDLs in parallel. The long-term goal, of course, is to eliminate the ersatz comm-central build system altogether, although the final setup of how that build system works out is still not fully clear, as I'm still in the phase of "get it working when I symlink everything everywhere." ## May 01, 2013 ### Rumbling Edge - Thunderbird #### 2013-04-30 Thunderbird comm-central builds Thunderbird-specific: (21) • Fixed: 68784 – when sending mail, should first check “no recipient”, then “no subject” (it’s currently the other way round) • Fixed: 308690 – No confirmation prompt when force-deleting messages with SHIFT+DEL (currently no protection against accidental permanent dataloss) • Fixed: 431217 – Send button should be disabled until we have a recipient • Fixed: 507103 – Composition’s “Save” button remembers last “Save as” choice (draft, template, or file), but no indication of current choice in dropdown menu (menuitems should be type=”radio”) • Fixed: 810763 – create test file to check proper handling/rejection of certain values input into the Account manager • Fixed: 813725 – Top of RSS item viewing window frozen • Fixed: 814956 – AppMenu button on Mail Toolbar of standalone message window does not work • Fixed: 816414 – Changed UX / performance issue with “Automatically mark messages as read” “Immediately on display” and keyboard shortcut “N” on RSS feeds • Fixed: 846551 – The unread count on the chat toolbar button is ugly and unreadable on a Mac retina screen • Fixed: 847259 – (Linux) drag and drop rss feed link from browser to folderpane does nothing • Fixed: 851173 – Can’t change encoding for e-mails in TB17 using AppMenu button • Fixed: 855057 – handle account name that is a substring of another one properly in the activity manager • Fixed: 856432 – Modernize the New Mail alert appearance • Fixed: 856451 – Make the New Mail alert show time easy adjustable • Fixed: 856456 – Prompts to save unmodified message forward draft (commit in bug 762594 not complete fix) • Fixed: 859287 – After the toolbar customization dialog is used, the “Get Mail” pull down does not display full width until TB is restarted. • Fixed: 860093 – Regression from Bug 824150: toolbox has no method getElementById() • Fixed: 860406 – When using Personas on Mac, the title bar is overlaid by the tab bar • Fixed: 861867 – Add new Toolbar Icons for Thunderbird. • Fixed: 863231 – Send button not working properly after Bug 431217, when filling recipients via Contacts sidebar • Fixed: 866498 – Radio group for Main Menu Bar->View->Feed Message Body As-> and Radio group for App Menu-> View->Feed message Body As-> are not in sync with each other MailNews Core-specific: (20) • Fixed: 523796 – Eml file content change sending it as an attached file (if there is no [CRLF] at end of .eml file, Tb tries to send in Base64, then bug 326303 occurs) • Fixed: 745919 – TB 11.0.forwarding plain-text (non-MIME) emails creates empty “Attached Message Part” even when forward messages is set Inline, if no Content-Type header, no parameter in Content-Type:. • Fixed: 810675 – do not needlessly preprocess some mail/ files • Fixed: 825012 – Expose methods to insert/remove indices in the m_keys array in msgDBView • Fixed: 832034 – support non-IMAP async folder create types in processNextBatch of mailWindowOverlay.js • Fixed: 833971 – LDAP password requested for each lookup even if password is saved (also can’t save it again after removal) • Fixed: 837409 – crash [@ nsImapMailFolder::AddMoveResultPseudoKey(unsigned int)], [@ nsImapMailFolder::AddMoveResultPseudoKey] (Mac) • Fixed: 845187 – JavaScript interpreter encounters an uninitialized memory from XPCOM interface (thunderbird) • Fixed: 846540 – Emasculate comm-central/configure.in • Fixed: 851275 – show size on disk for newsgroup folders • Fixed: 854536 – Remove GRE_MODULE from Makefile.in’s (port bug 852534 and rules.mk of bug 817076) • Fixed: 855754 – Pass current nsIURI to PGP/MIME proxy object • Fixed: 856304 – remove some obsolete constructs in /mailnews • Fixed: 856506 – crash in nsSmtpProtocol when parsing IDN • Fixed: 856914 – Add a mail services C++ helper • Fixed: 859068 – Cannot create or amend mailling lists in the address book • Fixed: 860966 – Compile failure in msgMapiImp.cpp with Visual Studio 2012 • Fixed: 862757 – Permanent Orange: TEST-UNEXPECTED-FAIL | test_detectAttachmentCharset.js | UTF-16 == UTF-16LE – See following stack: • Fixed: 864256 – Build failure in nsMsgStatusFeedback.cpp: “error: ‘class nsIXULBrowserWindow’ has no member named ‘SetJSDefaultStatus’” • Fixed: 866412 – Build failure: cannot convert from ‘already_AddRefed<T>’ to ‘nsIAtom *’ Official Linux (i686), Official Linux (x86_64) (2013-04-29 build) #### 2013-04-30 Calendar builds Common (excluding Website bugs)-specific: (15) • Fixed: 374973 – multiweek/month view jumps to another week when (de)selecting ‘tasks in view’ from context menu • Fixed: 479674 – Don’t include toolbar.css in application chrome • Fixed: 727434 – Import Calendar.CSV files doesn’t work for Lightning calendar add-on. • Fixed: 857155 – Test beta/release runs with Thunderbird infrastructure in staging area • Fixed: 861620 – Improve test coverage in backend components • Fixed: 861644 – Comptor for binary search is incorrect • Fixed: 861646 – Missing nsIObserver on calIStartupService • Fixed: 861647 – aMaxCount argument is not correctly taken into account • Fixed: 861650 – calIPeriod implementation doesn’t correctly understand duration periods and forces utc • Fixed: 861651 – Minor issues in calItemBase (immutability, properties, attachments) • Fixed: 861652 – ics parser is missing listener, everything is called synchronously • Fixed: 861654 – Fix repeatOffset and repeatDate in calAlarm • Fixed: 861656 – Removing X-Parameters does not work • Fixed: 861657 – Setting count = -1 in calRecurrenceRule causes isByCount = true • Fixed: 864138 – Duplicated condition in switch statement (calXMLUtils.jsm) Sunbird will no longer be actively developed by the Calendar team. ## April 20, 2013 ### Robert Kaiser #### My Slides Have Moved! On Februrary 20, 2004, the day before FOSDEM 2004, I apparently made slides of my talks public for the first time, putting the L10n status update for that weekend up on kairo.mozdev.org for everyone to refer to. It was nice to have them up on the web both for people to look them up and for myself in case there would be a problem with my laptop and I'd not have my "master copy" available there. Also, having the contents managed in a version control system (cvs) meant that recovering from accidental changes would be easier and that I could easily sync copies between my desktop, laptop and the web. Over the years, I added all slides from any presentations I made to that site, and even those from the years before - even that "outliner" for the 2002 talk about what "chrome" was all about (which I wrote up during the presentation right before it, and which was my only slide for that talk - things were a bit different on our first FOSDEM appearance then nowadays for sure). Fast forward to today: mozdev.org isn't all that well-maintained any more, I never did put up much more than the slides there as I ended up putting all my content on my own server (and domain) anyhow, and cvs also probably isn't the state of the art any more for version control. In addition, I recently discovered how I could do decent auto-deploy of changes on my websites with git hooks on the repos that I host on my own server anyhow. So, I did a simple "git cvsimport" on a cvs checkout of my slides, and now am using the resulting git repository to host all this right on my server at slides.kairo.at. I also improved the index page from a pure list into a tabular format, of course using the common KaiRo.at color scheme and my logo, and exchanged the URLs on the slides themselves to point to the new domain. Note that I didn't do any other changes to the slides, so some of them might not be optimal in usability or design in current Firefox versions (I relied on SeaMonkey's site navigation bar a lot in the earlier slide sets, and I didn't add unprefixed versions of some CSS rules I used), but the newer ones should be as good as they can. Now all I'm missing is to find a way to do a smart redirect (or URL rewrite) from mozdev to the new domain. Oh, and I need to get to creating slide sets for my Linuxwochen 2013 presentations... ## April 15, 2013 ### Instantbird #### LaTeX support brings prettier math to your messages With our new add-on, any mathematics contained in your conversations will be beautifully rendered using MathJax. It’s rather nice to be able to discuss math using familiar LaTeX markup, but with the equations displayed properly. And of course, as LaTeX is text-based, this works for all protocols, and does not depend on your conversation partners also using Instantbird! No configuration is necessary — to use this, you don’t even need to have TeX installed. You can easily obtain the LaTeX source of any equation using the context menu. AMSmath symbols and environments (such as \begin{align}…\end{align}) are supported. There are a few customization options — for example, you can choose to have displayed equations numbered automatically, to make them easier to refer to. The add-on works with all Instantbird message styles, so you don’t have to change your favourite theme. Get the add-on here! ## April 11, 2013 ### Rumbling Edge - Thunderbird #### 2013-04-10 Calendar builds Common (excluding Website bugs)-specific: (1) • Fixed: 852496 – The image for the delete button in the Event/Task Edit Dialog is messed up. Sunbird will no longer be actively developed by the Calendar team. Official Windows (2013-04-03 build) #### 2013-04-10 Thunderbird comm-central builds Thunderbird-specific: (27) • Fixed: 283425 – Add prefs UI for option to disable (don’t show) the new-message tray icon • Fixed: 325777 – “Search messages” window has mislabeled button – “File” should be “Move” • Fixed: 431439 – Add about:crashes button in prefs • Fixed: 465731 – Don’t include toolbar.css in application chrome • Fixed: 507622 – remove some usage of obsolete dialogOverlay.xul in mailnews/ • Fixed: 519252 – consider builder newsgroup link in a safer way • Fixed: 599036 – Feeds that should open in a new window opens in a new tab. • Fixed: 660211 – There is no way to save a custom message list column layout (as standard for new folders) nor apply columns to virtual folders or newsgroups • Fixed: 781466 – Shortcut keys used to assign tags are not consistent with those shown in the Menu. • Fixed: 804091 – IMAP account option “Synchronize the most recent” not saving correctly • Fixed: 817329 – “this addon could not be installed because it appears to be corrupt” is quite invisible • Fixed: 817468 – color of attachment bar with wide view layout different from other layouts • Fixed: 824150 – Code cleanup in /mail/ and /mailnews/: Use new String methods like startsWith, endsWith, contains, remaining Services.jsm switches and querySelector use instead of NodeList calls • Fixed: 824778 – Add bottom border to tab toolbar • Fixed: 841996 – Permanent orange: TEST-UNEXPECTED-FAIL | test-plugin-crashing.js | test-plugin-crashing.js::test_crashed_plugin_notification_bar / test_crashed_plugin_notification_inline • Fixed: 844599 – Implement Bug 842913 on comm-central (Rename winstripe->windows, pinstripe->osx, gnomestripe->linux) • Fixed: 845509 – Checkmarks not shown on AppMenu menuitems • Fixed: 845807 – Blue link text should be lighter by default. • Fixed: 852461 – Remove growl support from comm-central • Fixed: 852690 – Remaining conversion to mailServices.js in /mail/ and /mailnews/ • Fixed: 853135 – The Attachments menu belongs under the Message menu (port seamonkey bug 352696) • Fixed: 853309 – Fix typo in comments and logs: |recieve| -> |receive| • Fixed: 853926 – Grain texture is too light on Linux. • Fixed: 855135 – Change link and signature colors in themes from hard-coded definitions to follow preferences • Fixed: 856350 – new tag dialog stopped working • Fixed: 857049 – Port Twitter API v1.1 from Instantbird to c-c • Fixed: 857575 – Various UI complaints about the threadpane’s header. MailNews Core-specific: (21) • Fixed: 117878 – [meta] evaluate mailnews code for buffer overruns. • Fixed: 326809 – modernize nsIMsgHeaderParser – |string| and |wstring| vs AString and AUTF8String • Fixed: 448624 – Remove imap specific “Empty trash” confirmation dialog. • Fixed: 465351 – Wrong message and reason reported with untrusted CA roots when signing email • Fixed: 480843 – Implement memory reporter for mailnews • Fixed: 514134 – usage of sprintf in Address book code • Fixed: 544621 – Use or remove ‘#ifdef HAVE_PORT’ code • Fixed: 688135 – crash [@ nsMsgDBFolder::CallFilterPlugins(nsIMsgWindow*, int*)] • Fixed: 737519 – attachment1_body of nsProxySendRunnable will not be non-null terminated string. • Fixed: 831993 – convert nsISupportsArray m_serversToGetNewMailFor variable from nsPop3IncomingServer.cpp to something better • Fixed: 833399 – crash in nsImapOfflineTxn::UndoTransaction • Fixed: 837643 – crash in nsMsgDatabase::ClearHdrCache • Fixed: 838805 – remove some small occurrences of nsISupportsArray in mailnews • Fixed: 847172 – sort entries in the “Trust junk mail headers set by” menulist • Fixed: 848477 – Extensions are not allowed to use custom folders for mail storage • Fixed: 851899 – fix some compiler warnings in mailnews/imap/src/nsImap*.cpp • Fixed: 854162 – Should use nsImapMailFolder::HasMsgOffline() instead of checking for nsMsgMessageFlag::Offline in nsAutoSyncState.cpp • Fixed: 855573 – Missing file(s): bin/components/layout_forms.xpt • Fixed: 855631 – Get New Messages for all accounts does not work • Fixed: 856478 – remove nsISupportsArray from mailnews/extensions/mailviews/src/nsMsgMailViewList.cpp • Fixed: 857647 – Don’t show balloon notification on new mail if tray icon is disabled Official Windows, Official Windows installer (2013-04-03 build) ## April 10, 2013 ### Joshua Cranmer #### TBPL When running final tests for my latest patch queue, I discovered that someone has apparently added a new color to the repertoire: a hot pink. So I now present to you a snapshot of TBPL that uses all the colors except gray (running), gray (pending), and black (I've never seen this one): ## April 07, 2013 ### Joshua Cranmer #### JSMime status update This post is admittedly long overdue, but I kept wanting to delay this post until I actually had patches up for review. But I have the tendency to want to post nothing until I verify that the entire pipeline consisting of over 5,000 lines of changes is fully correct and documented. However, I'm now confident in all but roughly three of my major changes, so patch documentation and redistribution is (hopefully) all that remains before I start saturating all of the reviewers in Thunderbird with this code. An ironic thing to note is that these changes are actually largely a sidetrack from my original goal: I wanted to land my charset-conversion patch, but I first thought it would be helpful to test with nsIMimeConverter using the new method, which required me to implement header parsing, which is best tested with nsIMsgHeaderParser, which turns out to have needed very major changes. As you might have gathered, I am getting ready to land a major set of changes. This set of changes is being tracked in bugs 790855, 842632, and 858337. These patches are implementing structured header parsing and emission, as well as RFC 2047 decoding and encoding. My goal still remains to land all of these changes by Thunderbird 24, reviewers permitting. The first part of JSMime landed back in Thunderbird 21, so anyone using the betas is already using part of it. One of the small auxiliary interfaces (nsIMimeHeaders) was switched over to the JS implementation instead of libmime's implementation, as well as the ad-hoc ones used in our test suites. The currently pending changes would use JSMime for the other auxiliary interfaces, nsIMimeConverter (which does RFC 2047 processing) and nsIMsgHeaderParser (which does structured processing of the addressing headers). The changes to the latter are very much API-breaking, requiring me to audit and fix every single callsite in all of comm-central. On the plus side, thanks to my changes, I know I will incidentally be fixing several bugs such as quoting issues in the compose windows, a valgrind error in nsSmtpProtocol.cpp, or the space-in-2047-encoded-words issue. It's not all the changes, although being able to outright remove 2000 lines of libmime is certainly a welcome change. The brunt of libmime remains the code that is related to the processing of email body parts into the final email display method, which is the next target of my patches and which I originally intended to fix before I got sidetracked. Getting sidetracked isn't altogether a bad thing, since, for the first time, it lets me identify things that can be done in parallel with this work. A useful change I've identified that is even more invasive than everything else to date would be to alter our view of how message headers work. Right now, we tend to retrieve headers (from, say, nsIMsgDBHdr) as strings, where the consumer will use a standard API to reparse them before acting on their contents. A saner solution is to move the structured parsing into the retrieval APIs, by making an msgIStructuredHeaders interface, retrievable from nsIMsgDBHdr and nsIMsgCompFields from which you can manipulate headers in their structured form instead of their string from. It's even more useful on nsIMsgCompFields, where keeping things in structured form as long as possible is desirable (I particularly want to kill nsIMsgCompFields.splitRecipients as an API). Another useful change is that our underlying parsing code can properly handle groups, which means we can start using groups to handle mailing lists in our code instead of…the mess we have now. The current implementation sticks mailing lists as individual addresses to be expanded by code in the middle of the compose sequence, which is fragile and suboptimal. The last useful independent change I can think of is rewriting the addressing widget in the compose frontend to store things internally in a structured form instead of the MIME header kludge it currently uses; this kind of work could also be shared with the similar annoying mailing list editing UI. As for myself, I will be working on the body part conversion process. I haven't yet finalized the API that extensions will get to use here, as I need to do a lot of playing around with the current implementation to see how flexible it is. The last two entry points into libmime, the stream converter and Gloda, will first be controlled by preference, so that I can land partially-working versions before I land everything that is necessary. My goal is to land a functionality-complete implementation by Thunderbird 31 (i.e., the next ESR branch after 24), so that I can remove the old implementation in Thunderbird 32, but that timescale may still be too aggressive. ## April 03, 2013 ### Robert Kaiser #### 15, 14, 13, 8, 7, 2 years ago, and the future? My Web Story It all started on March 31, 1998. Just a few days off from 15 years ago. Netscape open-sourced the code to its "Communicator" Internet suite, using its own long-standing internal code name as a label for that project: Mozilla. I always liked the sub-line of a lot of the marketing material for this time - under the Mozilla star/lizard logo and a huge-font "hack", the material said "This technology could fall into the right hands". And so it did, even if that took time. You can learn a lot about that time by watching the Code Rush movie, which is available under a Creative Commons license nowadays. And our "Chief Lizard Wrangler" and project leader Mitchell Baker also summarized a lot of the following history of Mozilla in a talk that was recorded a couple of years ago. Just about a year later, in May 1999, so 14 years ago, I filed my first bug after I had downloaded one of the early experimental builds of the Mozilla suite, building on the brand-new Gecko rendering engine. This one and most I filed back then were rendering issues with that new engine, mostly with my pretty new and primitive first personal homepage I had set up on my university account. After some experiments with CSS-based theming of the Mozilla suite, I did some playing around with exchanging strings in the UI and translating them to German, just to see how this new "XUL" stuff worked. This ended up in my first contribution contact and me providing a first completely German-language build on January 1, 2000. A few months after that, in May, I submitted my first patch to the Mozilla project, which was a website change, actually. But only weeks later, I created a bug and patch against the actual Mozilla code - in June of 2000, 13 years ago. And it would by far not be the last one, even though my contributions the that code were small for years, a fix for a UI file here, a build fix for L10n stuff there. My main contributions stayed in doing the German localization for the suite and in general L10n-related issues. Even when Firefox came along in 2004, I helped that 1.0 release with some localization-related issues, esp. around localized snippets for its Google-based and -hosted start page - and stayed with L10n for the full suite otherwise (while Kadir would do the German Firefox L10n). I wrote a post in 2007 about how I stumbled into my Mozilla career. As Firefox became rapidly successful and took an increasingly large standing in the project and community, I stuck with the suite as I liked a more integrated experience of email and browser - and I liked the richer feature set that the suite had to offer (Firefox did cut out a lot of functionality in the beginning to be able to found its new, leaner and more consumer-friendly UI). When in March of 2005, it became clear that the suite was going into strict maintenance mode and be abandoned by the "official" Mozilla project, I joined the team that took over maintenance and development of that suite - once again using a long-standing internal code name for that: SeaMonkey. In all that project-forming process 8 years ago, I took over a lot of the organizational roles, so that the coders in our group could focus at the actual code, and eventually was credited as "project coordinator" within the project management group we call the "SeaMonkey Council". When I founded my own business 7 years ago, in January of 2006, I was earning money in surprising ways, and trying to lead the SeaMonkey project into the future. We were just about to release SeaMonkey 1.0 and convince the first round of naysayers that we actually could have the suite running as a community project. In the next years, we did quite some interesting and good work on that software, and a lot of people were finally realizing that "we made it" when we could release a 2.0 version that was based on the same "new" toolkit that Firefox and Thunderbird were built upon, removing a lot of old, cruft code and replacing it with newer stuff, including the now common-place add-ons system and automated updates among a ton of other things. I would end up doing a number of the major porting jobs from Firefox to SeaMonkey, including the places-based history and bookmarks systems, the download manager (including a UI that was similar to the earlier suite style), and the OpenSearch system. With the Data Manager, I even contributed a completely new and (IMHO) pretty innovative component into SeaMonkey. In those times, I think I did more coding work (in JS, mostly) than ever before, perhaps with the exception of the PHP-based CBSM community and content management platform I had done before that. The longer I was in the SeaMonkey project, the more I realized, though, that the innovation I would like to have seen around the suite wasn't really happening - all the innovation to the suite came from porting Firefox and Thunderbird features and/or code, and that often with significant delay. Not sure if anything other than the Data Manager actually was a genuine SeaMonkey innovation, and I only came up with that when trying to finally get some innovation going, back in 2010. I was more and more unsatisfied with the lack of progress and innovation and the incredible push-back we got on the mailing list on every try to actually do something new. In October of 2010, I took a flight to Mountain View, California, to meet up with Mitchell Baker and talk about the future of SeaMonkey - and I also mentioned how I wanted to be more on the front of innovation even though I seem to not manage to get the SeaMonkey community there. Not sure if it came out of this or was in the back of her head before, in one of those conversations I had with her, she asked me if I would like to work for Mozilla and Firefox. I said that this caught me by surprise but we should definitely keep that conversation going. Just after that I met then-Mozilla-CEO John Lilly, and he asked if Mitchell had offered me a job - just to make sure. As you can imagine, that got me thinking a lot more about that, and gave me the freedom to think outside SeaMonkey for my future. I was at the liberty to think about my personal priorities in more depth, and it became clear that the winds of change were clearly blowing through my life. After some conversations with people at Mozilla, I decided I wanted to try a job there, and Chris Hofmann proposed my working on tracking crashes and stability, so I started contracting for Mozilla on the CrashKill team in February 2011, first half-time, finally full-time. So, 2 years ago, I opened a completely new chapter in my personal web story. Tracking crash statistics for our products - Firefox desktop, Firefox from Android, and now Firefox OS - and working with our employees and community to improve stability has turned out to be a more interesting job than I expected when I started. Knowing that my work actually helps thousands or even millions of people, who have a more stable Firefox because of what I do, is a quite high award. And I'm growing into a more managerial role, which is something I really appreciate. And I'm connected to all kinds of innovation going on at Mozilla: A lot of the new features landing (like new JIT compilers for JavaScript, WebRTC, etc.) need stability testing and we're tracking the crash reports from those, Firefox for Android needed a lot of stability work to become the best mobile browser out there - and with Firefox OS, I was even involved in how the crash reporting features and user experience flow were implemented. I'm also involved in a lot of strategic meetings on what we release and when - an interesting experience by itself. Where this all will lead me in the future? No idea. I'm interested in moving to the USA and working there at least for some time - not just because it would make my day cycle sane and having most or all my meetings within the confines of the actual work days in the region I'm living in, but also because I learned to like a lot that country has to offer, from Country Music to Football and many other things (not to mention Louisiana-style Cajun cuisine). I'm also interested in working from an office with other Mozillians for a change, and in possibly becoming even more of a manager. Of course, I'd like to help moving the Mozilla mission forward where I can, openness, innovation and opportunities on the web are something I stand behind nowadays more than ever - and Firefox OS as well as associated technologies promise to really make a huge impact on the web of the future. I'm looking forward to quite exciting times! ## April 02, 2013 ### Mike Conley #### Downloading Stuff in Firefox – It’s Better Now If you’ve ever downloaded anything using Firefox, you’ve probably seen this fellow: Early 2000′s baby, yeah! This new window would pop up, and you could use it to manage and monitor your downloads. There are a few problems with this new window: • You had to switch back and forth from it just to see how close your downloads were to being finished • It was easy to lose track of this window, especially when you had lots of windows open • The window listed every download you’d ever started, meaning that it got slower to render as the list got longer and longer. This is just scratching the surface. Suffice it to say that the downloads window left much to be desired. So, your friendly neighbourhood Firefox Desktop team have been working hard to make things a whole lot better. ### The Downloads Button and Panel Starting in Firefox 20 (released today!), a new button will be added to your toolbar: BEHOLD! This button serves a number of purposes. For one thing, it tells you how long it will be until all of your downloads complete: 2 minutes until all of my downloads finish. This button also animates when a download completes, and changes colour when all of your downloads are done: Downloads are done! Clicking on the button will show you your latest downloads: Well, hello there. And from here you can open your downloads easily. Not too shabby! Like most things in Firefox, the new button can be moved to wherever you’d like it. Simply right click on your toolbar, and choose “Customize”, and drag the buttonto someplace new. Or, if you don’t want the button, you can drag it into the customize window to remove it completely (although, clearly you won’t be notified of downloads progress this way). ### Manage your downloads in the Library The downloads panel is a lightweight way to check the progress of your downloads. This is all well and good, but it doesn’t give us nearly the same power of the old downloads window. That’s why we have moved the functionality from the old downloads window into a new view in the Library. Getting a fresh copy of Ubuntu 12.10. The new manager has similar functionality to the old one, so you can search your downloads, clear them and even leave this window open while closing any other browser windows to complete downloads in the background. Since this unifies the concept of downloads and history, there is no more risk of clearing downloads for privacy reasons, only to find that your history had retained them! You’ll also notice that with the new per-window Private Browsing feature, downloads are managed separately by each window – the downloads manager opens in a tab so that you can easily manage your private downloads. Just some wholesome browsing going on here. This way, we make absolutely sure that your private downloads do not show up in your history, while still giving you full control over those downloads. Engagement ring PDFs for everybody! ### Some tips and tricks There are some neat shortcuts from the old manager that some of you may have used. We tried to retain those and even make them better. • Pasting a url into the panel or the Library downloads view with CTRL-v will start a new download • You can drag downloads from the panel or the Library to the desktop or any other path • Related to this, you can download a PDF, and then drag it to the browser window to preview it using our built-in PDF viewer! • You can drag a link to the downloads button to start a new download • CTRL+j opens the Library directly in the Downloads section ### Help us make it even better If you find a bug in the new downloads experience, or you have enhancement requests for it, please file a bug in the Firefox / Downloads Panel component. You can also discuss the feature or your improvements ideas in the new firefox-dev mailing list. On behalf of the team that helped make this thing happen (and folks, it’s been a long time coming), we hope you enjoy your new downloads experience in Firefox 20! ## March 24, 2013 ### Rumbling Edge - Thunderbird #### 2013-03-24 Calendar builds Common (excluding Website bugs)-specific: (16) • Fixed: 349529 – Investigate in-view task UI of tasks with missing date or due date • Fixed: 489162 – No accept/ decline button for invitations with GCal • Fixed: 687412 – “Save Event” dialog pops up when closing an unmodified event • Fixed: 707966 – METHOD=CANCEL shows as processed event, but cannot be opened • Fixed: 732393 – Cannot edit or delete task in cached CalDAV calendar [Error: this.mItemInfoCache[aNewItem.id] is undefined] • Fixed: 733822 – Update internal timezone database from version 2011n to version 2013a • Fixed: 757762 – [Linux] alarms too late / internal time wrong after resuming from sleep / suspend / hibernation mode • Fixed: 815815 – Minimonth bold days get reloaded (again) if clicked on day, using ‘Next’ and ‘Prev’ in day view does not • Fixed: 827279 – Show Accept/Decline buttons even for processed messages in imip bar • Fixed: 833720 – ICS calendars cause process threads leak and high memory • Fixed: 840913 – Remove use of nsISupportsArray in Calendar’s treeview implementation [Error: TypeError: aProps is undefined] • Fixed: 848138 – Tooltips for tasks show Priority item as “Medium” instead of “Normal” • Fixed: 848424 – Show EXDATE and modified occurrences in email invitation template • Fixed: 849026 – Task view: task-details-container appears with no task selected • Fixed: 849797 – resPathComponents[endBasePos] is undefined • Fixed: 852673 – Provide source code package for Lightning 1.9.1 Sunbird will no longer be actively developed by the Calendar team. #### 2013-03-24 Thunderbird comm-central builds Thunderbird-specific: (24) • Fixed: 263736 – Group by sort feature with sort by “Date” uses “Old Mail” in RSS folders and newsgroup • Fixed: 459474 – Cannot open some PDF attachments • Fixed: 533682 – Difficulty finding/getting to All Folders from Unified Folders • Fixed: 547995 – FORWARD should not allow you to forward message to sender. • Fixed: 708550 – Cannot copy version string from “About Thunderbird” dialogue window (regression) • Fixed: 765074 – Compose window shows reference count leaks on shutdown • Fixed: 781333 – Use 2x images for HiDPI Thunderbird UI • Fixed: 794575 – Tag button in header toolbar not monochrome • Fixed: 825452 – system integration dialog says ‘Skip integration’ even when launched from preferences • Fixed: 832666 – Remove on Win8 the fog on tabbar • Fixed: 833028 – Subjects with mixed ASCII and MIME words are incorrectly displayed • Fixed: 840954 – Add mozbase to the list of packaged directories for Thunderbird’s tests • Fixed: 842920 – Thunderbird Windows builds are broken due to regression in disable-webRTC • Fixed: 844175 – Twitter stays on Connecting: Requesting user timelines… • Fixed: 844373 – clean up _flagNameList iterating in mail/base/content/folderPane.js • Fixed: 844432 – Give Edit buttons a hover state • Fixed: 844463 – packaging after build fails, if configure with –disable-updater • Fixed: 845819 – Overlay grain.png on the Folder Pane • Fixed: 846706 – Username is confusing in the context of creating an IRC account. • Fixed: 847187 – Permaorange: TEST-UNEXPECTED-FAIL | /home/cltbld/talos-slave/test/build/xpcshell/tests/dom/mobilemessage/tests/test_smsservice_createsmsmessage.js | test failed (with xpcshell return code: 3) • Fixed: 848292 – Icons for special IMAP folder (Inbox, trash, …) are not shown when folder is shared • Fixed: 849215 – Overlay grain.png on the Chat Pane. • Fixed: 851117 – Repack comm-aurora using in-tree mozconfigs, objdirs, and pre-built mar tools • Fixed: 852252 – Daily: latest update : no mail folders visible MailNews Core-specific: (23) • Fixed: 454932 – assertion in nsVoidArray::FastElementAt() trying to find a connection in the cache • Fixed: 514136 – Increase the size of the char array for imap command tag • Fixed: 524662 – Customize Headers window is prompted twice (Creating/adding customized filter header or removing it requires to click ‘OK’ twice) • Fixed: 542995 – clean up VC4.x support defines • Fixed: 616229 – crash [@ nsMsgXFGroupThread::SetMsgHdrAt(unsigned int, nsIMsgDBHdr*)] • Fixed: 648980 – Add build system hooks for allowing applications to provide their own configure options and autoconf variables • Fixed: 655428 – “Reply with Template” Filter replies to From field, not Reply-To field • Fixed: 681219 – make method name of nsISmtpService decent • Fixed: 809990 – Don’t set the offline folder flag for SPAM and TRASH folders • Fixed: 818607 – Memory leak when Message Compose Window is opened • Fixed: 825449 – Filter editor: Accesskey for ‘Perform these actions’ should set/move focus to first action item (at the moment invisible/not shown) • Fixed: 829208 – External API build busted after bug 807678 • Fixed: 831485 – _virtualenv and mozilla/_virtualenv in each c-c objdir • Fixed: 834612 – building Mozilla fails because of NS_ENSURE_SUCCESS in mailnews/import/oexpress/nsOEScanBoxes.cpp • Fixed: 834757 – Remove [noscript] methods from nsIMimeConverter • Fixed: 840230 – replace nsISupportsArray variable mailnews/base/src/nsMessenger*Integration.*::mFoldersWithNewMail • Fixed: 845089 – Thunderbird build config changes in a moz.build world • Fixed: 846694 – “Trust junk mail headers set by” dropdown shows only a number 5 • Fixed: 846983 – Linux bustage on package-manifest:114: Missing file(s): bin/components/dom_sms.xpt • Fixed: 849612 – Fix build problems caused by Bug 847195 [error: nsIDOMNamedNodeMap.h: No such file or directory] • Fixed: 850088 – TEST-UNEXPECTED-FAIL | check-sync-dirs.py | build file copies are not in sync • Fixed: 850389 – Move XPIDL variables to moz.build files • Fixed: 850466 – do some trivial optimisations in mailnews/base/utils/folderUtils.jsm ### Robert Kaiser #### MaKey MaKey Experiments I think I probably became aware of the MaKey MaKey when Chris Heilmann blogged about it, but I might have heard about it even before. I surely saw it when Chris had his WebRTC photo booth running with it at MozFest 2012 in London. When I ran across it again on ThinkGeek, I put it on my wish list - and finally ordered one this month. Now, after I had wrapped up this week of work, I finally found some time to play with it, and an interesting and very geeky Friday night ensued. Here's a bit more about that - and about Saturday, and further plans/ideas. So, for one thing, I wanted to use this device with actual Open Web stuff, and not with Flash or other proprietary software. After all, this is Open Hardware (yay!) and I'm entirely entrenched in Open Source / Free Software, from using Linux on desktop, laptop and server, via working for Mozilla/Firefox, to doing some web apps under the MPL2 license in my free time. So, given the latter, I decided it would be nice if I could navigate the OSM world with my Lantea Maps app/site (source) using the MaKey Makey. For that, I had to put some keyboard accessibility into Lantea Maps itself, which is a good idea for accessibility, among other things, anyhow. So I did that, looking at Chris' testy-testy and MDN to find out how to achieve that best. I ended up implementing methods to move the map with the arrow keys, hooked up zoom in/out to +/- keys as well as w/s (the latter are supported by MaKey MaKey out of the box), and then also created direct shortcuts to certain zoom levels with the 0-9 numeric keys (not supported by MaKey Makey, but convenient for keyboard users). OK, then it was time to actually bring in the MaKey MaKey. I really want to do some fruit stuff at some point, but I only had a few apples around, and I thought it actually would be nice to create some kind of navigation pad that can be used with Lantea Maps at full screen when having an OpenStreetMap booth at Linuxwochen in Vienna. I figured that with some cardboard from the back of an old note pad, and some tinfoil, that should be doable. I added some plastic wrap for insulation, glue of course, and some paper clips so the crocodile clips to connect to the MaKey MaKey wouldn't scratch the tinfoil too much (as well as some temporary applied ones to hold things together while allowing the glue to dry). Here's some photos from production: Note that the back side as well as the right rim of the pad is covered with a single sheet of tinfoil that makes the earth connection quite naturally when you hold the pad in your hands. As of the last photo, while the glue was still drying, it was ready to use for some map navigation (and after the night, I removed the temporary paper clips and took another "promotional" picture): Even while getting to bed that evening, the ideas for my next project were flying around in my mind already. On one hand, I saw that MaKey MaKey had connectors for mouse up/down/left/right, on the other hand, ever since trying the original BananaBread demo as someone who's usually not doing any first person shooter games, I wondered if there was a nicer or more obvious way to operate this, rather than using w/a/s/d keys for movement, space/click for jump/fire, and mouse for turning. Well, now that I had done this first custom pad for MaKey MaKey, would there be a handy solution for that as well? In any case, it would be fun. So I took a smaller piece of cardboard that would make this thing fit nicely into my hands (just like those professional game pads), and decided this time I would try something slightly different by using coins as the actual "buttons" on the pad. One-cent coins looked like the right size, and I had a 10-pin cable around from a different project, which would fit for the 10 "keys" pretty well (just that I needed one more for earthing, which I again did with a sheet of tinfoil at the back of the pad, so I added yet another single cable in the end). Also, this time I used some double-sided tape instead of glue for many cases, as that works better with the cable and coins: And then I was ready to play some BananaBread, now with both the awesomeness of running a 3D first person shooter seamlessly in the browser AND using a special game pad for playing! If you're interested, not only are those pictures all linked to the gallery where you can go up to "big" versions of those, there's a few more steps of building visible in this photo gallery. Given all that and the fact that Linuxwochen Wien in the first days of May has an additional focus on Open Hardware this year, I decided to hand in a proposal for a talk on MaKey MaKey there. I intend to show off those pads as well as Chris' photo booth and any other MaKey MaKey experiments that I can fit, preferably ones that run as web pages/apps (let me know if there are any nice ones). I'm thinking that it could be nice to have an app that shows you on screen in a web site which kind of fruit/item you touched (configurable with key <-> item entries), and I'd love a web (not Flash) piano and/or drumset (using ogg or even opus files with HTML5 audio!) app to present, maybe I can hack something up if there's nothing around. If this has caught your interest, it's easy to get your own MaKey MaKey, and if you're in or around Vienna in the first days of May, I'd be happy to meet you at my talk (there will be a Firefox OS App workshop as well, probably!) - oh, and if you have any nice, open web apps/pages that show off this device, let me know! ## March 20, 2013 ### Meeting Notes #### Thunderbird: 2013-03-19 Thunderbird Meeting Details : Remember to use headphones and mute yourself when not talking Feel free to ask questions in the meeting either by speaking up or by asking them in #maildev on IRC. Other ways to get in touch with us can be found on our communications page ### Meeting Changes ### Critical Issues • Folks, do some reviews if you can. Also, try to help de-orange our tree. ### Action Items From last Week • Standard8: Document flags to tb-planning • Standard8: Follow up with metric numbers being public • This should be happening soon, work has been done, waiting for final approvals • Look into having the notes blogged • We need to get the meeting notes blog to pick up the pages again. • Move http.jsm into toolkit? Maybe? clokep will talk to Mossop about that. • Mossop has been sick – clokep will be more aggressive this week. ### Friends of the Tree Thanks to our Friend of the Tree. When adding someone to this section, please get their T-Shirt size, phone number (needed for shipping!) and send it to abourcier@mozilla.com that she can send them a shirt! ### Google Summer of Code • Please go here and make sure your project ideas are listed • We’re going to be submitting our ideas to Gerv and Florian this Friday, so make sure your ideas are polished and they have a mentor. ### Status Updates mconley • Ensemble • In contact with a small firm in Slovakia that might be interested in hiring a contractor to help me on this • Successfully decoupled nsMsgSearchTerm from nsIAbManager using my new service • This should be ready for review soon (see bug 841603, and then I’ll work on decoupling other bits • A bit worried about the performance impact of frequently calling out to JS components from C++… • Haven’t had too much time for reviews lately. :( This might get worse, as Firefox Australis work is really starting to heat up. • Profiler has been updated to give us symbols! Get an updated version of the Profiler here: https://github.com/bgirard/Gecko-Profiler-Addon/blob/master/geckoprofiler.xpi?raw=true jcranmer • Guess who won’t be on the call? Not me for once! • Should have more time over next few weeks to do stuff including reviews • cc-rework • Higher priority due to fallout from moz.build changes • Elimination of comm-central/configure.in works on Linux, doesn’t on OS X due to LDAP, untested on Windows (see bug 846540) • jsmime • Landed bug 834757 (fix up nsIMimeConverter for JS implementation) • Working implementation of nsIMsgHeaderParser locally, not published anywhere • Hoping to get both parts into Thunderbird 24 (will fix almost all RFC 2047 problems!) wsmwk • patchlove • reviewing existing patchlove bugs and finding more old bugs with patches to add to patchlove • having good results in closing obsolete bugs and getting old patches landed • bug 816327 – gmail folders redownloading – data collecting seems to be bearing fruit clokep • Sent Mossop an email, didn’t receive a response and pinged him on IRC last week: • Mossop was sick and should respond “soon”. • Will follow up more aggressively again this week • http.jsm will need another change (found while updating to the Twitter v1.1 API): https://bugzilla.instantbird.org/show_bug.cgi?id=1890 • Twitter v1 API could potentially be shut off as of March 5th, they’re doing “blackout” tests now. Patch to upgrade is waiting for review. Standard8 • Mainly working on tree bustages, and working with Jcranmer on sorting out the build system so that we can hopefully avoid more bustages as the build system reorgs itself. • Trying to catch up on reviews soon, but tree bustages and releases taking priority. ### Action Items • jcranmer: Ping bienvenu about WIP maildir converter for GSoC (by Friday) • Ask Roland: is there a way we can give people SUMO permissions for article editing without having to bug you about it? ### Attendees Usul, satdav, jcranmer, florian, wsmwk, Standard8 ## March 07, 2013 ### David Ascher #### Personal computing in a decentralized world: a hopeful direction I’ve been having a really stimulating few weeks, which is making me feel oddly optimistic, so I figured I’d spread the cheer. It’s been somewhat quieter than usual in my little corner of Mozilla, as many of my colleagues were busy preparing for on our big announcements and demos at Mobile World Congress. This lull has allowed me to spend more time indulging in longer term thinking. In that thinking period, I’ve had the privilege and distinct pleasure of spending a few hours of quality videochat with none other than Ward Cunningham, inventor extraordinaire. We’ve been talking a lot about his new baby, which he calls Federated Wiki (the name is misleading I think, but as with many new ideas, awkward names are better than long descriptions. The shortest analogy I can come up with is a space for personal writing that borrows the forking attitude from github, within a smalltalk-like conceptual model. — Confused yet?). Regardless of the name, it’s both refreshing and stimulating to talk to someone like Ward about topics we both see as important and interesting, with a shared commitment to improve the status quo. If you’re intellectually curious, willing to do some mental backflips and deal with fairly raw and unconventional ideas, I encourage you to watch the videos and play around with federated wiki. It’s a worthwhile exploration. One of the surprising ways in which that exploration is changing my brain is that I’m finally starting to care about hardware. Until recently, I’ve been quite uninterested in hardware talk, both of the standard computer geek variety, as well as the internet-of-things variety. The former has felt no different to me than talking about fashion, and the latter always struck me as an industrial problem, not a human one. It’s made sense to me that companies like GE were keen on the Internet of Things — i just didn’t really care, and the odds of billions of networked computers being a net win for the world seemed pretty slim — I’ll admit to a bit of an head-in-the-sand reaction there. What’s changed my thinking (and let me to acquire handfuls of raspberry pis and pcDuinos for the office) is a growing belief that the economics of hardware manufacturing, the maturation of the open source stack and standards, and the mainstream adoption of “the cloud” are, in concert, going to provide interesting opportunities for networked computation “by the people for the people”. ### The default path It’s fairly easy to see that the big players in computing (Apple, Google, et al) are deepening their stack and broadening their scope — from software or services to software and services to hardware to phones to tablets to TVs and other consumer devices, to cars, eyewear, physical networks, wireless carriers. The path ahead for them is clear. And I’d say that the consumer experiences that will follow promise to be stunning. But if nothing is done about it, it’s also clear that this will happen through market concentration. That concentration of power, economic influence and wealth is particularly problematic because it also implies a concentration in modes of thought, in cultural outlooks, in possible futures. As I’ve written before, I think the world would be poorer if that happened. All conventional indicators (especially those concerned with things like “eyeballs”) are in that direction, of course — large amounts of money make it possible to make shiny attractive things, as well as to identify attention-grabbing things in a sea of uneven quality. Popular culture naturally gravitates towards superstars, be they pop stars, or youtube clips. We seem to be wired as people, societies, and markets to head that way. ### Another architecture, and the economics that can power it And yet I mentioned above that I was optimistic. That’s because while there are natural economic incentives for markets to create large companies, and for those large companies to concentrate attention on a few things which are safe, non-threatening, and profitable, the centralization forces are not the only ones at play, and not everything behaves in market-expected ways. Clay Shirky has written and talked about this eloquently — sometimes we don’t need to do what economists tells us we should want to do. You can now buy35 full-featured computers which, within seconds of being plugged in, are fully capable internet nodes.  Within years at most the price will keep dropping and the capabilities will keep expanding. In addition, the open source software stack which powers them is the same which millions of web developers already know, and hopefully soon millions of amateurs as well.  In other words, the means of production  are being commoditized and democratized, and the network is ready to serve as a coordination layer for these devices.  I am not predicting a utopian world of DIY hardware running bespoke software written by each user.  Instead, I want to point out that the entire value chain for using the internet to do new things (from hardware to services) is now ripe for new, good ideas, even coming from single brains. The substrate for deeply personal web experiences is here.  I should also acknowledge Allen Wirfs-Brock’s recent writings on the need for a bigger picture plan here as helping me to process the need to actively shape the architecture of the connected things around us.

Much has been written about the impact of Big Data for business, but internet-available Personal Data could be just as transformative for individuals and small groups. I’d wager that a Raspberry Pi and a cheap drive can store all of the words I will write and read in a lifetime, do meaningful computation on that corpus, and be available to all of my internet-connected devices. That feels significant. When people routinely have that kind of agency over their stuff, and if their digital agents are well coordinated through a well-decentralized network, it’s easy to imagine just as futuristic and impactful but less commercially driven outcomes.

When compelling experiences that work thanks to a decentralized architecture emerge, I’m confident that many kinds of business models will follow, including consumer devices, services, and others. Some of those devices will run FirefoxOS.  All will have the web stack built-in. As important, these things (or virtual things) will be cheap enough that cost and profitability won’t be the primary consideration. Instead, you’ll think about what you, your family, your neighborhood, your community need.  I could easily subsidize a fairly powerful computing service for all the children in my kids’ school.  Larger foundations could subsidize the same on the scale of countries.  Combining Shirky’s cognitive surplus and insanely cheap delivery systems means we can be freer from the stranglehold of short term economic thinking.  Bring in network-enabled funding models like Kickstarter, and we can keep baffling economists and conventional investors for a long while.

### The Product Challenge

The conundrum, then, is to find those compelling experiences which thrive on a decentralized architecture, and not just try to force decentralization on experiences which work well in a centralized model.  As a “product person”, I’ll admit that it’s not easy to  wean oneself from the dominant world view, which favors neatly bounded and hard, polished exteriors (metaphorical and otherwise), where control is critical to quality, and where complexity is managed through barriers.  That’s why I’m so impressed with Ward’s thinking — he’s been starting with a decentralized architecture, and seeking to identify and facilitate outcomes that are easier, more natural in that world.  We need more such thinking.

When I start thinking that way, my mind wanders towards deeply personal systems and deeply meaningful relationships.  Private diaries.  Family-centric stuff (family recipes, private calendars, snapshots, secrets).  It is worth noting that Ward has seen his ideas resonate in tightly knit communities who need deep connections over ideas and data, but who aren’t seeking mass audiences.  More generally, I suspect that this kind of architecture will naturally complement  offerings from giant players by gravitating towards parts of our psychology which the giants aren’t built to serve.  Our need for quiet; play space; safe space.  Our need for a small number of deeply meaningful relationships. As the giants define what the “mall” style of interaction with the net is, I’m (finally) optimistic that we’ll see structures emerge that mirror many other social structures, from the self to the couple, family, school, workplace, church, interest club, support group, etc.

This future feels more humane. That’s worth working on.

What computing will she need, and who will build it?

Thanks to Havi Hoffman for her editorial help.

## March 06, 2013

### Mike Conley

#### Code Spelunking – Australis Customization

Now that the Australis curvy tabs are in the polishing state, it’s time I turn my attention to the second part of Australis – the new customization experience.

Customizing Firefox’s UI has always been a little bit funky – you right click on a piece of chrome and choose Customize (or if you knew about it, go to View > Toolbars > Customize), and then a window pops up that lets you drag items to and from it. When this window is open, you are in the customizing state, so you can move buttons all over the place.

The new customization experience that the UX team has designed is quite a bit smoother. I can describe it, or, even better, I can show it to you.

Instructions:

1. Go here to see bwinton’s awesome prototype
2. Hide the main navigation bar for a more immersive experience (View > Toolbars > Navigation Toolbar)
3. Click on the menu button in the right corner, and choose “Customize”
4. WHOA
5. Now drag some items from the customize palette onto the toolbar, or into your menu.

Pretty snazzy, and it does away with that old customize window, which is excellent.

Blair McBride has been working on this feature for a little while, but due to health issues, the project has been handed to Jared Wein and myself. And I suppose when Blair is back at 100%, it’ll be all three of us hacking on it. Or something like that.

So, everything I just wrote above? That was for you, to let you know what I’m looking at during my day. Everything below the “Notes to self…” header are my notes as I browse through the customization code as it is. Just going to jot down notes and observations, etc. You might find this interesting, since it will show you my thought process as I go.

Or you might think it’s just a confused and bewildered miasma of incoherent rambling and nonsense. Well, we’ll see how it goes.

### Notes to self…

Glossary:

• Panel – the thing that opens when I click on the three-line menu toolbar button (a.k.a “the hamburger” – sorry shorlander) in the nav-bar
• Widget – what used to be considered “toolbarbuttons”. It’s a thing that can be in the panel, in the customize palette, or in a customizable toolbar
• Customize palette - what used to be a new window is now an in-content selection of widgets you can chuck into the panel or customizable toolbars

So I know we’ve got ourselves a panel, and there’s a whole bunch of customization logic. There was also this API thing that Blair was working on so that add-ons could specify widgets through their chrome.manifests. And there also appears to be some work to be somewhat backwards compatible with the ol’ overlay approach to adding widgets.

The big mama seems to be browser/modules/CustomizableUI.jsm. This module seems to be responsible for a ton of stuff, including (but not limited to):

• Panel open / closed state
• Panel populating
• Menu button pressed / unpressed state
• Persisting and restoring customization settings
• Catching “I dun get it” notifications from the chrome.manifest parser to see if it’s a widget that’s in there
• Reading JARs or uncompressed files from the manifest to create widgets
• Being the central hub of knowledge about where widgets are, and firing notifications when widgets are added, removed, moved or destroyed.
• Knowing about which widgets are not being used, which lets us populate the palette tab when we enter customization mode
• Allowing us to enter and exit the customization mode
• That appears to be leftover cruft.  browser/modules/CustomizeMode.jsm seems to manage that now. I’ll remove the old cruft.

There’s this notion of “customizable areas” too. It looks like we’re constraining the customizable areas for now, and so we have an area between the URL bar and the menu button that we can drag and drop items to. The panel is also an area. When we enter customization mode…

Ok, this is pretty neat. When we enter customization mode, we suck out the panel, and drop it into a panel holder in the customization tab. That way, we can see the panel and add to it while customizing. Ok, I get that.

There was originally the idea of de-coupling the panel from the customization code. That might actually still be possible. I had tried that earlier, but was discouraged when I found out that the CustomizationUI.jsm was responsible for populating the contents of that menu panel too, meaning that the panel code itself was rather useless without the customization stuff. Maybe this needs more thought – because it would be nice to de-couple them a bit more.

Maybe I should work harder at de-coupling the menu stuff from the customization stuff – especially now that it looks like the panel is a little more complicated than just a widget drop point. Now widgets can have “subviews”, like the bookmarks widget. This means that stuff either slides out or moves over in the panel when clicking on a particular widget. Having all of that jammed up in CustomizableUI.jsm isn’t ideal – maybe I can split it out to help us separate our concerns a bit more.

Ok, I think I’ve convinced myself. I’m going to spend the rest of the afternoon trying to devise a strategy to de-couple these two.

### David Ascher

#### Simple analogies as taglines are dangerous: do better

For a non-investor, I end up hearing a lot of pitches.  I even make pitches of my own (not for companies, but for product ideas — same basic idea).  Around Mozilla, we tend to say that things are “like the web” or “very Mozilla”.  Those are equally fuzzy analogies, which assume a shared conceptual map — a dangerous assumption. What if your audience thinks of the web as a scary, confusing, complicated place? or have a Mozilla concept that is anchored by a dinosaur?

In the startup world, a quick glance at Angel List shows how prevalent that phrase is among budding entrepreneurs.  It’s clearly both trendy and attractive to rely on other successes to explain your concept.  I’m here to warn you about what may be an attractive nuisance, but suggest a simple way to do it better.

Whenever you say something like “It’s like YouTube for _____”, or “like Pinterest but for ____,” you hope you’re concisely communicating a key part of your business or product idea but you could easily miss the mark, and not know it.  Analogies work to the extent that the analog is a concise description of a key concept, which you’re applying to a different market. The problem is that products, and especially successful products, are not that simple.  If I say “like YouTube”, my interlocutor will have a very different set of words pop into their minds depending on whether they’re an Italian judge, my kid, a devops, or a music industry executive.  The people you pitch to likely think differently than you do (after all, that’s likely why you want their attention, time, money, patches, whatever).  It’s therefore much too easy to confuse rather than elucidate.

My advice is to refrain from saying “like ____ for ___”, even though it feels nice to glow in the reflected glory from these successful precursors.

You can do better, and you should: there’s usually something in that appealing analogy which is the concept you’re trying to convey, so focus on that aspect of the inspiring product.  “It’s got the same instant gratification of Instagram, but with ___”.  “It’s as disruptive to an enterprise market as MySQL was, but targeting the  ___ market”.  By making the analogy precise, you bring your audience along where you want them, and you show that you understand one of the many reasons why these products were successful.

## March 01, 2013

### Mike Conley

#### Australis Curvy Tabs: More Progress!

I wrote a while back about how Matt, Avi Halachmi and I have been ironing out performance problems with the Australis curvy tabs.

Well, it looks like that work is finally paying off.

Our SVG usage seemed to be the big slow-poke, and switching to PNGs gave us the boost that we needed.

But enough squawking, let’s see some charts.

### Before Optimizations

Let’s compare – here’s a chart showing the difference between pre-curves and post-curves, before our optimizations:

Here’s the before shot

Note: it’s been a while since I’ve done data visualization work. I think the last time I did this was in grad school. So there might be way better ways of visualizing this data, but I just chose the easiest chart I could manage with Google Docs. Just go with it.

Let me describe what you’re seeing here – we take samples every time a tab opens, and every time a tab closes*. What we’re measuring is the interval time (how long it takes before we start drawing the next frame), and the paint time (how long it takes to actually draw a frame).

The blue bars represent the performance measurements we took on a build using the default theme.  The red bars represent the performance measurements we took using the Australis curvy tabs.

This is where my graph could probably be clearer – in each group of four bars, the left two represent interval times, and the right two represent paint times.

So, hand-wavey interpretation – we regressed in terms of performance in both painting, and frame intervals, for tab opening and closing.

So that’s what we started with. And then we did our optimizations. So where did we get to?

### After Optimizations

Here’s the after shot!

The red bars shrunk, meaning that we got faster for both interval and paint times. In fact, for tab close, we beat the old theme! And we’re really super-close for tab open.

Pretty good!

### Curvy tabs for all

Last night, Matt landed our optimization patches, as well as preliminary curvy tab work for OSX* and Linux GTK on our UX branch. So, if you’re on the UX branch (and why aren’t you?), you should be receiving a build soon with some curvy tabs. They’re not perfect, not by a long shot, but we’re getting into the polish stage now, which is good.

* Some notes on our measuring methodology. All tests were performed on a low-powered Acer Aspire One netbook. Intel Atom n450 processor (1.66Ghz), 1GB of RAM, running Windows 7. The device has no graphics acceleration support. We also switched to the classic theme to avoid glass. Avi wrote a patch that opened and closed a tab 15 times, and averaging the frame intervals and paint times for each frame. Those were averaged over the 15 openings and closings. We then ran that test 4 times, giving the machine time to “relax” in between, and averaged our results.

* We don’t have hi-dpi support yet, so if you’re on a Mac with a Retina display, your curves might be fuzzy. We’re working on it.

## February 26, 2013

### Thunderbird Design

#### Some small fixes (and a large one!) for Thunderbird’s UI…

Some small fixes (and a large one!) for Thunderbird’s UI…:

There are certainly some interesting thoughts here, and if people wanted to pick up the smaller ones, and drive them into the product, that would make me quite happy.  :)

## February 23, 2013

### Rumbling Edge - Thunderbird

#### 2013-02-22 Calendar builds

Common (excluding Website bugs)-specific: (17)

• Fixed: 410427 – Event Dialog: Allow setting recurrence “UNTIL” without custom dialog
• Fixed: 594403 – Modifying the start date of a new All day event causes the timezone link activation and a change in the timepicker of the end date
• Fixed: 619515 – Creating new event requires more clicks compared to previous releases
• Fixed: 669262 – Lightning cannot do semi-monthly entries
• Fixed: 700775 – Wrong buttons whether to send email confirmation or not
• Fixed: 797268 – The relayout of the month view is being executed twice
• Fixed: 807956 – Event window: Early end date warning locks event edit window
• Fixed: 808668 – Upgrade update.php script with new locations and re-enable automatic nightly updates by adding em:updateURL to install.rdf
• Fixed: 813476 – Enabling offline support for CalDAV calendar breaks dialogs or makes calendar disappear
• Fixed: 814799 – Invite Attendees dialog: lists do not work, only first list member is added
• Fixed: 821595 – No option to remember password for CalDAV calendar
• Fixed: 825778 – Event dialog: the Save&Close button can wrongly be in disabled status with tasks and timezone enabled
• Fixed: 827078 – Items deleted server-side still appear in cached CalDAV calendars
• Fixed: 827284 – REPLY and CANCEL messages do not forward itip item properties to the provider
• Fixed: 829962 – Lightning breaks mail toolbar delete button icon
• Fixed: 834388 – Remove use of version.nsh from Sunbird
• Fixed: 838724 – Port back the upstream patch for memory leak in libical

Sunbird will no longer be actively developed by the Calendar team.

#### 2013-02-22 Thunderbird comm-central builds

Thunderbird-specific: (15)

• Fixed: 731673 – Shift modifier for starting new message in non-default format is ignored in message menu (Plaintext vs. HTML, Shift+Click, Shift+Enter on Reply, Reply to All, Reply to List, Forward)
• Fixed: 792800 – IRC nickname addition in the address book fields for chat
• Fixed: 807848 – Account Mailbox does not appear in Folder Pane unless ‘toolkit.telemetry.prompted’ set to ‘True’
• Fixed: 811770 – Use a different wordmark and possibly other branding changes for Thunderbird 17 ESR
• Fixed: 814987 – Clicking at the top edge of screen should select the tab when Thunderbird is maximized
• Fixed: 827061 – ASSERTION: Bad position passed to nsJISx4051LineBreaker::Next: ‘aLen > aPos’, file ./mozilla/intl/lwbrk/src/nsJISx4501LineBreaker.cpp
• Fixed: 829316 – Chat icon vertical align
• Fixed: 830456 – Code cleanup in /chat/: Use new String methods like startsWith, endsWith, contains, remaining Services.jsm switches and querySelector use instead of NodeList calls
• Fixed: 832679 – AppMenu: Menu checkmarks indicating if {Folder pane} or {Message Pane} are shown or hidden work the wrong way round (Options > Layout)
• Fixed: 836921 – Remove nsIUpdateCheckListener onprogress from aboutDialog.js
• Fixed: 839046 – Temporarily disable WebRTC in Thunderbird build to work around bug 837618
• Fixed: 842008 – unable to delete saved search
• Fixed: 842024 – Thunderbird Chat can’t connect to EuIRC
• Fixed: 842183 – Port chat/ changes from Instantbird to comm-central – 5

MailNews Core-specific: (18)

• Fixed: 29593 – [autoconfig] pre-populate the users fullname in the new mail account wizard
• Fixed: 436089 – nsIMsgFolder::ListDescendents should not have an nsISupportsArray parameter
• Fixed: 472865 – umask for emails saved as a file are not respecting system umask
• Fixed: 533314 – Tests: Use foo@foo.invalid instead of foo@invalid.com
• Fixed: 581470 – Ctrl+P and Ctrl+W not working from Print Preview window
• Fixed: 747284 – Actions in msgFilterRules.dat is better sorted by INDEX value of action, in order to avoid user’s confusion
• Fixed: 747325 – ‘Error parsing template: expected <content> to be first’ when opening virtualFolderListDialog.xul
• Fixed: 833988 – Convert nsMsgCompose::BuildMailListArray nsISupportsArray argument to something better
• Fixed: 834020 – remove use of nsIEnumerator in mailnews C++ code
• Fixed: 834214 – Update LDAP c-sdk to LDAPCSDK_6_0_7F_RTM
• Fixed: 834911 – remove support of nsIEnumerator from mailnews/base/util/iteratorUtils.jsm
• Fixed: 838992 – Port bug 745998 to fix packaging with –disable-necko-wifi
• Fixed: 839413 – Port bug 830594 – Turn on ENABLE_SHARED_JS on Win64 builder for PGO linker limit
• Fixed: 839925 – Reorganize layout of installed jsmime
• Fixed: 840591 – regression: The “Copy To” and “Move To” context menus do not list any sub-items
• Fixed: 841381 – error: ‘class nsTArray<unsigned int>’ has no member named ‘GreatestIndexLtEq’ after bug 618479 landing
• Fixed: 842106 – Permanent red: /installer/package-name.mk:143: /builds/slave/tb-c-cen-lx-000000000000000000/build/config/makefiles/makeutils.mk: No such file or directory
• Fixed: 842254 – Thunderbird/SeaMonkey comm-central builds fail with “KeyError: ‘MOZ_APP_VENDOR’”

## February 18, 2013

### Robert Kaiser

#### LCARStrek 2.16 Brings Updated Look

Every six weeks, it's time for a new release of Firefox and SeaMonkey, and along with them, updates for my EarlyBlue and LCARStrek themes to match those Firefox and SeaMonkey releases. Of course, I personally am using them with the Nightly versions and try to keep them working with those, so they are usable with newer versions already, but only after I incorporate changes from the beta cycle, they're really fully up to date with the release versions.

That said, I kinda had my worries with the buttons of LCARStrek being not really discoverable unless you move your mouse over them, and also about the theme feeling "too orange", esp. after I reviewed some shots of LCARS screens in Star Trek series and once again saw both the shapes of buttons there, which are very discoverable, and also the amount of colors used there.

So I finally decided to something about it and added some gradual changes to LCARStrek 2.16, see e.g. the buttons, tab and scrollbars colors in those two screenshots (left is a Firefox release with 2.15, right is a Nightly with 2.16, that's why it also has an additional "Data Choices" tab):

The new colors are taken directly from video screenshots of the series, so they should be pretty "true to the original". Actually, I copied the colors for buttons and default buttons directly from buttons in those screen shots. Trying to apply the same color to more button-like elements, I also converted buttons to that color and a larger border radius similar to that of the fully-rounded buttons.

While I was at it, I also took the orange off the primary toolbars and replaced it with a gray color taken from some screen that I think I saw on Voyager shots. And I always wanted to get some more of the connected horizontal and vertical borders found usually in LCARS screens, but that needs to have enough elements to construct, so it's hard to do in a theme. I found a way to get this design into the SeaMonkey sidebar though - and also used that new button color for its headers which act similarly to buttons as well. See those two screenshots from LCARStrek 2.0 (left) and now 2.16 (right) on SeaMonkey (of course, some small non-theme-reated changes in SeaMonkey UI are visible as well, as the application itself saw some development since 2.0):

I hope I caught all the fine details that come along with far-reaching changes like esp. the one for the buttons, I've done a number of corrective changes along with this.
Still I had some time left and enough elements to play with to give SeaMonkey's profile switcher some real beauty in LCARS terms (you also see the different color for default buttons in there):

Unfortunately, this only applies to "Switch Profile…" from within a running SeaMonkey profile, as a theme like LCARStrek can only apply in that situation and not on the profile manager seen on application startup, where no profile and therefore no add-on or theme is loaded yet.

The new LCARStrek 2.16 version has been submitted to AMO, but is waiting for review now. Once that is granted, all users of this theme will see that updated look, and I hope they'll like it!

I probably will work on updating the look of more parts of this theme as time allows and I find things that should look differently.

## February 16, 2013

### Joshua Cranmer

#### Why software monocultures are bad

If you do anything with web development, you are probably well aware that Opera recently announced that it was ditching its Presto layout engine and switching to Webkit. The reception of the blogosphere to this announcement has been decidedly mixed, but I am disheartened by the news for a very simple reason. The loss of one of the largest competitors in the mobile market risks entrenching a monoculture in web browsing.

Now, many people have attempted to argue against this risk by one of three arguments: that Webkit already is a monoculture on mobile browsing; that Webkit is open-source, so it can't be a "bad" monoculture; or that Webkit won't stagnant, so it can't be a "bad" monoculture. The first argument is rather specious, since it presumes that once a monoculture exists it is pointless to try to end it—walk through history, it's easier to cite examples that were broken than ones that weren't. The other two arguments are more dangerous, though, because they presume that a monoculture is bad only because of who is in charge of it, not because it is a monoculture.

The real reason why monocultures are bad are not because the people in control do bad things with it. It's because their implementations—particularly including their bugs—becomes the standards instead of the specifications themselves. And to be able to try to crack into that market, you have to be able to reverse engineer bugs. Reverse engineering bugs, even in open-source code, is far from trivial. Perhaps it's clearer to look at the problems of monoculture by case study.

In the web world, the most well-known monoculture is that of IE 6, which persisted as the sole major browser for about 4 years. One long-lasting ramification of IE is the necessity of all layout engines to support a document.all construct while pretending that they do not actually support it. This is a clear negative feature of monocultures: new things that get implemented become mandatory specifications, independent of the actual quality of their implementation. Now, some fanboys might proclaim that everything Microsoft does is inherently evil and that this is a bad example, but I will point out later known bad-behaviors of Webkit later.

What about open source monocultures? Perhaps the best example here is GCC, which was effectively the only important C compiler for Linux until about two years ago, when clang become self-hosting. This is probably the closest example I have to a mooted Webkit monoculture: a program that no one wants to write from scratch and that is maintained by necessity by a diverse group of contributors. So surely there are no aftereffects from compatibility problems for Clang, right? Well, to be able to compile code on Linux, Clang has to pretty much mimic GCC, down to command-line compatibility and implementing (almost) all of GCC's extensions to C. This also implies that you have to match various compiler intrinsics (such as those for atomic operations) exactly as GCC does: when GCC first implemented proper atomic operations for C++11, Clang was forced to change its syntax for intrinsic atomic operations to match as well.

The problem of implementations becoming the de facto standard becomes brutally clear when a radically different implementation is necessary and backwards compatibility cannot be sacrificed. IE 6's hasLayout bug is a good example here: Microsoft thought it easier to bundle an old version of the layout engine in their newest web browser to support old-compatibility webpages than to try to adaptively support it. It is much easier to justify sacking backwards compatibility in a vibrant polyculture: if a website works in only one layout engine when there are four major ones, then it is a good sign that the website is broken and needs to be fixed.

All of these may seem academic, theoretical objections, but I will point out that Webkit has already shown troubling signs that do not portend to it being a "good" monoculture. The decision to never retire old Webkit prefixes is nothing short of an arrogant practice, and clearly shows that backwards compatibility (even for nominally non-production features) will be difficult to sacrifice. The feature that became CSS gradients underwent cosmetic changes that made things easier for authors that wouldn't have happened in a monoculture layout engine world. Chrome explicitly went against the CSS specification (although they are trying to change it) in one feature with the rationale that is necessary for better scrolling performance in Webkit's architecture—which neither Gecko nor Presto seem to require. So a Webkit monoculture is not a good thing.

## February 15, 2013

### Joshua Cranmer

#### Updated DXR on dxr.mozilla.org

If you are a regular user of DXR, you may have noticed that the website today looks rather different from what you are used to. This is because it has finally been updated to a version dating back to mid-January, which means it also includes many of the changes developed over the course of the last summer, previously visible only on the development snapshot (which didn't update mozilla-central versions). In the coming months, I also plan to expand the repertoire of indexed repositories from one to two by including comm-central. Other changes that are currently being developed include a documentation output feature for DXR as well as an indexer that will grok our JS half of the codebase.

### Instantbird

#### Google Summer of Code 2013

Mozilla is doing Google Summer of Code 2013 and Instantbird is interested in participating again. Instantbird participated (through Mozilla) the last two years with JS-XMPP (by varuna in 2011) and the Import Wizard (by wnayes in 2012).  Both projects were successful: Instantbird and Thunderbird use our JavaScript XMPP code and we’re hoping to integrate the Import Wizard into Instantbird soon, after which the UI could then be uplifted into Thunderbird.

It is time to start thinking about (and brainstorming) ideas for the chat in this year’s GSoC! We’ve already started brainstorming and came up with some ideas, but would love to get more ideas from people. Remember that a good GSoC project needs to be something that can be completed by a student in ~8 weeks (but also has to keep a student busy the whole time!).  It should also be something that we would want to integrate into Instantbird by default and have expected behavior already defined.

Feel free to come chat with us on IRC (#instantbird on irc.mozilla.org) about this or any other topic!

## February 13, 2013

### Mike Conley

#### Making Australis Tab Animations Faster

The Firefox desktop team gathered in Toronto a few weeks back to hack together, and to discuss how we’re going to tackle 2013.

I can tell you right now, it’s going to be a fantastic year for Firefox.

Asa Dotzler has a great high-level write-up of some of the stuff we talked about, but I want to focus in on something Matt Noorenberghe and I were working on: beautiful curvy tabs.

Mmmmm…that’s the stuff.

That’s what I’m talking about, right there.

These curvy-tabs are already available for Windows in the UX Nightly builds, and I’ve been using them for a few weeks. And they feel great. It’s actually painful to go back to the boxy, noisy, square tabs in the current default theme. Using the old boxy tabs feels like I’ve gone back in time – and not in a cool way.

Even Chrome’s 45° angle tabs feel just a little too machine-like and impersonal in comparison, in my opinion.

Chrome’s 45° tabs

Having a more fluid and minimal tab strip in Firefox is great, but it’s only great if it performs well. Fluid and fast is the name of the game, and that’s what Matt and I were looking at; we were trying to find ways of speeding up tab opening and closing animations.

We’ve been working with the Performance Team on this, and we’ve been gathering some really interesting data. Probably the most interesting stuff is when we make a change that we expect to improve performance, and it doesn’t deliver. Or, even worse, it causes performance to be poorer. That’s usually a very surprising result.

We ran into such a result late last week, when we tried changing how we put a gradient on top of the selected and hovered tabs. We had originally been using the CSS linear-gradient function, and the Graphics Team told us that using a tiled background-image with some opacity (like a PNG) would improve performance.

Well, we generated our gradient as a PNG, tossed it in, and did our measurements. Lo and behold, performance worsened somewhat, and we’re still not exactly sure why. I’ve filed a bug on this, and I’m hoping we can get it resolved soon. Switching to PNGs for gradients was supposed to be an easy win, and the Graphics Team was pretty surprised by our result.

Matt and I tried a bunch of different ideas to speed up tab animations, and slowly but surely, the needle started to move in our favour. We’re getting close to matching the performance of the current square tabs, but we’re going to see if we can push it over the edge and bank ourselves an overall performance win.

Fluid is good, but fluid and fast is the best. We’re getting there.

## February 12, 2013

### Calendar

#### Lightning 1.9.1 Release Candidate Available

We are happy to announce that a Release Candidate for Lightning version 1.9.1 is now available for testing here. For those using linux, please use the build in the linux/ folder rather than the platform-specific folders. Windows users can find their builds in the “unsigned” folder.

This version fixes an issue that prevents some events from being modified and some reminders from being dismissed in CalDAV calendars with Offline Support enabled – those affected are encouraged to test this build. If you have seen an error message with “this.mItemInfoCache[aNewItem.id] is undefined”, this is you! Be sure to reset your cache, by unchecking the “Offline Support” checkbox, restarting, then checking it again.

The full list of changes in this version can be found here.

It is really important that you test this pre-release, as it will become the next release for Thunderbird 17. There is no additional beta phase, this is it! If you are using Thunderbird 17, please give it a try and let us know if you encounter any errors.

## February 10, 2013

### David Ascher

#### Ruminations on front end-centric webapps

I’ve been poking around firebase & meteor, and sparkleshare+github and dropbox+site44. I’m a bit disturbed (in a good way) by what feels to me like a sea change that’s happening there, and it seems to me that almost anyone thinking about web developers writ large needs to think hard about what this means for their roadmap.

In particular, a few brief thoughts:

I’ve been, for a while now, using sparkleshare + github pages with CNAME support as a way of making trivial static sites that are real. Sparkleshare is an open source git-syncing-to-filesystem client (with nice ergonomics and design, OMG!). With github-pages and CNAME support, this means that I save in my favorite text editor, and within _seconds_ the thing is live on the web. That’s a disruptive flow.

I’ve been coaching the harp.io team through WebFWD, and they have a service which does similar things on top of Dropbox, including coffeescript/haml processing, CDN, load balancing, push-button deploy, screenshotting for multiple user agents, rollback, etc. In other words, you author your webapp locally on a dropbox folder, and they take care of high-quality, high performance hosting. There is no app-specific server-side logic (which means you need to either have static sites or integrate with hosted services for said features).

I recently ran into site44.com, which does a ‘cheap & cheerful’ version of what harp.io does, with no push-button deploy/rollback, and much more like sparkleshare — instant deploy, with little management capabilities (but instant gratification).

Both harp.io and site44 use Dropbox for syncing, which is a Big Idea in my opinion because setting up Dropbox is so much easier than setting up git credentials (what with SSH keys, etc.). Both assume that the user has write access to local files (which may be a problem in some retrograde environments like enterprises and schools, but which could be solved with web-based editors).

I finally bit the bullet and dig in again into Firebase. Firebase is effectively a key-value store, with Pubsub messaging of data changes. They’ve made some interesting progress in their security and auth models (they include persona support, which is cool). Firebase feels like it makes it trivial to add state and real-time behaviors to previously static sites. The API surface area is quite small, so it should be fairly easy to adopt.

I’m also looking again at Meteor. Since they first launched w/ both fanfare and a bit of ridicule due to overhype, they’ve cleaned up their act significantly: the license is now MIT, they’ve announced \$11M in financing from tier-1 VCs, announced an enterprise business plan to complement their open source offering, and build a bunch of APIs. Meteor feels like a steeper learning curve, and another “at-bat” for reactive programming (a topic I’ve been interested in for a decade).

Meteor feels like a solid foundation for a potential full-stack offering, and I like the open source option; Firebase feels like a really compelling basis for demoware and hacks. Regardless, syncing from filesystem to websites without thinking too hard about deployment is a huge benefit of front-end-driven sites.

Single-page apps feels to me like the conceptual next hurdle. Figuring out how to manage history and state management so that the app feels as dynamic as the best webapps, but has good URL support, etc., is an engineering challenge (see e.g. history.js). And it certainly challenges the old mental model of one URL -> one file which pulls down other resources. The newer model (especially on mobile, low-latency devices) needs to be one app -> many URLs, with one core application logic which pulls data-as-JSON and builds most state clientside (with serverside rendering as an optimization for high traffic or slow-CPU environments, as per airbnb’s post).

I’m not sure what this means for advanced webmaker skills. At the very least explaining some of the above to a broader audience is something we could do.

## February 06, 2013

### Rumbling Edge - Thunderbird

#### 2013-02-05 Calendar builds

Common (excluding Website bugs)-specific: (0)

Sunbird will no longer be actively developed by the Calendar team.

Official Mac (2013-01-30 build)

#### 2013-02-05 Thunderbird comm-central builds

Thunderbird-specific: (8)

• Fixed: 528793 – “Choose color for text” / “Choose color for background” not disabled like everything else
• Fixed: 530099 – Remove extensions.getMore* preferences
• Fixed: 713133 – Make packager.pm missing file warnings fatal on Thunderbird
• Fixed: 759422 – Remove use of e4x in account creation
• Fixed: 815283 – create test file to check proper operations of the Account manager account tree
• Fixed: 824073 – In preferences dialog, compose pane, disable the “minutes” textbox, when autosave is not checked and “keywords” when “missing attachments” is not checked
• Fixed: 830993 – Dupe xul ids prevent menuitem selection setting
• Fixed: 831737 – Re-write and simplify newmailalert.{js|xul|css} (Backport changes from SeaMonkey Bug 404580)

MailNews Core-specific: (13)

• Fixed: 746052 – Make a JS-implemented raw MIME parser
• Fixed: 790852 – Make nsIMimeHeaders use the new MIME parser
• Fixed: 795158 – Switch to Services.jsm: /editor/ui/
• Fixed: 801916 – Permanent orange: TEST-UNEXPECTED-FAIL | test_bug155172.js, test_smtpPassword.js, and others failing post-nsresult changes – SMTP & NNTP passwords prompted rather than obtained from password manager
• Fixed: 811199 – Port |Bug 794510 – Build with NO_NSPR_10_SUPPORT| to SeaMonkey
• Fixed: 814967 – Fix includes in mailnews/ .idl files so that builds no longer fail randomly with “error: name ‘nsMsgSocketType’ specified twice”
• Fixed: 824324 – JavaScript strict warning: chrome://global/content/bindings/radio.xml, line 133: reference to undefined property val.value
• Fixed: 825872 – Port bug 780561 – Overhaul the packager – to comm-central
• Fixed: 832220 – STRIP_FLAGS is not in autoconf.mk/config.status
• Fixed: 833949 – convert nsMsgMailNewsUrl::m_cachedMemCacheEntries from nsISupportsArray to nsCOMArray
• Fixed: 834028 – Wrong parameter name for fEAlert method in nsIImapServerSink interface
• Fixed: 835002 – Add back Growl support for TB19/20/21 and SM 2.16/2.17/2.18
• Fixed: 837568 – Port |Bug 808785 – Stop shipping d3dx9_43.dll| to SeaMonkey

Official Mac (2013-01-30 build)

### Meeting Notes

#### Thunderbird: 2013-02-05

Thunderbird Meeting Details :

Remember to use headphones and mute yourself when not talking

Feel free to ask questions in the meeting either by speaking up or by asking them in #maildev on IRC.

Other ways to get in touch with us can be found on our communications page

• none

### Upcoming

• Firefox is releasing 18.0.2 – doesn’t affect us.

#### Action Items

• Standard8: Update Wiki status meeting page with calendar link – DONE!

• Standard8: Document flags to tb-planning
• Standard8: Follow up with metric numbers being public – This should be happening soon, work has been done, waiting for final approvals
• Look into having the notes blogged
• We need to get the meeting notes blog to pick up the pages again.

#### Friends of the Tree

Thanks to our Friend of the Tree. When adding someone to this section, please get their T-Shirt size, phone number (needed for shipping!) and send it to abourcier@mozilla.com that she can send them a shirt!

• Standard8

• Apologies for not being at the meeting today

• Fixed a bunch of tree bustage this week
• OS X builds being looked into (Bug 837618)
• Been working with releng on getting 17.0esr and 17 mainstream building from one repository – various branding updates etc.
• Aiming to catch up on reviews end of this week / start of next
• Next week is preparation for builds for the 17.0.3 releases
• Merge date for next cycle is 19th Feb (not 18th due to holidays: President’s day in USA; Family Day in Toronto; Vancouver Family day is February 11 for some strange reason)
• mconley
• Spent a few hours going through my review queue this past weekend

• Queue is shrinking, but still needs attention. I’ll get there soon.
• Ensemble
• Can save and update contacts very nicely with syntax like this: http://www.pastebin.mozilla.org/2116543

• Working on asynchronously retrieving all contacts with Promises, returning a Backbone Collection.
• Considering altering the roadmap so that we target read-only capability for imported contacts for TB 24.s
• Focusing on that will reduce focus on LDAP/Facebook/etc connectors.

• Does anyone from the community want to help out with those?
• Ludo says “+1″.
• bwinton
• Also spent a few hours going through my review queue this past weekend.

• Queue is also shrinking, but still needs attention.  :)
• jcranmer
• Will not be at meeting

• e4x is now dead and gone FOREVER! Thank-you!!!!!!!
• Hoping to have m-c ready for subconfigure scripts shortly (see https://bugzilla.mozilla.org/show_bug.cgi?id=648980) [prerequisite for cc-rework]
• JS MIME
• Next piece of functionality is i18n support (RFC 2047/RFC 2231)

• Designing body/attachment and htmlifiers API still
• de-RDF
• Repreparing the folder-lookup patch based on mailing list feedback
• DXR work and exams will probably suck up more of my time in the next few weeks
• aceman
• Roland Tanglao
• Usul
• followed on some bugs

• looked quickly at crashes
• Marketing – AM is in the process of giving the keys to Benjamin.
• Talked to Sun (yes it’s true they still have a team of 1 plus students working on old version about using Moztrap instead of Litmus
• clokep
• Irving
• Occasional reviews

• Looking at bug 701533; appears to be symptom of a general problem with front end dropping all references to an IMAP socket without closing it; when NSS times out and closes the socket, references get released on the wrong thread.
• Axel

#### Question Time

• Can anyone steal reviews for any module, or does it need to be a peer?

• You have to use your best judgement. If it’s a trivial fix, or fixing something you feel you understand, then go for it. In Florian’s case, he should probably just take it.  ;)

#### Attendees

Roland Tanglao, Mike Conley, Irving Reid, Blake Winton, Ludovic Hirlimann, Florian Queze, aceman (audio, no mic), clokep (audio, no mic), RealRaven aka Axel :) (no mic here as well)

## January 26, 2013

### Siddharth Agarwal

#### New version of ntfsutils

I've released a new version of the ntfsutils library for Python.

The small spin-off project from some work I did at Mozilla became far more popular than I expected, netting over 600 downloads last year. Pretty neat!

## January 23, 2013

### Blake Winton

A while ago, I noticed that my Firefox was starting to run slower and slower. One of the common suggestions to fix that kind of problem is to reset your profile, and while I think that’s a good idea the biggest problem for me was that resetting my profile would not save my open tabs. Since I have 75 of them, trying to remember them all would be a bit of a problem. (Some people would suggest that having 75 open tabs is also a problem, but fie to them I say! Sure, I’m a little bit above the average, but I’ve hit a flow that works for me. :)

Fortunately, I’m a coder at heart, so I did what any coder would do, and wrote some code to save and restore them for me. A few days later, one of my co-workers wanted to do the same thing, so I ran similar code on his computer, and since at least the two of us found it useful, I thought it might be a good idea to post the code here so that other people might benefit from it, too.

First of all, we need a little bit of setup to prepare your computer to save the tabs.

1. Go to Tools » Web Developer » Scratchpad to open up the Scratchpad. (This is where we’ll be doing most of our work.)

2. Click Environment » Browser to make sure the Scratchpad is running in the browser’s context, so that it can access the list of tabs.

3. Paste the following code into the Scratchpad:

var x = gBrowser.tabs;
var rv = 'var tabs = [\n';
for (var i = 0; i < x.length; i++) {
rv += '  "' + x[i].linkedBrowser.contentWindow.location + '",\n';
}
rv += '];\n';
rv += 'for (var i = 0; i < tabs.length; i++ ) {\n';
rv += '}\n\n';

rv

4. Click Execute » Display This will output stuff in comments (“/*…*/”) that looks like this:

var tabs = [
/* … */
"http://weblog.latte.ca/blake/tech/",
];
for (var i = 0; i < tabs.length; i++ ) {
}

5. (This is the big step!) Save that code to an external file, and run the profile reset.

6. Then, in your new profile, open the Scratchpad, and set the Environment to Browser again just like above, and paste in the code you saved.

7. Finally, hit Execute » Run, and all your tabs should be restored! (If you’ve split them up into tab groups, the code I provided will save all your tabs, but will restore them all into one group, so you’ll need to re-group them after restoring. I thought about fixing the code to save a list of groups, but I didn’t really need to, so never got around to it. ;)

I hope this helps some of you, and please feel free to leave a comment letting me know whether you found it useful or not, or if you come up with any additions or changes to make it work better!

## January 22, 2013

### Rumbling Edge - Thunderbird

#### 2013-01-21 Calendar builds

Common (excluding Website bugs)-specific: (4)

• Fixed: 823446 – Fix ‘Services.appshell’, should be ‘Services.appShell’ (documentation was wrong)
• Fixed: 823977 – Events are missing from the calendar in recent lightning nightlies
• Fixed: 827132 – Incorporate nsITransactionManager interface changes (beginBatch, endBatch)
• Fixed: 828754 – Error applying Incomplete Tasks filter in Task View [Error: getRidKey(...) is null]

Sunbird will no longer be actively developed by the Calendar team.

#### 2013-01-21 Thunderbird comm-central builds

Thunderbird-specific: (6)

• Fixed: 525900 – Wrong plural form for unread when selecting multiple messages
• Fixed: 723497 – saving message to disk fails silently, fails to report file naming convention violation error
• Fixed: 786648 – Stop stealing strings for log viewer
• Fixed: 801514 – ‘next’ button icon points up
• Fixed: 813218 – Folder Picker in Toolbar is _waaaayyyy_ too condensed.
• Fixed: 825279 – Remove outcommented code in msgHdrViewOverlay.js::ShowMessageHeaderPane()

MailNews Core-specific: (9)

• Fixed: 517456 – crash [@strchr | nsParseMailMessageState::ParseHeaders() ], formerly [@ nsParseMailMessageState::ParseHeaders()]
• Fixed: 750781 – Thunderbird 12 veryyyyy slow when opening Message. Sometimes shows “Not Responding”. (because places.sqlite-wal/-shm is created as mail directory by Tb if Tb’s profile directory is specified by user as Local Directory: of an account)
• Fixed: 805620 – Content-Transfer-Encoding and Content-Disposition parameters should be case-insensitive, per RFC 2045
• Fixed: 823526 – Empty newsgroups list when trying to subscribe to a newsgroup
• Fixed: 823673 – Remove -moz-prefixed gradients usage from comm-central
• Fixed: 827100 – Fix bustage due to new UndoManager in nsITransactionManager (Bug 617532)
• Fixed: 831300 – Cannot build MailNews after mozilla-central Bug 786533.
• Fixed: 832066 – Remove deprecated NS_IMPL_CYCLE_COLLECTION_CLASS from nsMsgRDFDataSource.cpp
• Fixed: 832190 – LIBS_DESC_SUFFIX, EXPAND_LIBS_LIST_STYLE and EXPAND_LIBS_ORDER_STYLE need to be defined in config.status

## January 21, 2013

### Joshua Cranmer

#### DXR's future potential

The original purpose of DXR, back when the "D" in its name wasn't a historical artifact, was to provide a replacement for MXR that grokked Mozilla's source code a lot better. In the intervening years, DXR has become a lot better at being an MXR replacement, so I think that perhaps it is worth thinking about ways that DXR can start going above and beyond MXR—beyond just letting you searched for things like "derived" and "calls" relationships.

#### The #ifdef problem

In discussing DXR at the 2011 LLVM Developers' Conference, perhaps the most common question I had was asking what it did about the #ifdef problem: how does it handle code present in the source files but excluded via conditional compilation constructs? The answer then, as it is now, was "nothing:" at present, it pretends that code not compiled doesn't really exist beyond some weak attempts to lex it for the purposes of syntax highlighting. One item that has been very low priority for several years was an idea to fix this issue by essentially building the code in all of its variations and merging the resulting database to produce a more complete picture of the code. I don't think it's a hard problem at all, but rather just an engineering concern that needs a lot of little details to be worked out, which makes it impractical to implement while the codebase is undergoing flux.

#### Documentation

Documentation is an intractable unsolved problem that makes me wonder why I bring it up here…oh wait, it's not. Still, from the poor quality of most documentation tools out there when it comes to grokking very large codebases (Doxygen, I'm looking at you), it's a wonder that no one has built a better one. Clang added a feature that lets it associate comments to AST elements, which means that DXR has all the information it needs to be able to build documentation from our in-tree documentation. With complete knowledge of the codebase and a C++ parser that won't get confused by macros, we have all the information we need to be able to make good documentation, and we also have a very good place to list all of this documentation.

#### Indexing dynamic languages

Here is where things get really hard. A language like Java or C# is very easy to index: every variable is statically typed and named, and fully-qualified names are generally sufficient for global uniqueness. C-based languages lose the last bit, since nothing enforces global uniqueness of type names. C++ templates are effectively another programming language that relies on duck-typing. However, that typing is still static and can probably be solved with some clever naming and UI; dynamic languages like JavaScript or Python make accurately finding the types of variables difficult to impossible.

Assigning static types to dynamic typing is a task I've given some thought to. The advantage in a tool like DXR is that we can afford to be marginally less accurate in typing in trade for precision. An example of such an inaccuracy would be ignoring what happens with JavaScript's eval function. Inaccuracies here could be thought of as inaccuracies resulting from a type-unsafe language (much like any C-based callgraph information is almost necessarily inaccurate due to problems inherent to pointer alias analysis). The actual underlying algorithms for recovering types appear known and documented in academic literature, so I don't think that actually doing this is theoretically hard. On the other hand, those are very famous last words…

## January 17, 2013

### Robert Kaiser

#### "Webby" browser UI on mobile? It's FirefoxOS or nothing.

I've always been a huge fan of the idea of rendering (browser) UI with the web rendering engine and write even the UI itself in a "webby" language. This idea AFAIK came up at Netscape somewhere in 1998 when the new Gecko engine for Mozilla was built. Unfortunately, HTML wasn't in a shape back then to be used for writing complex UI, and actually was quite far away from doing that 15 years ago. The basic concept looked good though, and so an intermittent technology was created to build a UI language on similar concepts, using as much of the JavaScript and CSS from HTML as possible and a markup document written in something like "HTML for UI", which ultimately became XUL ("XML UI Language").

Firefox on desktop, as well as Thunderbird, SeaMonkey, BlueGriffon and others are written using XUL for all their UI, and it's working great there. Actually, this is what even lured me into contributing to Mozilla in the first place - I saw that the UI was written in a way that I could understand back then, as someone who had played around with writing HTML, including some CSS and tiny bits of JS. I felt right at home when I saw that a button in the UI was a <button> in the markup, and that markup followed basically the same, albeit stricter (due to being XML), rules as the HTML I knew. Sure, the tag names were a bit different, but it's UI, and they were easy to understand.
Of course, another import aspect was that this UI would work on any platform you could build Gecko for, be it Windows, Mac and Linux, or even OS/2, Solaris, BeOS and others (including exotics such as AmigaOS). Of course, to fit really in with the host OSes, a number of specific tweaks were added esp. for the mainstream ones, but it works without them, just doesn't integrate as well. As soon as you can compile the Mozilla engine (which takes enough effort anyhow), you also get the full UI, which is a nice deal.
And, of course, the extension system we built over the years has largely been based upon the concepts of XUL, but I won't go into depth on this right here.

Even on mobile devices, Mozilla used that concept for a while. That was great for portability, as you had a working browser with all UI once you could get it to compile somewhere. Hell, I even ran SeaMonkey on a Nokia N810 (a 4.1" Internet tablet) - with the full UI! Of course, that UI was way too small and too overloaded for use on a touch screen, but, being XUL, it loaded and could be used if you managed to tap the correct points with the stylus.
So, for portability, including getting it to run on new devices, this XUL UI was great - and of course, some XUL UI was created that would work decently on those small touch-screen devices. I like the concepts and UI of our modern mobile Firefox browsers (both look similar, see below) better, but we had a usable, easily hackable, nicely extendable UI built with XUL. When Android became a larger deal on mobile, we could just use that and make it work on this system as well, and had something usable pretty fast.

All would have been perfect if it wasn't for one problem: If you render all your UI with the web renderer, it means that you need to load up this rendering engine in its full glory before you can paint any UI at all. And with the web becoming more powerful, what needs to be loaded for that became pretty large, and with loading from permanent storage into memory being pretty slow on those weakly powered mobile devices, it meant waiting times of multiple seconds (on some devices 15 seconds and more) - while the same "smartphone" devices were propagating more and more the concept of instantly launching apps.
Back in 1998, waiting several seconds for an application to start was common and it was OK for Netscape or Mozilla browsers to do the same, maybe display a "splash screen" while the user was waiting for that. Now, in the fast-living world of smart phones, the usage patterns as well as the expectations have changed enough that this waiting time is what instantly (no pun intended) your app is being shot down by users for that, and nobody but your strong supporters (which Mozilla fortunately has) will use it. Things needed to change. And they did.

Basically, there's two ways Mozilla had to make the browser UI start fast: Either write it in a way that it used the "native" toolkit of the hosting OS and not depend on the rendering engine to launch (so that can be loaded lazily in the background), or to have that "native" toolkit of the system be our rendering engine already!
Well, as funny as it sounds, we ended up doing both!

On Android, we did the former, write a "native" (i.e. Java) Android app, which is very fast to be displayed as all the Java/Dalvik framework is already loaded, and load Gecko in the background once the UI is up - while the user interacts with the UI to e.g. enter a site to call up, we have enough time for that so Gecko is ready to display the actual websites once it's needed.
Unfortunately, that "native" UI is not "webby" any more, Java is very different from HTML/XUL/CSS - though AFAIK we are using quite a bit of JS to driver things, so there's at least some pieces left that someone like me would still understand. Oh, and as my job nowadays is stability, Java exceptions crash the browser, while we don't have that problem with JavaScript, and the amount of crash reports rose up significantly with that UI rewrite (the team is doing a great job on fixing them, though, and we've become actually pretty good in stability there nowadays). To be fair, we also added support for the Flash plugin, which seems to be causing by far the most stability problems with this version. All that said, this new Firefox for Android is really fast, esp. on startup, and works incredibly well, it's getting cheered as the best browser for Android by many - compare that with the quite bad reputation that the XUL-based version had and you need to admit this was a good change - even if you happen to be me.

Well, and then there's this thing that I mentioned with the "native" toolkit of the system be our rendering engine, and then you can use web technologies for the mobile browser UI, right? That's what we're doing in Firefox OS!
On that system, the whole UI of everything you see on screen is rendered by Gecko. And not just that, Mozilla took the final step and didn't even do it with XUL, but used plain HTML this time, so that everything running on this system is made of pure web apps (sure, with some new WebAPIs thrown in). All that said, there's some things in UI design where HTML still needs to catch up to XUL, but those mobile apps are working really nicely already (still, mobile has less UI with less complexity and less need for cross-app consistency, so the particular weak spots I'm thinking of don't come to light that much).
What it comes down to for what I want to say here is that in Firefox OS, we indeed have a browser on mobile which has its UI completely rendered by the web rendering engine (again) - but this time, not done in XUL but in plain HTML!

And it looks pretty good, compare our "native" Android UI to our Firefox OS UI and you'll see that there are some similarities:

And, go ahead and try yourself, e.g. in the simulator, it even pretty much works the same!

Time to come to the reason I actually brought this up today: You might ask what happened with the XUL-based UI for mobile, which I said was nicely portable to different devices (and older builds of which I still have in use on my "real-Linux-powered" N900 and N9 phones)? Well, it's dead and gone. And even its source has been removed today from our mozilla-central repository. So, if you want a browser with a "webby" UI on mobile, your only chance from now on is Firefox OS. (That is, if nobody comes along and resurrects a XUL UI for alternative mobile platforms in some external project.)

All that said, I'm excited that the original idea of rendering the UI with the browser engine survives on mobile - and actually thrives and is being hugely extended to powering the whole system, in Firefox OS!

## January 14, 2013

### Thunderbird Design

#### Re thunderbird tabs on top rationale: If you need to change the thunderbird so much in order to accomodate for extra functions - like calendars or advanced searches or whatever - so much that the new design has disadvantages on e-mail usability - that may be a heavy indication that all these things are sufficiently different to NOT belong into an e-mail client. Why not remember the old Unix motto: One task, one tool. That way, we can keep one layout for e-mailers, and another for calendars.

I haven’t seen any data that suggests that placing the toolbar below the tabs has any disadvantage on e-mail usability.  Some people don’t like it, but that’s hardly justification for your claim.

Furthermore, two of the main tasks we hope to put in tabs are composing email and looking up addresses.  Both of those have their own toolbars with different buttons from the message window’s.  And both of those are functions which have been in Thunderbird for years.  (Perhaps Thunderbird should split up into an mh-style set of programs, but I think you’ld be hard pressed to try convincing the current community that that would be a good direction to go.)  I will also assert that being able to easily add meeting invitations from e-mail messages to your calendar is an important part of many people’s jobs, and that there is a lot of use in being able to quickly and accurately find messages you’ve stored, and so a set of disconnected tools would not be in our users’ best interests.

## January 08, 2013

### Robert Kaiser

#### The Cloud

This xkcd comic appeared under a different title, but even if Instagram was the recent case that brought up discussions like that, you can say the same for almost any cloud service, including the likes of Facebook, proprietary app stores, Dropbox, and a ton of others:

Just look for example at this piece of the terms of yet another cloud service that I was asked to sign on recently:
Quote:
You retain full ownership to your Content, but you agree to grant us a worldwide, non-exclusive, irrevocable, transferable, perpetual, royalty-free license (with the right to sublicense) to use, copy, reproduce, process, adapt, modify, publish, transmit, edit, translate, make derivatives, display and distribute such Content in connection with providing the Service to you and other users in accordance with your settings on the Service. In connection with providing the Service, we may modify or adapt your Content in order to transmit, display or distribute it over computer networks and in various media and/or make changes to your Content as are necessary to conform and adapt that Content to any requirements or limitations of any networks, devices, services or media.

So, basically, the cloud service can do anything with any content put in there. Anything put on there cannot be a "secret" and must be seen as being public - and of course the content and any data derived from it (like behavior, etc.) can and will be sold to others - after all, the cloud provider needs to earn money with something.

A long-standing saying about the cloud is that "if you aren't paying for the product, you are the product being sold". Everyone creating a service wants to feed him/herself and make a living, at least, and the money for that needs to come from something. I'm not saying I'm against cloud services, they enable some cool stuff at times, but you always should be aware that you hand over control to the service provider. And I feel better with any service that's telling me how they're generating the money to enable a living for their employees. Those that don't are the ones that make me feel worried when "putting my stuff in their garage".

If you want to keep control over your content yourself, there's of course a number of open and distributed alternative services out there that you can look into, for example Diaspora*, Open Web Apps, Persona, OpenPhoto, ownCloud, and others.

## January 04, 2013

### Rumbling Edge - Thunderbird

#### 2013-01-03 Calendar builds

Common (excluding Website bugs)-specific: (0)

Sunbird will no longer be actively developed by the Calendar team.

#### 2013-01-03 Thunderbird comm-central builds

Thunderbird-specific: (9)

• Fixed: 532567 – Update details open in a message window as editable HTML
• Fixed: 563908 – Investigate why test-columns.js test_apply_to_folder_no_children and test_apply_to_folder_and_children fail on trunk Mac builds
• Fixed: 624440 – Fully fix onComposerFromChanged() after bug 337964
• Fixed: 795983 – Chrome file doesn’t exist: [...]/chrome/messenger/skin/classic/messenger/messages/Variants/Normal.css
• Fixed: 805185 – updated 17 = WIN 7 problems–opens double windows. (Regression by bug 755793. Once Tb is terminated with multiple windows opened, multiple windows are always opened from sessions.json upon restart, because X button always closes all windows.)
• Fixed: 816062 – Toolbar buttons disappear
• Fixed: 823009 – Attachment Reminders not triggering due to removal of nsIMutationObserverCallback (Permanent Orange | TEST-UNEXPECTED-FAIL | test-attachment-reminder.js)
• Fixed: 823449 – Fix ‘Services.appshell’, should be ‘Services.appShell’ (documentation was wrong)
• Fixed: 825853 – Port bug 818394 – Universal symlink not created correctly

MailNews Core-specific: (28)

• Fixed: 462057 – Rewrite Mac Apple Double Encode not to use old Mac OS X file system code.
• Fixed: 471492 – crash [@ nsImapMailFolder::CopyMessagesOffline(nsIMsgFolder*, nsIArray*, int, nsIMsgWindow*, nsIMsgCopyServiceListener*)] when moving/deleting/copying many messages
• Fixed: 493544 – invalid decoding of multiline utf-8 subject header (better to be tolerant with split of byte code at wrong position in RFC 2047 encoding)
• Fixed: 545859 – Signature is misplaced when the compose window was invoked by a mailto: link with body parameter and signature position set to “above quote”
• Fixed: 615856 – crash sending message [@ nsMsgBuildMessageByName]
• Fixed: 664105 – TEST-UNEXPECTED-FAIL | test_URIs.js | false == true for Thunderbird when running mailto: test
• Fixed: 734034 – invisible directories still used by thunderbird junk mail management (after deferring an account the junk mail target folder still points to the original account, not the deferred-to one)
• Fixed: 772342 – Unprefix CSS3 transforms, Transition properties, Animation etc in Comm-Central.
• Fixed: 798663 – Should use presence of X-GM-EXT-1 capability to identify Gmail IMAP server
• Fixed: 805626 – when going back to online mode, drafts saved while in offline mode are deleted, critical data loss
• Fixed: 809418 – Use nsMsgFolderFlags::SpecialUse constant instead of enumerating all the individual values at various places
• Fixed: 815012 – Mail messages corrupt after running filters
• Fixed: 815087 – The mail server responded: Command Argument Error 11 ( Non-Gmail IMAP server returns “BAD Command Argument Error. 11″ to “UID fetch 1111 (UID X-GM-MSGID X-GM-THRID X-GM-LABELS … BODY.PEEK[ ... ])” which is produced by is_gmail=true )
• Fixed: 816028 – LIST (SUBSCRIBED) command to Zimbra server with shared folders causes crash in Zimbra and results in disconnection from server
• Fixed: 819271 – test_formatFileSize.js fails on systems that use a decimal separator different from “.”
• Fixed: 821253 – Remove nsISupportsArray usage from nsIMsgFilter::getSortedActionList
• Fixed: 821743 – Remove nsISupportsArray actionList attribute in nsIMsgFilter
• Fixed: 821914 – Unable to post or save a draft to Newsgroups
• Fixed: 822131 – Remove nsISupportsArray usage from nsIMsgFilterService::applyFiltersToFolders and nsMsgFilterAfterTheFact::nsMsgFilterAfterTheFact
• Fixed: 822263 – Change nsAbView.cpp to use DebugOnly.h instead of Util.h
• Fixed: 822316 – Fix clang error with double > in nsMsgAccountManager.h
• Fixed: 822822 – fix “warning: comparison between signed and unsigned integer expressions [-Wsign-compare]” in nsMailApp.cpp and nsSuiteApp.cpp
• Fixed: 824266 – Crash in account manager when account has invalid server @ nsMsgAccountManager::GetIdentitiesForServer
• Fixed: 824296 – fix some signed/unsigned comparison problems and compile warnings in nsMsgFilterList.cpp
• Fixed: 824424 – Comm-central build on OS X 10.7 busted due to parent m-c changesets
• Fixed: 824459 – Thunderbird build is broken after Bug 807678 (error: no matching function for call to ‘nsIDNSRecord::GetNextAddr(int, PRNetAddr*)’)
• Fixed: 825236 – check-sync-dirs.py test fails on comm-central due to removal of mozconfig.leopard from mozilla-central

## December 25, 2012

### Jonathan Protzenko

#### So I figured out I should try out the Addon SDK

So I figured out I should try out the Addon SDK. Jeff Griffiths and Erik Vold finally convinced me at the latest MozCamp that it was worth a try, so for my latest project (a lightweight revival of FireGPG), I decided to go the Addon SDK route. I'm a Thunderbird addons developer, so although I'm very familiar with all the Gecko and Thunderbird parts, I'm not familiar with Firefox-specific extensions. I thought the Addon SDK would save me the trouble of finding out which parts of the UI to overlay, and so on.

The short version is that it's been a very pleasant experience, and I believe it did save me a lot of time, but some of the shortcomings of the Addon SDK are really frustrating. Don't get me wrong: all in all, I believe it's an amazing experience for a newcomer, and I'm sure it's made developing addons much easier and much more fun than it used to be a few years ago.

The good parts:

• having well-written documentation is... quite a shocking experience for someone who's used to developing Thunderbird addons; what a joy!
• the tutorial and the various guides are well-written all throughout,
• there's an easy escape door as soon as you want to do something for which there is no API: require("chrome"),
• converting a JSM module (the ipccode library in my case) into a RequireJS-style module was really seamless,
• the cfx utility is really great for launching a Firefox with a fresh profile and the addon pre-installed; I could do it before with shell scripts, but having it all integrated is really life-changing!

The weird parts:

• figuring out the two-way communication dance between content side and add-on side is quite strange for someone who's not used to it,
• it took me a short while to understand that as soon as I wanted to manipulate a page's contents, I had to do it through a content script,
• it feels weird to create a new file (contentScriptFile) just for a dozen lines,
• the creation of workers and the message passing is slow: I can feel the various steps taking place; also, I'm unsure about the performance hit of creating so many workers all of the time;
• the final XPI ends up being around 200kB -- so much for just a few dozen lines of code?
• there's no clear explanation on how one is supposed to do two-way communication: should I used tab.attach, a page-mod, the worker that's created when using context-menu? The tutorials aren't well decided on whether to advertise port-style or postMessage-style communications, which adds to the confusion;
• I don't want to source bin/activate as it messes up my PS1; does it do anything useful besides changing the PATH?
• cfx warned me about mozrunner being installed system-wide (I do use mozregression), but I couldn't tell if that was a severe problem or not.

The frustrating parts:

• I cannot localize the attributes in my HTML file: the placeholder attribute of my <input> field and the value attribute of my button will remain in English...
• I wanted to do a two-way communication between add-on side and content-side starting from a right-click event, and it tooks me three hours to figure out how to do so -- I guess I was just confused by the variety of options;
• I'm stuck because the context-menu module won't work in GMail's composition area.

For the last three items, bugs have been filed (respectively bug 824489, bug 824348 and bug 824482). I'm really hoping for the latter to be fixed, since it basically makes half of my addon useless. In the event that no one has the time to fix it, I'll probably have to rewrite the addon to not use the SDK.

I would like to thank KWierso for his help in #jetpack, he was instrumental in achieving what I wanted to do. My warmest congratulations to the Addon SDK team for making the addon landscape usable, and my best encouragements for fixing the various shortcomings!

PS: for the curious, the code lives on GitHub.

## December 17, 2012

### Rumbling Edge - Thunderbird

#### 2012-12-17 Calendar builds

Common (excluding Website bugs)-specific: (0)

Sunbird will no longer be actively developed by the Calendar team.

#### 2012-12-17 Thunderbird comm-central builds

Thunderbird-specific: (14)

• Fixed: 521384 – Cannot set font size to 8 from Options–>tab Display (but Advanced window work)
• Fixed: 626047 – Items “Regular” “Bigger” “Smaller” in Size choice dropdown menu are cropped
• Fixed: 762594 – Prompts to save unmodified message forward draft
• Fixed: 794909 – Switch to Services.jsm: compose code
• Fixed: 795152 – Switch to Services.jsm: What’s left
• Fixed: 799451 – Can’t remove attachment with keyboard in forwarded e-mail
• Fixed: 812630 – When hovering over the Menu Button, hover text is: “Displays the Application Menu”
• Fixed: 813295 – Fix entity names for keyboard shortcuts for compose window font size changes after bug 738194
• Fixed: 813638 – Under Windows Classic Theme Thunderbird 17 title bar is same colour as window background
• Fixed: 814414 – Menu entries for chat still shown in AppMenu when mail.chat.enabled set to false
• Fixed: 815220 – Icons are missing in folder picker in main toolbar
• Fixed: 817390 – make click_account_tree_row() in test-account-manager-helpers.js check sanity of its arguments
• Fixed: 817502 – Permanent orange: TEST-UNEXPECTED-FAIL | multiple-identities/test-display-names.js | test_no_header_name_in_abook_no_pdn (got ‘null’ but expected ‘My Buddy’)
• Fixed: 820306 – chrome://messenger/skin/messenger.css uses invalid ‘auto’ value for padding-bottom property

MailNews Core-specific: (6)

• Fixed: 594646 – If order of http-equiv and content in <meta> is reversed(<meta content=”…;charset=…” http-equiv=”Content-Type”>), charset in <meta> is applied to mail data coverted to utf-8. Thus, non-ascii characters are shown in garbled
• Fixed: 802135 – Replace nsresult equality tests with macros
• Fixed: 818250 – Possible crash with null m_identity in nsMsgCompose::ConvertAndLoadComposeWindow
• Fixed: 820377 – Port bug 819940 – remove EnumerateForwards/Backwards on nsISupportsArray
• Fixed: 821236 – Remove some unused functions that use nsISupportsArray and replace some instances of nsISupportsArray with alternatives
• Fixed: 821408 – Remove a couple of uses of nsISupportsArray.ElementAt

### Robert Kaiser

#### Thirteen

Being born on a 13th (just like my brother), I've always considered the number 13 as somewhat of a "lucky number" for myself. And today, it's been 13 years since I started contributing to Mozilla!

It's been an interesting ride for sure so far, as a localizer, theme designer, build patch contributor, project leader/coordinator/manager, even JS/XUL author, add-on and web app developer, and nowadays paid-by-Mozilla contributor in stability tracking - just to name a few of the main things.

In those 13 years, Mozilla has changed my life, and enabled me to make a living out of idealism. It's crazy and awesome at the same time, or, I guess, actually crazy awesome!

And now, we're looking forward to achieve great things in "the year 13" that's upcoming in just a few weeks, and where we'll be trying to deliver on the momentum we built in 2012 and even ship phones that make "the web is the platform" literally true with Firefox OS!

I'm excited to have been in this community for such a long time of thirteen years and to continue strong in being part of this great project - and looking forward to making things "moar awesome" in two-thousand-and-thirteen!

## December 13, 2012

### Robert Kaiser

#### No more weekly status reports

My stability tracking role at Mozilla recently has been slightly modified to be more tied in with release management, which brought some additional item onto my plate, a lot of that being some sorts of bug triage.

That also required me to rethink some other things I'm doing, and for that, I saw I couldn't make the time to do a weekly status update blog post any more. Also, the original incentive to start hose posts was that I considered myself funded by the community in the model I had some years ago and felt I need to report to the community what I'm doing for that - for almost two years now, I have been funded by Mozilla instead, and I'm accountable to my manager anyhow, and as we're restructuring how contractors are managed, I probably will have some more formalities there as well. All in all, the original incentives aren't there any more and the report have become pretty dull for some time anyhow, so I'm stopping them now.

I will do small posts more often on interesting things I work on and other thoughts I have - and I hope I even get to a larger post every now and then, but my time for stuff like that is very limited nowadays.

Of course, I'll also keep posting interesting snippets to Disapora*.

## December 10, 2012

### Rumbling Edge - Thunderbird

#### 2012-12-09 Calendar builds

Common (excluding Website bugs): (27)

• Fixed: 315959 – profile ICS calendar reading
• Fixed: 442087 – Setting % Complete in Edit Task dialog to <100% on previously completed task does not reset completed status
• Fixed: 561181 – Reminder “0 minutes before” is shown as “The moment the events starts” after restart
• Fixed: 589533 – Cursor at end of text of import calendar list pop-up/popup/window/dialog
• Fixed: 605201 – Updating an event results in a PUT to the wrong CalDav URL
• Fixed: 734245 – Thunderbird/Lightning ignores EXDATEs of type DATE when the DTSTART is of type DATE-TIME
• Fixed: 742528 – Read Only Disabled When Calendar Is Cached
• Fixed: 761178 – Malformed URL can cause Lightning to delete complete calendar file (CalDAV)
• Fixed: 794500 – Lightning linux build error ‘Requested ‘gtk+-2.0 >= 2.18.0′ but version of GTK+ is 2.10.4′
• Fixed: 795102 – Use MailServices.js where possible
• Fixed: 797266 – Icons on New Event and New Task buttons don’t get the “disabled” look with Aero theme
• Fixed: 797271 – In the code for month and multiday views there’s an attribute “today” that is not being used
• Fixed: 799643 – Current comm-central builds of GData extension use old and incorrect version 0.2pre
• Fixed: 800333 – Event context menu propose to change attendance in a readonly calendar
• Fixed: 800798 – Assembly errors compiling Linux-x86_64: No such instruction: pmulld %xmm6, %xmm0 (webrtc)
• Fixed: 803981 – “gdata-provider.xpi: The add-on downloaded from ftp.mozilla.org could not be installed because it appears to be corrupt.”
• Fixed: 806305 – unchecked “task” printing, should disable relative settings
• Fixed: 807586 – Task Toolbar Palette has duplicate ID
• Fixed: 807655 – Icons for reminder and privacy status get covered by the category strip
• Fixed: 808123 – Daily 19.0a1 crashes on launch due to ABI incompatibility – requires new Darwin_x86_64-gcc3 Lightning build
• Fixed: 808412 – Add “Open Calendar File…” to Calendar list context menu.
• Fixed: 812104 – Fix bustage due to UnwrapObjectChecked
• Fixed: 813948 – Copy/Paste event from a Google Calendar has non-Standard entries in VCALENDAR data
• Fixed: 815151 – Invitation replies are not shown (REPLY method, sender is null)
• Fixed: 815568 – Cannot remove any but last attendee in attendees dialog
• Fixed: 815815 – Minimonth bold days get reloaded (again) if clicked on day, using ‘Next’ and ‘Prev’ in day view does not
• Fixed: 816127 – Missing resource icons in attendees dialog

One can get the latest Lightning .xpis here.

Sunbird will no longer be actively developed by the Calendar team.

#### 2012-12-09 Thunderbird comm-central builds

Thunderbird-specific: (53)

• Fixed: 271730 – UI elements/widgets/controls in compose window should be disabled while the message is being sent (e.g. send button, options menu and attachments pane still wrongly enabled)
• Fixed: 339887 – Options > Format menu is unclear: should be “Send format” or similar
• Fixed: 349547 – Should not be able to open the same draft multiple times
• Fixed: 351924 – Thunderbird download options window points to a non-existing section – needs to be different from Firefox
• Fixed: 360809 – Default Client options disabled after making TB the default mail or news client (system integration dialog)
• Fixed: 516240 – Message > Archive does not work for .eml files or emails from attachments (cannot use archive command, doesn’t do anything) – Minimal fix: disable Archive where it doesn’t work
• Fixed: 728385 – [10.8] Include support for Mountain Lions “Notification Center” into Thunderbird
• Fixed: 735717 – chat – toolbar icon and tab icon are different
• Fixed: 760983 – [10.8] background.png needs to be resized for Mountain Lion
• Fixed: 767655 – New messages arrive sound file browser wont select ogg files
• Fixed: 767897 – Change access key of joinChatMenuItem
• Fixed: 787794 – fix some JS strict mode warnings that appear at Thunderbird startup
• Fixed: 791957 – New app menu doesn’t list keyboard shortcuts next to menu items
• Fixed: 792074 – Earlybird’s displayed keyboard shortcut for Chat (Ctrl+Shift+C) has no effect
• Fixed: 792105 – Permanent orange: TEST-UNEXPECTED-FAIL | test-content-tab.js | test-content-tab.js::test_content_tab_open | test-content-tab.js::test_content_tab_default_favicon
• Fixed: 794739 – Check Now button to make Thunderbird the default mail/news/rss application does nothing
• Fixed: 795989 – cleanup of folderpane icons
• Fixed: 799434 – Earlybird builds shouldn’t have profiling enabled
• Fixed: 800091 – in filter list dialog, indicate when a search on the filter names is applied and when there are no hits.
• Fixed: 801582 – Line length in the new IRC chat module not restricted or restrictable by option
• Fixed: 802459 – OOM crash if attaching too large file for filelink
• Fixed: 803835 – Address Book import of CSV files messes up on quoted fields
• Fixed: 803916 – filterHeader.label label in filterListDialog no longer wraps after bug 450302
• Fixed: 804001 – The “Check now” button in advanced preferences should be “Check now…” after bug 595723
• Fixed: 805826 – Change Box.com serviceURL to point to 25GB promotional page
• Fixed: 805953 – create a shared function to determine account tree row to click for account manager test files, instead of each test hardcoding its own assumptions
• Fixed: 806124 – Services undefined (but used) in connection.js
• Fixed: 806228 – Fix login to XMPP servers that implement XMPP v1.0, don’t support SASL, but advertise iq-auth support (eg. fastmail)
• Fixed: 806575 – Maintenance Service label cut-off
• Fixed: 806581 – Translate Facebook Chat
• Fixed: 807303 – Unprefix “-moz-initial” in comm-central
• Fixed: 807787 – Folder pane (tree widget) on linux wastes horizontal space
• Fixed: 808172 – convert Mutation Events to use MutationObserver in mail/
• Fixed: 809573 – opening attached .eml file triggers TypeError: msgHdr.folder is null
• Fixed: 809853 – Thunderbird Nightly on Mac and Linux is broken (doesn’t start – Couldn’t load XPCOM)
• Fixed: 810330 – Port Bio 1772 – IRC account disconnects on receiving action messages containing line breaks
• Fixed: 810573 – Port Bug 737786 to comm-central – Switch from :-moz-placeholder to ::-moz-placeholder (pseudo-class to pseudo-element)
• Fixed: 811920 – Message list highlight bar – insufficient contrast when list is blurred
• Fixed: 812101 – Account provisioner: First search with both Gandi & Hover checked, fails most of the time
• Fixed: 812126 – (unintentionally) double clicking on attachment runs two concurrent “save” task and corrupts the saved file.
• Fixed: 812130 – Increase the account provisioner timeout to greater than the server timeout
• Fixed: 812246 – Build bustage – error: nsMsgRDFDataSource.h – invalid use of member ‘nsMsgRDFDataSource::mObservers’ in static member function
• Fixed: 812877 – Rename purpleConversation -> prplConversation where appropriate
• Fixed: 812921 – Port chat/ changes from Instantbird to comm-central – 4
• Fixed: 812992 – ACCEPTED_MAR_CHANNEL_IDS and MAR_CHANNEL_ID not updated for Thunderbird in mozilla-esr17
• Fixed: 813299 – move the ‘#filter substitution’ line in *.xul files below the <?xml?> header
• Fixed: 813622 – Permanent orange: various oranges related to plugins
• Fixed: 813691 – Phishing toolbar needs to be updated to use new nsIUrlListManager interface
• Fixed: 814589 – Thunderbird’s Menu button has vertical lines on it that seem out-of-place
• Fixed: 814630 – Thunderbird 17.0 closes all windows if multiple are opened

MailNews Core: (77)

• Fixed: 80855 – fix hostnameIsIllegal() to properly check validity of hostnames and be more robust
• Fixed: 127399 – Allow sending emails with IDN based email addresses
• Fixed: 204350 – (message/rfc822) Attached email message window glitches (forward, reply, view source disabled)
• Fixed: 250187 – Reply all automatically converts multiple TO recipients to CC (should preserve original destination fields)
• Fixed: 290247 – add simple, scriptable interface for MIME-part conversion/display
• Fixed: 315367 – Filters’ Folder picker ['Copy To' and 'Move To'] is unusable with large numbers of folders
• Fixed: 327812 – No server name validation (checking) for POP3/IMAP/News/LDAP server, whereas enabled for SMTP
• Fixed: 371195 – odd “left” and “right” arrow images in the “Previous” / “Next” buttons in the table properties dialog
• Fixed: 390331 – Thunderbird does not configure Word XP (2002) “File, Send To: Mail Recipient” options
• Fixed: 392848 – message filter condition order incorrect within the list after editing (rule added to the end (bottom) of the rules/conditions list within the filter)
• Fixed: 394166 – Remove Utility Function usage, create using XPCOM in mailnews
• Fixed: 462083 – add nsIArray support to mailnews/base/util/iteratorUtils.jsm
• Fixed: 465339 – Find a sensible way around building in mailnews when touching mailnews/base, or document it everywhere
• Fixed: 479011 – Windows test failure in test_bug460636.js due to bug 476960
• Fixed: 495318 – add support for LIST (SUBSCRIBED) part of IMAP LIST-EXTENDED command (RFC 5258)
• Fixed: 498443 – S/MIME interoperability problems with Eudora; add smime-type=enveloped-data parameter
• Fixed: 525024 – Account manager does not allow properties with ‘.’ such as dobayes.mailnews@mozilla.org#junk
• Fixed: 536248 – Accounts are always expanded by default in account settings window
• Fixed: 579533 – Opening feed item in standalone msg window does not honor “article summary” pref
• Fixed: 670939 – Draft’s are saved in drafts subfolder but not synchronised with Gmail drafts folder
• Fixed: 702165 – crash [@ nsMsgQuickSearchDBView::OnSearchDone ] – .. – [@ nsMsgSearchSession::InterruptSearch] when change folders before search is finished
• Fixed: 723888 – crash SyncRunnable5<nsIImapMailFolderSink, nsIImapProtocol* … typically working with folder subscribe
• Fixed: 749200 – merge sortAccounts() function in AccountManager.js and serverCompare() in folderWidgets.xml
• Fixed: 773143 – Rename MOZ_ANGLE to MOZ_ANGLE_RENDERER [Port |Bug 772457 Remove compile-time option to disable ANGLE, replace it by an option to disable WebGL altogether (also disabling ANGLE)|]
• Fixed: 779990 – “Advanced…” button in Server Settings is in the wrong place
• Fixed: 785274 – Should return the error of CreateUnique in nsFolderCompactState::Init().
• Fixed: 787186 – Thunderbird clears news feed display window and list when refreshing feeds
• Fixed: 787982 – Add a wrapper at build/pymake/make.py that pulls in mozilla-central if necessary
• Fixed: 798669 – nsImapMailFolder::GetOfflineMsgFolder should be made accessible to js
• Fixed: 799821 – Folders misbehave when LSUB does not return mailbox flags
• Fixed: 800877 – 8BITMIME keyword ignored, BODY=8BITMIME absent in 8bit transfers.
• Fixed: 801644 – Incorrect return result check in nsSmtpProtocol::ProcessProtocolState
• Fixed: 802098 – Make nsIMsgComposeSecure scriptable
• Fixed: 802334 – Port |Bug 799391 – Remove libiw check| to comm-central
• Fixed: 802343 – Port |Bug 557000 – Correctly set GCC_VERSION on mingw| and |Bug 797793 – Disable format warnings on mingw| to comm-central
• Fixed: 802348 – Port |Bug 795662 – Update libpng to version 1.5.13| to comm-central
• Fixed: 802352 – Port |Bug 797049 – Disable C4351 as an MSVC warning about a change to be standards-compliant in MSVC2005 (!). Also sync up warning-disabling between configure.in and js/src/configure.in, and add comments about the warnings being disabled| to comm-central
• Fixed: 802365 – Sync NSS and NSPR versions in configure.in between comm-central and mozilla-central
• Fixed: 802375 – Port |Bug 697064 – Remove MOZ_CHECK_HEADERS(mmintrin.h) from configure.in| to comm-central
• Fixed: 802542 – Message size for IMAP folders incorrectly reported/updated in Tb 16
• Fixed: 803834 – Port Python version / virtual environment changes to comm-central
• Fixed: 803843 – IMAP mailfiles keep growing to gigabyte size
• Fixed: 803855 – Port __stdcall and ssize_t configure.in changes to comm-central
• Fixed: 803856 – Port using -mstackrealign to comm-central
• Fixed: 803862 – Port |Bug 722933 – add -MACHINE option for link.exe| to comm-central
• Fixed: 803914 – Port |Bug 791305 Use libjpeg’s color conversion code instead of our own| to comm-central
• Fixed: 804004 – Convert rest of Account manager files to Services.jsm and mailServices.js
• Fixed: 804008 – Convert mailnews/base/content/folderWidgets.xml to mailServices.js
• Fixed: 804639 – Package breakpadinjector.dll and configure.in changes from Bug 769048.
• Fixed: 804955 – View button in Message security of Compose window does nothing when the address has no certificate
• Fixed: 805446 – <Delete> key in Feed Subscriptions window does not work as expected
• Fixed: 806254 – Add back Growl support for TB / SM Aurora
• Fixed: 806616 – Port |Bug 740854 – Remove SYSTEM_MAKEDEPEND and MOZ_NATIVE_MAKEDEPEND and associated crap| to comm-central
• Fixed: 806760 – TB16 Redownloads messages / Constantly bringing folders “up to date” / horrible IMAP performance
• Fixed: 806762 – Thunderbird build is broken after Bug 792180 (error: ‘NS_UNLIKELY’ was not declared in this scope)
• Fixed: 807066 – Port changes to CL_INCLUDES_PREFIX and cl.py to comm-central
• Fixed: 807101 – fix logic in am-prefs.js::onCheckItem of disabling elements when the corresponding pref is locked and convert am-addressing.js to use this common function.
• Fixed: 807451 – Remove nsISignatureVerifier and/or nsISignatureVerifier::VerifySignature
• Fixed: 807488 – Remove build support for Photon, Irix and old Unix platforms
• Fixed: 808328 – Port |Bug 797745 – Move l10n-merge/relativesrcdir logic from config.mk into JarMaker.py, allow jar.mn to override| to comm-central
• Fixed: 808399 – Remove build support for BeOS and VMS
• Fixed: 808524 – remove unused folderTargetPopup class and binding
• Fixed: 808974 – Make the “Recent” submenu of folder picker also inherit the class of the parent menu.
• Fixed: 809321 – Source and destination overlap in mempcy in nsMimeRebuffer.cpp
• Fixed: 810707 – Port |Bug 704313 – Add proper, overridable <stdint.h> support to mfbt| to comm-central
• Fixed: 810709 – Port |Bug 792685 – Add a way to have automagically inherited variable definitions in Makefiles| to comm-central
• Fixed: 810711 – Port |Bug 677159 – Don’t allow to include config/config.mk twice| to comm-central
• Fixed: 810714 – Port |Bug 755724 part A – add makefile variable DIST_SUBDIR to ship code to a subdirectory of dist/bin| to comm-central
• Fixed: 812212 – SeaMonkey trunk fails to compile (nsIPop3Service.idl)
• Fixed: 812375 – Remove content_xtf.xpt from package manifest
• Fixed: 812999 – Specify stable revisions for extensions in comm-central’s client.py using commented-out variables
• Fixed: 814219 – nsMovemailService doesn’t build with external linkage anymore
• Fixed: 814391 – Permanent Orange: test_cspreports.js hangs for Thunderbird after bug 802905 landed (buildbot.slave.commands.TimeoutError)
• Fixed: 814967 – SeaMonkey trunk build failure (nsIMsgDatabase.idl)
• Fixed: 815340 – Fix some more nullptr abuse in comm-central
• Fixed: 816749 – Port UA changes from bug 591537/bug 815743 to comm-central
• Fixed: 818657 – Fix build failures due to prmem include removals

Official Mac (2012-12-08 build)

#### 2012-10-27 Thunderbird comm-central builds

Thunderbird-specific: (45)

• Fixed: 454507 – Contexts menu for links in emails “Copy Link Location” and “Copy” both uses C as accesskey
• Fixed: 476426 – Thunderbird needs a “NO” option for the initial “Use Thunderbird as the Default Client for” dialog
• Fixed: 494860 – [Central-European languages] Cannot add contacts if Thunderbird interface is set to non-English
• Fixed: 512968 – Zoom level in COMPOSE window cannot be reset to default 100% (e.g. via exiting/closing and re-opening the window)
• Fixed: 595723 – If Thunderbird is the default client for e-mail, newsgroups and feeds, the dialog only shows that Thunderbird is the default client for e-mail
• Fixed: 668756 – decimal separator according to TB locale version
• Fixed: 679696 – Identity picker on compose window is hard to use when you have a lot of identities
• Fixed: 728385 – [10.8] Include support for Mountain Lions “Notification Center” into Thunderbird
• Fixed: 738194 – Composition: Add keyboard shortcuts for Zoom (Ctrl++, Ctrl+-, Ctrl+0: ux-consistency with message reader), change shortcuts for font size to Ctrl+<, Ctrl+>
• Fixed: 739311 – Clicking “x more” button shrinks(!) message header height, so that *less* or even *no* recipients are in view [multiple, many, lots of recipients]
• Fixed: 748965 – convert mail/base/content/FilterListDialog.js and SearchDialog.js to Services.jsm and MailServices.js
• Fixed: 786606 – Chat shortcut key Ctrl+Shift+C doesn’t do anything – conflicts with keyboard shortcut for Lightning’s Calendar tab
• Fixed: 786684 – JS error (TypeError: match[1] is undefined) when parsing a JID without a node part.
• Fixed: 787925 – Permanent orange: TEST-UNEXPECTED-FAIL | test-cloudfile-backend-yousendit.js | test-cloudfile-backend-yousendit.js::teardownTest
• Fixed: 789745 – Cannot connect to XMPP servers that don’t support SASL authentication
• Fixed: 790234 – [10.6] crash in libunwind::UnwindCursor
• Fixed: 791542 – [TB17 test] IM account troubleshooting information is erroneous
• Fixed: 792392 – No special icon for secure connection in folder pane on linux
• Fixed: 792579 – Remove NS_TIME_FUNCTION from configure.in in comm-central
• Fixed: 792965 – Add icons to compose autocomplete list
• Fixed: 792979 – Attachment reminder is broken due to removal of nsIEditorObserver
• Fixed: 793838 – Feed body AppMenu items are not working anymore
• Fixed: 793888 – Separators in the message header pane toolbar are not visible, separator and space cannot be removed again from the header pane toolbar
• Fixed: 794880 – [Mac] The icon of the “Add Contact” and “Join Chat” toolbar buttons disappear when they are clicked while disabled
• Fixed: 794946 – Add mozmill tests for the chat toolbar and the central placeholder of the instant messaging UI
• Fixed: 794988 – Enable profiling on Daily builds
• Fixed: 795078 – Thunderbird does not see user online and can’t receive message from a contact with a singe quote in its resource
• Fixed: 795296 – Include the string that couldn’t be parsed in XML parse errors of the XMPP stream
• Fixed: 795959 – Typing “@gmail.com” as part of the username shouldn’t be required when setting up a gtalk account
• Fixed: 795971 – JavaScript strict warning: logger.js, line 453: assignment to undeclared variable entry
• Fixed: 798952 – Move sanitizeDialog.css to mail subdirectory
• Fixed: 799068 – Land in comm-central Instantbird’s changes to chat/ – 3
• Fixed: 799504 – Long retweets are cut off after 140 characters
• Fixed: 799596 – Thunderbird is unusable after bug 565717 landed
• Fixed: 800123 – Don’t hard code the contact photos in cardDialog
• Fixed: 800525 – wrapped nick causes extra height on secondary lines
• Fixed: 801261 – Adopt editContactOverlay to new light coloring
• Fixed: 802575 – AppMenu button doesn’t get added to Chat tab automatically
• Fixed: 802704 – [OS X] add LSApplicationCategoryType to the info.plist
• Fixed: 803724 – [OS X] Text of some toolbar icons are not lined up
• Fixed: 803811 – –with-system-zlib version detection broken after bug 781446
• Fixed: 804142 – Upgrade clang used by thunderbird
• Fixed: 804598 – Can not remove individual cookie

MailNews Core: (60)

• Fixed: 133605 – nsIMsgCompFields::[Set|Get]NewsHost is identical to nsIMsgCompFields::[Set|Get]NewspostUrl
• Fixed: 210608 – build warnings in nsImapMailFolder
• Fixed: 287969 – NS_IMETHODIMP AddShellToCacheForHost should not return PRBools
• Fixed: 304704 – Unable to subscribe to feed URLs passed from browsers (Mac)
• Fixed: 363238 – saved searches fail for searches on x-headers
• Fixed: 371174 – In <ComposerCommands.js>, 3 strict “Warning: redeclaration of property”, caused by function redeclarations
• Fixed: 436606 – “ASSERTION: RemoveCurrentDraftMessage can’t get draft id” involving message compose window
• Fixed: 543239 – Filter list no longer finds and selects filter using keyboard entry.
• Fixed: 543419 – Message Filters list not updated when already open
• Fixed: 545194 – Account Settings–>Server username and buttons “Advanced” and “Browse” are cut off
• Fixed: 561762 – Add additional error information to “This filter cannot be saved”
• Fixed: 642639 – errUtils.js’ logException should dump exceptions via Components.utils.reportError too for fancy mozmill logging
• Fixed: 669136 – crash [@ nsParseMailMessageState::FinalizeHeaders()], [libSystem.B.dylib@0x4123b | ParseString | nsParseMailMessageState::FinalizeHeaders ] (5.0, Mac )
• Fixed: 674742 – Compacting a Mail folder can delete all copies of the folder in certain error conditions
• Fixed: 678351 – dirSvc in mailShutdown.js should be an nsIDirectoryService
• Fixed: 681735 – Account central is too tall to fit into a small window (600px high) because of too large fixed spaces between items / groups of items on Windows and Linux.
• Fixed: 721316 – Use Gmail IMAP Extension of X-GM-MSGID, X-GM-THRID, X-GM-LABELS in addition to XLIST
• Fixed: 725488 – in Junk Settings, disable junk target folder pickers based on the radio selector (Junk on/Other), similarly to pickers on Copies & Folders
• Fixed: 736661 – outgoing server (SMTP) cannot be highlighted even though selected
• Fixed: 750666 – crash in nsPop3Sink::FindPartialMessages
• Fixed: 760126 – Reduce amount of preprocessing of content files – don’t pre-process out license headers
• Fixed: 769588 – Port bug 722872 – call the Init method after creating nsITransferable
• Fixed: 770262 – crash in mozalloc_abort … nsMsgSearchTerm::MatchBody
• Fixed: 775665 – Change Filter Context UI to checkboxes
• Fixed: 777287 – try to remove some unneeded XUL elements in the filter editor dialog
• Fixed: 782738 – crash at mail startup [@ nsParseNewMailState::MoveIncorporatedMessage]
• Fixed: 783289 – Fix return code issues revealed by nsresult changes in comm-central
• Fixed: 783491 – tweak outdated code in mail/base/content/FilterListDialog.js
• Fixed: 787557 – Thunderbird 15 inactive msg db close change prevents FolderLoaded events when folders are updated
• Fixed: 787982 – Add a wrapper at build/pymake/make.py that pulls in mozilla-central if necessary
• Fixed: 788012 – Build failure after bug 579517
• Fixed: 788429 – Add ability to open global Addressing preferences from account manager
• Fixed: 788607 – Add comm-central/build/pymake/make.py as a stub that runs GNU make
• Fixed: 790912 – Message shows wrong content (body text) after move to other folder
• Fixed: 791457 – MailNews calls synchronous nsIProtocolProxyService::Resolve which doesn’t exist any more since Bug 769764 removed it.
• Fixed: 793599 – convert mailnews/base/prefs/content/am-junk.js to Services.jsm
• Fixed: 794170 – Silence “equality comparison with extraneous parentheses [-Wparentheses-equality]” in nsMsgFolderDataSource.cpp
• Fixed: 794186 – remove remaining PRInt32/PRUint32 usages in comm-central
• Fixed: 794558 – Remove 2 unused vars in mailnews/base/src
• Fixed: 795085 – linux external api builds fail (nsString.h include in gfx/src/nsRegion.h)
• Fixed: 795562 – nsNntpIncomingServer allows to subscribe twice to the same newsgroup
• Fixed: 795707 – Selecting multiple PGP/MIME encrypted messages crashes Thunderbird
• Fixed: 795712 – Silence [-Wunused-private-field] warnings in mailnews/
• Fixed: 795736 – Silence some [-Wunused-variable] warnings in mailnews/
• Fixed: 795997 – Silence remaining[-Wunused-variable] / [-Wunused-private-field] warnings in mailnews/
• Fixed: 796085 – fix some “warning: variable ‘rv’ set but not used [-Wunused-but-set-variable]” gcc warnings in /mailnews
• Fixed: 796805 – Permanent orange: TEST-UNEXPECTED-FAIL | test_iteratorUtils.js | TypeError: childArray is null
• Fixed: 797452 – Intermittent build/macosx/universal/unify failure: “copyIfIdentical: files differ”
• Fixed: 797524 – Thunderbird build is broken after Bug 795065 (error: no matching function for call to ‘nsITransfer::Init…)
• Fixed: 797600 – Thunderbird 13+ no longer show nntp error messages
• Fixed: 797823 – Thunderbird build is broken after Bug 794884 (error: ‘SupportImageWithMimeType’ is not a member of ‘imgILoader’)
• Fixed: 798345 – Permanent orange: TEST-UNEXPECTED-FAIL | test_private_resume.js | TypeError: pb is null
• Fixed: 798789 – Enable gcc -Werror=conversion-null for gcc >= 4.5 for comm-central (port bug 778980)
• Fixed: 798828 – fix “warning: overflow in implicit constant conversion [-Woverflow]” in mailnews/local/src/nsParseMailbox.cpp
• Fixed: 801383 – Build is failing in comm-central MailNews code since m-c Bug 779473
• Fixed: 801541 – dbFrozen is an intermediate variable that should just go away
• Fixed: 801559 – Remove unused nsIMdbCompare
• Fixed: 803574 – Permanent orange: TEST-UNEXPECTED-FAIL | test_nntpPassword2.js application crashed
• Fixed: 805266 – Avoid extra make pass in mime/public

## December 06, 2012

### David W

#### SUMOMO Merge with Sumo

its official

Support.mozillamessaging.com is merging to sumo

## December 04, 2012

### Instantbird

Instantbird 1.3 became available on November, 15, and it comes with new features (you can see them clicking here). The Instantbird team is interested in offering this IM client to everyone, so there’s a new language in this release: Brazilian Portuguese - Sim, nós falamos Português!. Now Brazilians users can enjoy Instantbird in their language.

Additionally, Instantbird brought back the Russian language in this release. This language was in Instantbird since version 0.2, but it was not present in version 1.2. Thanks go out to our Russian localization team for making this possible!

Since the 0.2 release, Instantbird has been available in 5 languages - English, Finnish, French, Polish and Russian. The 1.0 release brought six more languages and now Instantbird is available in 13 languages!

The Instantbird team has a goal: ”to redefine the way instant messaging is used, to work the way you want.” To reach this goal, it’s necessary that Instantbird can be used by as many people as possible, in every country. So we encourage interested people to translate it to their languages. If you’re interested in helping us achieve this goal by creating new translations or improving Instantbird, you can get more information here.

## November 28, 2012

### Calendar

As you likely noticed, Lightning 1.9 was recently released. Aside from the common issues during an update, the most reported problem was that calendars were no longer working. In almost all cases, the solution for this issue is to also update the Provider for Google Calendar to version 0.18. A function in Lightning was changed that was used by the Provider version 0.17, hence the update.

For an unknown reason, the addons manager did not find the update of the Provider for Google Calendar to version 0.18. We have mitigated this by blocking the older version of the extension on addons.mozilla.org, but we have yet to find the reason this has happened in the first place.

The next release is still a while away, but if you experience issues in a future update, please make sure you are using the latest version of all relevant extensions.

If you are having a different error, please check out the Error Console in the Tools menu and comment with any relevant messages by comment. Also, in the advanced config editor (Preferences → Advanced → General → Config Editor) there is a preference called “calendar.debug.log” and “calendar.debug.log.verbose” which you can set to true to get additional messages regarding your problem.

### Agenda

• Who’s taking minutes? –> mconley

• Minute taking Schedule. Talk to Standard8 for schedule changes/additions.
• Note: this meeting is for interactive discussion. Feel free to ask questions!

#### Friends of the Tree

Thanks to our Friend of the Tree. When adding someone to this section, please get their T-Shirt size, phone number (needed for shipping!) and send it to abourcier@mozilla.com that she can send them a shirt!

• Roland nominates Vincent aka el cameleon for writing articles in English, French and keeping track of hot, breaking Thunderbird issues.Merci beaucoup!

#### Thunderbird Development

##### Feature Work
• Regression that I caught last week when importing contacts from the Mork address books is fixed. Hooray!

• I need to refactor the way we save contacts in the database, since that’s affected by the new connector interface
• I’ve started designing the “backend for the front-end”, so to speak. Nothing down yet, but soon.
###### Instant Messaging
• This section is getting removed because IM shipped! Woo!
##### Schedule and Progress
###### Beta Version
• Thunderbird 18.0b1 rolling out this week (start build on Wednesday, ship it on Thursday)

#### Extension of the week

• Did TB release stuff.

• Trying to figure out how to do new job and old job!
• Cleaning up Bugzilla components that is watching.

#### Build / Release Update

• Thunderbird 18.0b1 this week

• bug 815302 – [tracking] Build Thunderbird ESR and Mainline from a single repo

#### Web Update

• New Features page @: http://momo.last-chance.net/en-US/thunderbird/features

• Sandstone background and layout
• Font updated to Open Sans
• Footer needs a few minor alterations, and screenshots probably need to be retaken/cropped better. I resized them quickly with CSS so some are a bit blurry. Couple of other minor tweaks.
• Not sure what to do with the main landing page image.
• Probably going to use the octopus.

#### Support and Documentation

1. Again big thanks to all contributors (both volunteer and staff), past and preset, who helped support Thunderbird in the employee-driven phase. On to the next phase post Thunderbird 17! Can never give enough thanks!

2. Hot Thunderbird 17 Support Issues:
3. 915 new support topics (734 1 week ago ) – Media:19-25nov2012-tb-gs-stats.png
4. See this week’s Support Appendix for full Get Satisfaction metrics and other support details

See the Mozilla Status Board for status updates specific to developers.

#### Roundtable Highlights

• We’re getting a few conflicts wrt times for this meeting.

• Mark is going to be sending around mail to tb-planning about frequency and timing for the status meeting moving forward, as well as the content for the status meetings.
• No meeting next week until further notice.
• If you’re not on about:credits, go to about:credits, scroll all the way to the bottom for instructions on how to make that happen.

#### Attendees

Thunderbird Meeting Details :

Remember to use headphones and mute yourself when not talking

Feel free to ask questions in the meeting either by speaking up or by asking them in #maildev on IRC.

Other ways to get in touch with us can be found on our communications page

## November 23, 2012

### Blake Winton

#### Cleaning out your Firefox profile.

For a while now, I’ve been having problems with my Firefox profile. To be fair, it’s mostly because of random about:config tweaks I’ve made, but still, not being able to test the new SocialAPI stuff was pretty annoying. So I decided to try resetting my profile, to clear out all the junk, and hopefully even make it a little faster.

But, as the page I linked to just up there mentions, resetting your profile will lose your open tabs, windows and tab groups, which kinda sucks, because I have 57 open tabs, in various groups, and I really don’t want to lose them! Fortunately, I’m a programmer, so I hacked on Firefox to get it to save and restore my tabs, and now I’m a happy camper!

A couple of days later, one of my co-workers had some similar problems, and also wanted to re-set his profile to try and fix them. I hadn’t saved the results of my hacking, so I had to re-create it for him from a combination of memory and the documentation. The new code I came up with looked something like this:

var x = gBrowser.tabs
var rv = "var tabs = [\n"
for (var i = 0; i < x.length; i++) {
rv += '  "' + x[i].linkedBrowser.contentWindow.location + '",\n';
}
rv += '];\nfor (var i = 0; i < tabs.length; i++ ) {\n'


To run it, first open about:config, and make sure the devtools.chrome.enabled preference is set to true (double-click it if it isn’t, and it should switch automatically), then go to the Tools » Web Developer » Scratchpad menu item, which should open up a small new window with some javascript comments in it. While that window is focused, click on Environment » Browser, to make sure that you’re running the code in the browser’s chrome (instead of in the page’s content). Paste the code in, and click Execute » Display.

That should result in a bunch of code in grey surrounded by /* and */ that looks like:

var tabs = [
"http://weblog.latte.ca/blake",
"http://breakingtheegg.tumblr.com/",
];
for (var i = 0; i < tabs.length; i++ ) {
}


Copy that out of the scratchpad into your favourite editor, remove the /* and */, and run the profile reset.

Once you’re done resetting your profile, you’ll need to change the devtools.chrome.enabled preference to true again, and then re-open the Scratchpad, paste the new code you saved back in to it, click on the Execute » Run menu item, and shazam! All your tabs should be back (although they won’t be in their original tab groups. If anyone needs me to figure out how to do that, just let me know, and I’ll give it a try).

## November 21, 2012

### Agenda

• Who’s taking minutes? –> jhopkins

• Minute taking Schedule. Talk to Standard8 for schedule changes/additions.
• Note: this meeting is for interactive discussion. Feel free to ask questions!

#### Friends of the Tree

Thanks to our Friend of the Tree. When adding someone to this section, please get their T-Shirt size, phone number (needed for shipping!) and send it to abourcier@mozilla.com that she can send them a shirt!

#### Thunderbird Development

##### Feature Work
• It’s been a slow couple of weeks due to other project deadlines (because today is release day!)

• I’ve almost finished porting over the TB Mork Connector tests to the new interfaces. I think I’ve found a regression while I’m at it, so there’s that to fix as well.
• We’re going to have to come up with a new solution for whitelisting HTML mail from particular addresses – we don’t want to store that in the address book anymore.
##### Schedule and Progress
• Next merge date: 11 19

• For information about channels, point people here – http://www.mozilla.org/thunderbird/channel/
• merge scripts are now automated
• branding changes needed to allow mainstream and ESR branding to exist side-by-side in the same source repository

• .me promo

#### Build / Release Update

• closed bug 798361 – Make release automation work with mock slaves

• 18.0b1 and 17.0.1esr will be built using mock
• 17.0 + 17.0esr, 10.0.11esr released
• should not be getting ‘random red’ on Windows anymore

#### Web Update

• fixed several bugs with account provisioner last week related to bug 812101

• pushed out l10n for TB17 & ESR What’s New Pages
• Features page updates upcoming today asap
• planet.mozillamessaging.com is now at planet.mozilla.org/thunderbird
• both in sync for now, and will have a redirect in place soon

#### Support and Documentation

1. Thanks to all who helped support Thunderbird in the employee-driven phase. On to the next phase post Thunderbird 17!

2. Thunderbird 17 Support Day tomorrow November 21, 2012 – Starting NOW, please fill in the Thunderbird 17 Support Day Etherpad with Thunderbird 17 support issues
3. 734 new support topics (687 1 week ago ) – Media:12-18November2012-TB-GS-Stats.png
4. See this week’s Support Appendix for full Get Satisfaction metrics and other support details

•  :fallen has access to staging build environment to work through various build issues.

• Lightning is now being built along with Thunderbird to avoid the need for separate Lightning build infrastructure.
• still working on getting releases running.

See the Mozilla Status Board for status updates specific to developers.

#### Roundtable Highlights

• [jhopkins] beta release timing

• we will do our first beta on the second week, so no beta this week but beta next week instead.

#### Attendees

ludovic, rkent, dlech, mbanner, roland, wsmwk, jhopkins, irving, mconley, bwinton, jb, ambourcier, sancus, andreasn

Thunderbird Meeting Details :

Remember to use headphones and mute yourself when not talking

Feel free to ask questions in the meeting either by speaking up or by asking them in #maildev on IRC.

Other ways to get in touch with us can be found on our communications page

## November 20, 2012

### SeaMonkey

#### SeaMonkey 2.14 released

The SeaMonkey project is proud to present SeaMonkey 2.14: The new major release of the all-in-one Internet suite is available for download now! Building on the same Mozilla platform as the newest Firefox release, it delivers the latest developments in web technologies such as HTML5, hardware acceleration and improved JavaScript speed.

SeaMonkey 2.14 is available in 26 languages, for Windows, Mac OS X and Linux.

Most notably, this release features for the first time:

• OS X 10.6 is now the minimum supported Mac version
• JavaScript Maps and Sets are now iterable
• SVG FillPaint and StrokePaint have been implemented
• The sandbox attribute has been implemented for iframes, enabling increased security
• Fixed several stability issues

For a more complete list of changes in SeaMonkey 2.14, see the What's New in SeaMonkey 2.14 section of the Release Notes, which also contain a list of known issues and answers to frequently asked questions. For a more general overview of the SeaMonkey project (and screen shots!), visit www.seamonkey-project.org.

### Thunderbird Blog

#### Thunderbird menu bar facelift, ESR new release, new governance implementation…

This release of Mozilla Thunderbird comes with a new button on the right hand side, at the top of the window; called the Menu Button it provides more options to customize the user interface.

The Menu Button allows users to remove the Menu Bar from the top of the window in order to grant more real estate to read and manage emails. A right click on this same Menu Button gives access to the “customize” command and entitles the user to add, remove and re-arrange many icons on the bar. It really empowers the user to build its own personal interface.

Beyond this mainstream Thunderbird release and as planned, we are releasing the second Thunderbird Extended Support Release (ESR) targeted at large organizations. This ESR version is not only a security and bugs fix, but it contains all the great features that have been added to Thunderbird since January 2012. Please download here.

This release is also a milestone release and marks the beginning of the new governance model for Thunderbird. As mentioned in Mitchell’s blog post back in July, “Mozilla is focusing its efforts towards important web and mobile projects, such as Firefox OS, while Thunderbird remains a pure desktop-only email client.” Therefore, we proposed “to adapt the Thunderbird release and governance model in a way that allow both on-going security and stability maintenance, as well as community-driven innovation and development for the product.”.

This has been actively discussed with the community during the last few months, and now is the time to implement the plan. If you are interested in more details, please have a look at the wiki pages describing our collective work.

If you are a developer, a translator or just want to join the Thunderbird project, please click on this link.

### Mark Banner

#### planet.mozillamessaging.com is moving

As part of tidying up some of our websites we’re moving the existing planet.mozillamessaging.com to planet.mozilla.org/thunderbird.

Both sites are currently functional and show the same blogs, however planet.mozillamessaging.com will become a redirect very soon. When the redirect happens, you’ll hopefully be fine, but you may want to update your links and feed urls now.

## November 16, 2012

### Instantbird

#### Instantbird 1.3 Released!

We’ve released Instantbird 1.3 (get your copy here)!  This update includes some nice improvements, which are fully outlined in the release notes.  A few changes of note are:
• IRC: Long messages will now be sent in multiple parts, and more authentication methods are supported to connect e.g. to Freenode.
• Twitter: Replying to a tweet now replies to all users, just like on the Twitter website!
• User’s nicknames are now highlighted when mentioned in a chat.
• Two new social networks were added: Odnoklassniki and VKontakte.
• Various connection issues with Twitter and XMPP based networks were fixed.
• Accessibility improvements.
Unfortunately, this will be the last release to support Mac OS 10.5 and PPC, as we will be unable to support these once we upgrade Instantbird to Mozilla 17.
We’ve got plenty of interesting new features and ideas for upcoming versions of Instantbird!  We will update to a more recent version of Mozilla with awesome new features, imagine all the cool things we can do with technologies like WebRTC!

## November 14, 2012

### Robert Kaiser

#### Weekly Status Report, W44/2012

Here's a short summary of Mozilla-related work I've done in week 44/2012 (October 29 - November 4, 2012):
• CSI:Mozilla / CrashKill:
Filed a bug on sending an identifier with app crashes in B2G.
Also filed a Flash beta crash.
Discussed release channels for B2G and Socorro requirements.
And we needed another Socorro data backfill, unfortunately.
Added highlighting of the latest minor version of every Flash branch to the Flash hang overview reports.
Also adjusted the limit values for the "Are We Stable Yet?" dashboard and converted some style attributes to classes in my reports.
Had a long discussion with bjacob on getting new fields into Socorro data. We should find a way to make it easy to get new fields added in a way that (at least custom) reports can be generated against them, without using the mess that "App Notes" are right now.
Followed the recent Flash crash spike.
Did more monitoring of tracking+ crash bugs for 17.
As usual, watched new/rising crashes, caring that bugs are filed where needed, and made sure my custom reports keep working well.
• Web Apps:
Fixed some glitches in the improvements to the Mandelbrot app, but there seems to still be an issue with appCache - on my otoro device, I don't see the main index.html getting refreshed and so the app stops working.
I also did quite a few updates to Lantea Maps, but now the map tiles seem to not load when appCache is active. Somehow I have a feeling that our techniques for offline apps are not working as well as they should.
• Various Discussions/Topics:
B2G testing, Marketplace URL and branding strategies, etc.

Due to my traveling to London for MozFest, I completely missed making this report public even though I had finished it up before. Will follow up with a report for last week soon.

### Agenda

• Who’s taking minutes? –> irving (again?)

• Minute taking Schedule. Talk to Standard8 for schedule changes/additions.
• Note: this meeting is for interactive discussion. Feel free to ask questions!

#### Friends of the Tree

Thanks to our Friend of the Tree. When adding someone to this section, please get their T-Shirt size, phone number (needed for shipping!) and send it to abourcier@mozilla.com that she can send them a shirt!

• David Lechner has been working on various patches for Thunderbird, including patches with tests.

#### Thunderbird Development

##### Feature Work
• More or less finished migrating the TB Mork connector over to the new interface

• Still need to re-jig / re-enable some tests for the new approach
• Hopefully starting some UI work later this week or early the next.
##### Schedule and Progress
• For 17 onwards, we will be relaxing the rules slightly for the stability & security updates to allow more bug fixes, assuming they don’t break the standard rules of no-L10n changes, not breaking extensions.
###### Beta Version
• Final beta out tomorrow

• This has the fix in for the downloading of emails multiple times bug, that has been seen with some imap servers & specific types of email.
###### ESR
• ESR 10 going to build sometime this week, with ESR 17 following when its ready.

#### Extension of the week

• Thunderbird 17 preparations and checking on crashes and making sure bugs have been filed.

• getting tools in line for TB17 release: blog post, what’s new page.

• working with Gandi registrar on a program: any TB user can get a free .ME email address from Nov 15th to Dec 31st, 2012
• finalizing Engagement contributor briefing

#### Build / Release Update

• Thunderbird 17.0b3 this week

• CentOS6/mock release configs patch completed for merge day next week bug 798361

#### Support and Documentation

1. Please help us test TB 17 beta. It’s our long term release for a year so we’d like its quality to be high and therefore we need to test it now with your add-ons, anti-virus and POP. Also TB17 beta fixes the spellcheck bug in TB 16, bug 790475

2. 687 new support topics (1186 1 week ago ) – Media:5-11november2012-gs-tb.png – Why fewer topics? Probably because we revamped en-US/kb/ask page in bug 751734 and bug 807146 (thanks to Vincent, Wayne, Matt, gozer and sancus for their help with this!)
3. See this week’s Support Appendix for full Get Satisfaction metrics and other support details

See the Mozilla Status Board for status updates specific to developers.

#### Roundtable Highlights

• Who is the list of people provided on the Thunderbird by Mozilla? See the proposed governance model

• Are the ADU stats for Thunderbird going to be public?
• We are working with the metrics team as to what can be made public
• Can we share income information of Thunderbird at as a whole?
• JB will discuss internally.
• In the past, Beta has been the pre-release version of the software, but now it is more of an early-adopter, could we promote it as such?
• Firefox doesn’t seem too concerned about branding Firefox Beta as something close to Firefox Release. Promoting the relationship between the two doesn’t seem to cause damage.

#### Attendees

Thunderbird Meeting Details :

Remember to use headphones and mute yourself when not talking

Feel free to ask questions in the meeting either by speaking up or by asking them in #maildev on IRC.

Other ways to get in touch with us can be found on our communications page

## November 08, 2012

### Joshua Cranmer

#### Autotools, how I hate thee

When writing custom passes for a compiler, it's often a good idea to try running them on real-world programs to assess things like scalability and correctness. Taking a large project and seeing your pass work (and provide useful results!) is an exhilarating feeling. On the other hand, trying to feed in your compiler options into build systems is a good route to an insane asylum.

I complained some time ago about autoconf 2.13 failing because it assumes implicit int. People rightly pointed out that newer versions of autoconf don't assume that anymore. But new versions still come with their own cornucopias of pain. Libtool, for example, believes that the best route to linking a program is to delete every compiler flag from the command line except those it knows about. Even if you explicitly specify them in LDFLAGS. Then there's this conftest program that I found while compiling gawk:

/* Define memcpy to an innocuous variant, in case <limits.h> declares memcpy.
For example, HP-UX 11i <limits.h> declares gettimeofday.  */
#define memcpy innocuous_memcpy

/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char memcpy (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers.  */

#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef memcpy

/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply.  */
#ifdef __cplusplus
extern "C"
#endif
char memcpy ();
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS.  Some functions are actually named
something starting with __ and the normal name is an alias.  */
#if defined __stub_memcpy || defined __stub___memcpy
choke me
#endif

int
main ()
{
return memcpy ();
;
return 0;
}


…I think this code speaks for itself in how broken it is as a test. One of the parts of the compiler pass involved asserted due to memcpy not being used in the right way, crashing the compiler. Naturally, this being autoconf, it proceeded to assume that I didn't have a memcpy and thus decided to provide me one, which causes later code to break in spectacular bad function when you realize that memcpy is effectively a #define in modern glibc. And heaven forbid if I should try to compile with -Werror in configure scripts (nearly every test program causes a compiler warning along the lines of "builtin function is horribly misused").

The saddest part of all is that, as bad as autoconf is, it appears to be the least broken configuration system out there…

## November 07, 2012

### Agenda

• Who’s taking minutes? –> irving

• Minute taking Schedule. Talk to Standard8 for schedule changes/additions.
• Note: this meeting is for interactive discussion. Feel free to ask questions!

#### Friends of the Tree

Thanks to our Friend of the Tree. When adding someone to this section, please get their T-Shirt size, phone number (needed for shipping!) and send it to abourcier@mozilla.com that she can send them a shirt!

#### Thunderbird Development

##### Feature Work
• Slow week – mostly complete moving my Mork connector over to the new connector interface

• Once that’s done, according to the roadmap, I’ll start hacking on the first iteration of the UI.

#### Build / Release Update

• Thunderbird 17.0b2 released last week

• centos6/mock automation landed today. config changes will land for 18.0b1. bug 798361
• beta this week? not optimistic about it. please keep #build in the loop

#### Web Update

• Still deep in porting moz.org to bedrock

• worked on Mozillians a bit last week
• Automated Start Page code should be ready for testing by the end of this week
• committed to moving SUMOMO content over to SUMO for week of Dec 11

#### Support and Documentation

(SUMO offsite in San Francisco last week)

1. Please help us test TB 17 beta. It’s our long term release for a year so we’d like its quality to be high and therefore we need to test it now with your add-ons, anti-virus and POP. Also TB17 beta fixes the spellcheck bug in TB 16, bug 790475

2. 1186 new support topics (1280 two weeks ago ) – Media:Tbgs-29oct-4nov-2012.png
3. See this week’s Support Appendix for full Get Satisfaction metrics and other support details

See the Mozilla Status Board for status updates specific to developers.

#### Attendees

Thunderbird Meeting Details :

Remember to use headphones and mute yourself when not talking

Feel free to ask questions in the meeting either by speaking up or by asking them in #maildev on IRC.

Other ways to get in touch with us can be found on our communications page

## October 31, 2012

### Agenda

• Who’s taking minutes? –> Ludovic

• Minute taking Schedule. Talk to Standard8 for schedule changes/additions.
• Note: this meeting is for interactive discussion. Feel free to ask questions!

#### Friends of the Tree

Thanks to our Friend of the Tree. When adding someone to this section, please get their T-Shirt size, phone number (needed for shipping!) and send it to abourcier@mozilla.com that she can send them a shirt!

#### Thunderbird Development

##### Feature Work
• Some low-level restructuring to encourage code-reuse

• Started moving Mork connector over to new interface
• Started to move over to using DeferredTask and Promises.
###### Instant Messaging
• a few patches for 17 in the queue (eg Fastamil interop for IM)
##### Schedule and Progress
• 16.0.2 and 10.0.10esr released, fixing further security issues mainly due to core code. Also fixed an IMAP download issue.
###### Beta Version
• Last week’s beta was delayed due to the security issues, should be getting a new beta this week.
###### Earlybird
• A spellcheck issue that exists in release bug 790475 has been patched in Daily and Earlybird.

• Please test HTML mail with non-default fonts, and make sure that spellcheck behaves. Thanks!

• Figuring moztrap

#### Build / Release Update

• Thunderbird 17.0b2 ‘go to build’ expected today (bug 797853)

• using bhearsum+rail’s new release automation web interface to start this build.
• Move to CentOS6 + mock build platform targetted at 18.0b1

#### Web Update

• internet is being difficult so I might not be on Vidyo

• fixed mozcom-cdn references on the website, I think I got them all, but if you see any errors related to “mozcom-cdn.mozilla.net” let me know.

• Philipp was at calconnect, lots of good stuff happening there:

• Tested autodiscovery extension, good results for most servers

• Tested delgation/counter patches, UI is good but not fully functional yet
• Learned about some new and emerging standards
• Changing ical.js backend format to the JSON format proposed by some calconnect folks
• Lightning 1.9 betas were out early, which worked pretty nicely.

• Lightning 1.9 betas has some small regressions, but nothing major
• Build System integration work is progressing, initial support will land soon
• Please test Lightning 1.9 betas extensively!

See the Mozilla Status Board for status updates specific to developers.

#### Roundtable Highlights

• The proposed Governance and Release Model document has been updated, and descriptions for the module owner and release drivers that have previously been discussed put in place. See the thread on tb-planning for more information.

• We’re looking to “finalise” this as the way forward from the Thunderbird 17 release.

#### Attendees

andreasn, Irving, mconley, bwinton, florian, jb, Usul, standard8, Fallen

Thunderbird Meeting Details :

Remember to use headphones and mute yourself when not talking

Feel free to ask questions in the meeting either by speaking up or by asking them in #maildev on IRC.

Other ways to get in touch with us can be found on our communications page

## October 30, 2012

### Robert Kaiser

#### Weekly Status Report, W43/2012

Here's a short summary of Mozilla-related work I've done in week 43/2012 (October 22 - 28, 2012):
• CSI:Mozilla / CrashKill:
Filed a bug on an extreme spike in Flash crashes this week, apparently related to Zynga games.
Also filed another bug on another aggregation data backfill needed in Socorro due to another late metrics data push.
Monitored tracking+ crash bugs for 17, so we get the best stability we can in this release.
Kept following the developments in B2G crash reporting, things seem to be moving forward nicely now.
Did some maintenance on my custom reports.
As usual, watched new/rising crashes, caring that bugs are filed where needed, and made sure my custom reports keep working well.
• German L10ns:
Reviewed Firefox mobile and desktop localizations for the 18 cycle, and more Firefox OS strings.
Tried fixing a hard to understand phrase in German SeaMonkey and fixed another small bug there as well.
Checked in the sandstone theme for planet.mozilla.de - thanks to Jan for putting it together!
• Themes:
Put some more finishing touches on the 2.14 version of my themes, esp. LCARStrek adaptiations for Social API support in Firefox.
• Web Apps:
Worked on some improvements esp. for the Mandelbrot app, so it can save prefs (still need to figure out loading them in a quasi-sync mode) and have more of the settings the add-on version also has. Also started off the DB I'll need for bookmarks, even if there's no implementation of bookmarks yet.
• Various Discussions/Topics:
B2G testing, B2G geolocation, platform meeting format, etc.

When working on the Mandelbrot app for a bit on Sunday, I found again that appCache is tricky to use when it comes to updating. On my mobile devices, I apparently ended up with the app only being partially updated to the new version. I guess I need to dig deeper on how to make this work smoothly...

## October 29, 2012

### Rumbling Edge - Thunderbird

#### 2012-10-27 Calendar builds

Common (excluding Website bugs): (30)

• Fixed: 694024 – Opening the invite attendees dialog displays the timeline starting at midnight, not around the time of the event
• Fixed: 723610 – When modifying an event, Lightning also tries to also modify the organizer (and fails)
• Fixed: 746434 – Add unit tests for the alarm service
• Fixed: 760243 – Lightning enabled in TB trunk – Assertion failure: !connections[i]->ConnectionReady(), mozStorageService.cpp:852
• Fixed: 765806 – Fix on-push build trigger by reverting local changes on the master
• Fixed: 774211 – PUBLISH does not allow update (SEQUENCE)
• Fixed: 782152 – Replace DOMMouseScroll with wheel event
• Fixed: 785580 – Lightning Calendar/Task icons don’t show up in the SeaMonkey All-Tabs popup menu.
• Fixed: 787780 – Add Support for current-user-principal / “group calendar” synchronization fails
• Fixed: 788004 – No email send after invitation creation if offline cache is enabled [Exception... "'TypeError: aItem.calendar.canNotify is not a function' when calling method: [calIOperationListener::onOperationComplete]“
• Fixed: 788267 – Replace calRecurrenceDate.cpp with a JS implementation
• Fixed: 790364 – When printing calendars in weekly or monthly grid view all tasks are shown as crossed out
• Fixed: 790590 – Repeating events are not always synchronized if offline cache is enabled [Error syncing items: TypeError: oid.parent is not a function]
• Fixed: 791983 – Save users from polluting their dist/bin when building Lightning
• Fixed: 792061 – Print Weekly Schedule Includes Incorrect Data & Dates
• Fixed: 792884 – Event dialog broken due to FileLink feature [Error: ReferenceError: cloudFileAccounts is not defined]
• Fixed: 793262 – JavaScript Error: “this_ is not defined” on any new calendar item
• Fixed: 794212 – Debug build: Assertion failure and crash when starting drag and drop in calendar view
• Fixed: 794220 – Warning: Chrome file doesn’t exist: [...]\chrome\calendar\skin\calendar\calendar-event-dialog-reminder.css and [...]\chrome\calendar\content\calendar\calendar-daypicker.css
• Fixed: 794477 – jsDate setter can’t handle a wrapped JS::Value
• Fixed: 794585 – Monthly layout: unnecessary additional empty week row printed if last day of month is last day of print range
• Fixed: 794628 – Console is flooded and trashed with calFilterProperties debug messages
• Fixed: 795342 – Toolbars in Task/Calendar tabs missing due to undefined entities in SeaMonkey.
• Fixed: 797251 – Marking a task completed with no task selected causes task list to scroll to an invalid row
• Fixed: 798762 – Automatic update for nightly builds not working because update.php script returns wrong version number
• Fixed: 798783 – Incorrect usage of nsCAutoString instead of nsAutoCString
• Fixed: 799067 – Compile error: calDateTime.cpp(636) and calDateTime.cpp(641) : error C2660: ‘js_DateIsValid’ / ‘js_DateGetMsecSinceEpoch’ : function does not take 2 arguments
• Fixed: 800524 – Privacy status “Google Default” (CLASS:DEFAULT) breaks display of privacy icon in calendar view
• Fixed: 801680 – Mac OS X comm-aurora lightning build failure [configure: error: installation or configuration problem: C compiler cannot create executables.]
• Fixed: 804302 – Set em:minVersion to actually supported versions

One can get the latest Lightning .xpis here.

Sunbird will no longer be actively developed by the Calendar team.

## October 25, 2012

### Robert Kaiser

#### Weekly Status Report, W42/2012

Here's a short summary of Mozilla-related work I've done in week 42/2012 (October 15 - 21, 2012):
• CSI:Mozilla / CrashKill:
Went through all the tracking+ crash bugs for 17, 18 and 19 that are not fixed in those "trains" right now, and cared that they are updated and patches get uplifted where possible.
Kept tracking B2G crash reporting, the things we need are all moving forward right now.
Tested reporting of content crashes from B2G phones.
Did some small patches to keep my custom reports working well.
Had some discussions on possible Socorro improvements.
Filed a bug on better signatures for aborts.
As usual, watched new/rising crashes, caring that bugs are filed where needed, and made sure my custom reports keep working well.
• Various Discussions/Topics:
B2G testing, Italy workshop, plugin crashes and URLs, Linux OMTC, click-to-play blocklisting, web app submissions, B2G L10n, etc.

I spent this weekend in Torino, Italy, for a workshop with students, and held a session there on how we go for measuring stability and investigating crashes. I wonder how many such sessions it takes to get more people to help us there. It's not hard to get in, but monitoring reports might sound tedious - but when you find a problem and it actually gets solved because of that before it hits too many users, it's a good feeling that you saved people out there from problems!

## October 24, 2012

### Agenda

• Who’s taking minutes? –> TBD

• Minute taking Schedule. Talk to Standard8 for schedule changes/additions.
• Note: this meeting is for interactive discussion. Feel free to ask questions!

#### Friends of the Tree

Thanks to our Friend of the Tree. When adding someone to this section, please get their T-Shirt size, phone number (needed for shipping!) and send it to abourcier@mozilla.com that she can send them a shirt!

#### Thunderbird Development

##### Feature Work
###### Instant Messaging
• App menu in chat tab automatically landing very soon
##### Schedule and Progress
###### Beta Version

Probably another beta this week. Today or tomorrow
Ludovic wonders about usage number on Beta. We’re at about 20K – this is a stable number. We currently have a very homogeneous group on Beta. Nobody using antivirus, on other providers than gmail, dovecot, only plaintext e-mail. We need new beta testers.

#### Extension of the week

No extension of the week

• Moved our test cases from Litmus to moztrap

• We lost 4 tests in the process.
• Post 17 wants to have a day when people can play with moztrap.
• Reason for the move to moztrap was that Litmus is going away.
• Working on bubbling up bugs for devs past 17 should get something out this week.

Question from Ludovic: What is going on with Twitter and Facebook pages. Do we have a volunteer to do this in the future? Ludovic will send an e-mail to the list about it.

#### Build / Release Update

Nothing to report

#### Web Update

• TB 16->17 Compat update done, will go out early — LAST COMPAT UPDATE YAY

• Will write documentation on how this works for future uses.
• Engagement off-site last week. Tiring.

#### Support and Documentation

1. Support Meeting, Wednesday October 24, 5:30a.m. Pacific in the Thunderbird Vidyo room – Please fill out 24 Oct 2012 Support Meeting Etherpad and join us if you can

2. Thunderbird 16.0 Support Issues of the week :
3. 1280 new support topics (1280 one week ago ) – Media:15-21October2012-GS-TB-Part1of2-Community_stats_for_Mozilla_Messaging.png, Media:15-21October2012-GS-TB-Part2of2-Community_stats_for_Mozilla_Messaging.png
4. See this week’s Support Appendix for full Get Satisfaction metrics and other support details

Nothing to report.

See the Mozilla Status Board for status updates specific to developers.

#### Attendees

standard8, usul, mconley, sancus, andreasn, rolandtango, kent, irving

Thunderbird Meeting Details :

Remember to use headphones and mute yourself when not talking

Feel free to ask questions in the meeting either by speaking up or by asking them in #maildev on IRC.

Other ways to get in touch with us can be found on our communications page

## October 22, 2012

### Mike Conley

#### Contact Service Connector Interface Proposal Draft

Thunderbird’s new address book will not exist in a vacuum. From the get-go, I’d like to bake-in the notion that contacts can exist outside of Thunderbird, and can be sync’d with.

There are lots of different contact providers I’d like to support. Mainly, CardDAV (which got a big boost since Google’s announcement), LDAP, the System Address Book, and Facebook.

I’ve been working on an interface (the application-programming kind – not the user kind) for contact provider connectors. It’s not been easy trying to generalize across each of the different features and requirements of these contact providers, but I think I got somewhere.

Anyhow, here’s a draft of my interface proposal. Are there any glaring holes?

## October 21, 2012

### Calendar

#### Having trouble with Lightning 1.8 ?

I have heard a few reports that calendars are not showing after upgrading to Lightning 1.8. I’d really like to get to the root of the problem and find out if this a code regression or something different. If you are having trouble please comment with the following information:

• Make sure you are using the right version combination: Lightning 1.8 is compatible to Thunderbird 16.
• Do you have any other addons installed? I’ve heard about some trouble with the “Calendar Tweaks” extension for example.
• Open Tools → Error Console and tell me about any error messages you see there
• Are any calendars no longer in the calendar list on the left side?
• What kinds of calendars do you have? Local? CalDAV? Google Calendar via the Provider? Other?
• If you are using the Provider for Google Calendar, what version do you have installed?

Update, with a few common issues:

• If you are using the Calendar Tweaks Extension, make sure to update to version 4.3.
• If you are using Lightning 1.8 and the Provider for Google Calendar, please make sure you are using Provider version 0.17
• If you have a virus scanner that quarantines files, please make sure calbasecomps.dll is not quarantined. Reinstalling Lightning might help.