Mozilla brings instant messaging via WebRTC in Firefox 41
MOZILLA HAS announced its latest release of the Firefox browser, which brings some new personalisation options as well as extra functionality to its instant messaging platform, Firefox Hello. Firefox 41 becomes the first browser to include instant ...
Mozilla Firefox 41.0 Lands in All Supported Ubuntu OSes, Users Urged to ...Softpedia News
Mozilla to improve Firefox's search interface in Firefox 43Ghacks Technology News
Mozilla's latest Firefox browser comes with instant messaging, account profileFinancial Express
alle 21 nieuwsartikelen »
Mozilla Firefox zoptymalizowany dla Onet 32.0.1
Mozilla Firefox zoptymalizowany dla Onet to specjalna odmiana popularnej przeglądarki stron internetowych, która została przygotowana z myślą o osobach korzystających z polskiego portalu Onet.pl. Aplikacja jest wyposażona w szereg dodatków, które ...
RAM-Optimierung, Messaging und mehr Neue Funktionen in Mozilla Firefox 41
Open-Source-Tool mit neuen Features: Mozilla Firefox hat in der neuen Version 41 gleich mehrere neue Funktionen zu bieten. Zu den spannendsten Neuerungen zählen etwa die Unterstützung von Instant-Messaging für Firefox Hello, RAM-Optimierungen ...
Mozilla: Firefox 41 bringt leichte Verbesserungen bei Addons und ChatGolem.de
Mozilla: Firefox 41 mit verbesserter SpeichernutzungComputerBase
Mozilla Firefox 41 ist daIT Magazine
alle 10 nieuwsartikelen »
the following changes have been pushed to bugzilla.mozilla.org:
-  change the suggested fxos 2fa app (again)
-  Backport upstream testsuite changes to test against bug 1202447
-  Feature request: STR and regression-range pulldowns
-  extend 2fa protection beyond login
-  the ‘last seen’ value in the group membership report should use a profile’s last-seen date, not the cookie
discuss these changes on mozilla.tools.bmo.
Filed under: bmo, mozilla
Cameron Kaiser: Sandboxin' Safari on PowerPC (because plugins can't be trusted, and neither can you)
When I started getting alarms that oslo was unresponsive from the systems that couldn't dump backups on it anymore, I tried to bring it back up after work and noticed I was missing the array's core HFS+ volume (the array is partitioned into three). While the array's UFS volume seemed intact, none of the files verified; worse, not only was the HFS+ volume on it completely hosed, DiskWarrior actually crashed trying to repair it after throwing an error I'd never seen before (2351, -36 in case anyone is searching in the future).
Now, this is a backup array, so it could be dispensed with, but I wanted to understand what was going on first before wiping it. In the interest of ruling out the controller, I first decided to see if it was a problem with the array hardware and connected the RAID over FireWire to the iBook instead. To my surprise and delight, the files on the UFS volume checked out! I quickly booted DiskWarrior on the iBook and managed to get the HFS+ volume repaired -- it was pretty hideously mangled but spot checks on the files seemed to validate. So that ruled out the array.
At this point I concluded it must have been something wrong with the FW800 card. I'm notorious for keeping large amounts of spares on hand, so I got a spare FW800 card out that I'd bought as a Fry's special six years ago, pulled the old one from the bottom slot and installed the new one in the same place, and connected the array. This time, no volumes mounted, and System Profiler actually crashed when I asked it to enumerate FireWire devices. I powered off the system and said something intemperate, then started to wonder if it was something about the slot or (grr) the logic board. Fortunately, I could dispense with the Grappler+ since it was just occupying space, so I pulled that and put the new card in its slot instead. Everything mounted. Whew! Conclusion: bad PCI slot, possibly bad card as well, not clear if or which one caused the other, but I'm not going to take chances -- that card's going in the eWaste bin. Either way, the moral of this story is to not only keep backups, but keep spare parts on hand, because you never know when you'll need them. And oslo has a complete body double in the stock closet for the day it might blow its logic board entirely. Still, not bad for a machine that was built 15 years ago.
Now to the main event. I mentioned a while back a couple of secret projects I've been working on, and while one of them is probably going to get invalidated by Google again in the very near future, this second one has bigger import: no less than a safer, sandboxed way to run Flash and other plugins on Tiger. Let me introduce you to SandboxSafari.
First, let's be painfully clear about two important points: both Flash and Java remain unsafe to run on Power Macs, and TenFourFox's no-plugins policy remains inviolate. That's not ever going to change. But there are still sites people want to visit that insist on requiring a plugin and some of the sites either still work or can be coerced to work with the older version of Flash Player available for PowerPC. While not all the problems can be mitigated, it seemed to me that there could be a safer way of doing so that would reduce a potential attack profile.
Because our primary operating system of interest is Tiger (Leopard is supported, but I've always been frank that the best reason to still own a Power Mac is to run Classic apps, and that means 10.4), we can't use the Leopard sandbox, and the Leopard sandbox has at least one sandbox escape that was never fixed (though I suppose in the future it could be part of a blended implementation). So SandboxSafari takes a different approach: it runs a very limited WebKit instance in a separate process as nobody so that it doesn't run within TenFourFox or even run as you. By limiting the functionality it exposes and the privileges it can wield, it reduces the chance of an unsafe operation because it can't do many such operations.
In fact, SandboxSafari is so limited you can't even use it as a regular browser; there's no tabs, no downloads, only a single window and almost no chrome except for a right-click context menu for navigation. You feed it URLs through Launch Services, not through a typical address bar -- because there isn't one! It can't even save its own settings, nor can any plugin it instantiates, let alone anything else. The overriding idea is "as little as possible to go wrong."
So how do you use it? TenFourFox integrates with SandboxSafari through an enabler add-on included in the package. Let's say you're on one of those troublesome sites and you need Flash to operate on it. Just right-click on an open area of the page and from the context menu select the option to pass the URL to SandboxSafari (or pass it and close the tab simultaneously, such as a video site you don't need to keep open in TenFourFox). SandboxSafari will open to that URL; when you're done, just close the window and it will return to the previous app (invariably TenFourFox). You can drive SandboxSafari from your own application with AppleEvents, btw; see the openurl tool in the source code bundle.
SandboxSafari is not at all complete protection. Even though crashes are limited to the SandboxSafari process, it may still be possible for a malicious or misbehaving site to trigger other OS bugs, and while it's designed to resist modifying old files as well as creating new files, it may still be able to read other files and possibly be manipulated to upload them. A subverted plugin may also be able to activate input contexts that capture all keyboard events or draw things that look like password dialogues, and while these would disappear when SandboxSafari quits, they could potentially grab data anyway if you type in sensitive information while SandboxSafari is running. These kinds of operations are not generally dependent on the user ID in use or cannot otherwise be blocked with this method of sequestration. There are other limitations with what it can access and you should read the documentation thoroughly beforehand so you understand why.
SandboxSafari is also provided to you "best effort" and strictly "as-is." It's a means to get obsolete, insecure software to run a little more safely, but the software in question is unmaintained and known to have problems, and that means you should expect to have problems with it too. Because I don't want to turn my life into a living hell with people who can't read and don't care sending me complaints I don't want, the policy is explicit: bug reports that do not include fixes will be ignored (unless it's an obvious security issue over and above the security issues I already know it has). Don't write it here, don't post it to Tenderapp, don't E-mail me. If you're having trouble with it and you don't know why or don't care to find out how to fix it, then don't use it. I'm serious. I have enough to worry about with TenFourFox without regretting anything else I maintain. :P
Download SandboxSafari here, after reading the page thoroughly, and God have mercy on your souls.
Yunier José Sosa Vázquez: Firefox añade nuevas características para desarrolladores y mejoras en Hello
Siguiendo el ciclo de actualizaciones rápidas, Mozilla liberó hace unas horas una nueva versión de Firefox. En esta entrega podremos disfrutar de nuevas funcionalidades, relacionadas principalmente con la seguridad y orientadas a los desarrolladores web. Por su parte, la decodificación de imágenes es hasta 2 veces más rápida en algunos dispositivos especialmente cuando se hace scroll.
Firefox Hello, el servicio público y gratuito de videollamadas ha sido actualizado e incluye mensajería instantánea (chat) para mejorar las conversaciones o en caso que no poseamos una webcam.
Ahora tenemos la posibilidad de agregar una foto al perfil a la cuenta Firefox (empleada en Sync para sincronizar nuestros dispositivos) y se ha mejorado el soporte IME en Windows (Vista o superior) a través de TSF (Text Services Framework).
- Desde el panel de búsqueda puedes buscar fácilmente con diferentes proveedores (Google, Yahoo, DuckDuckGo, etc).
- Mejorada la administración de marcadores y la detección de marcadores duplicados.
- Ahora puedes deslizar para cerrar las pestañas en las tabletas.
- Añadido el idioma Croata (hr).
- Posibilidad de abrir aplicaciones de Android desde una página web mediante Intent URIs.
- Las imágenes SVG pueden ser usadas como favicons.
- Las peticiones de red pueden ser exportadas en formato HAR.
- El código HTML de una página web se abre ahora en una nueva pestaña.
- WebRTC requiere perfect forward secrecy.
- Desde la vista de etiquetas se pueden realizar capturas a los nodos.
- La API CSS Font Loading ha sido habilitada por defecto.
- Añadida el soporte para la propiedad transform-origin en los elementos SVG.
- Puedes añadir nuevas reglas CSS con el nuevo botón Nueva regla del Inspector.
- Eliminado el soporte para los componentes XPCOM en las extensiones, en su lugar use el módulo “system/child_process” del Add-on SDK.
- Las APIs MessageChannel y MessagePort han sido habilitadas por defecto.
- Otras mejoras de seguridad y rendimiento.
Si deseas, puedes leer las notas de lanzamiento para conocer más novedades.
Puedes obtener esta versión desde nuestra zona de Descargas en español e inglés para Linux, Mac y Windows. La versión para Android no la tenemos pero en cuanto esté disponible les avisaremos.
Mozilla Firefox 41.0 Lands in All Supported Ubuntu OSes, Users Urged to ...
Now that Mozilla has officially released the Mozilla Firefox 41.0 web browser for all GNU/Linux distributions, but also for the Microsoft Windows and Mac OS X operating systems, the time has come to update it on your favorite OS. The Ubuntu developers ...
Mozilla to improve Firefox's search interface in Firefox 43Ghacks Technology News
Mozilla brings instant messaging via WebRTC in Firefox 41Inquirer
Mozilla's latest Firefox browser comes with instant messaging, account profileNew Kerala
alle 18 nieuwsartikelen »
The latest Firefox update is now available. This release includes minor updates to personalize your Firefox Account and adds a new functionality to Firefox Hello Beta.
Firefox Accounts provides access to services like Firefox Sync to let you take browsing data such as passwords, bookmarks, history and open tabs across your desktop and mobile devices. The latest update to Firefox Accounts allows you to personalize your Firefox Account profile in Firefox for Windows, Mac, Linux and Android by adding a photo.
Firefox Hello Beta, developed with our partner Telefónica, is the global communications system built directly into a browser and it will now let you send and receive instant messages when you’re in a video call in Firefox for Windows, Mac and Linux.
As per the recent Status Meeting, 2.35 will be the next release. So 2.33.x and 2.34 won’t be spun/released.
The process of getting 2.35 done is what we’re working on but there are a few bits and pieces still missing. I’ll update this blog as soon as I get a chance to get those pieces jiving with what I have.
Up until recently, anytime you pushed a patch series to MozReview, a single attachment would be created on the bug associated with the push.
That single attachment would link to the “parent” or “root” review request, which contains the folded diff of all commits.
We noticed a lot of MozReview users were (rightfully) confused about this mapping from Bugzilla to MozReview. It was not at all obvious that Ship It on the parent review request would cause the attachment on Bugzilla to be r+’d. Consequently, reviewers used a number of workarounds, including, but not limited to:
- Manually setting the r+ or r- flags in Bugzilla for the MozReview attachments
- Marking Ship It on the child review requests, and letting the reviewee take care of setting the reviewer flags in the commit message
- Just writing “r+” in a MozReview comment
Anyhow, this model wasn’t great, and caused a lot of confusion.
So it’s changed! Now, when you push to MozReview, there’s one attachment created for every commit in the push. That means that when different reviewers are set for different commits, that’s reflected in the Bugzilla attachments, and when those reviewers mark “Ship It” on a child commit, that’s also reflected in an r+ on the associated Bugzilla attachment!
I think this makes quite a bit more sense. Hopefully you do too!
I’m on vacation this week, but the show must go on! So I pre-recorded a shorter episode of The Joy of Coding last Friday.
I demo the tool, and then I explain how it works. After I finished the episode, I pushed to repository to GitHub, and you can check that out right here.
So I’ll see you next week with a full length episode! Take care!
Which, several times, I mistakenly refer to as the 15th episode, and not the 16th. Whoops. ↩
Common (excluding Website bugs)-specific: (23)
- Fixed: 768207 – Make the cache checkbox default-on in the new calendar dialog
- Fixed: 1049591 – Fix lots of strict warnings
- Fixed: 1086573 – Lightning and Thunderbird disagree about timezone support in ics files
- Fixed: 1099592 – Make JS callers of ios.newChannel call ios.newChannel2 in calendar/
- Fixed: 1149423 – Add Windows timezone names to list of aliases
- Fixed: 1151011 – Calendar events show up on wrong day when printing
- Fixed: 1151440 – Choose a color not responsive when creating a New calendar in Lightning 4.0b1
- Fixed: 1153327 – Run compare-locales with merging for Lightning
- Fixed: 1156015 – Email scheduling fails for recipients with URN id
- Fixed: 1158036 – Support sendMailTo for URN type attendees
- Fixed: 1159447 – TEST-UNEXPECTED-FAIL | xpcshell-icaljs.ini:calendar/test/unit/test_extract.js
- Fixed: 1159638 – Getter fails in calender-migration-dialog on first run after installation
- Fixed: 1159682 – Provide a more appropriate “learn more” page on integrated Lightning firstrun
- Fixed: 1159698 – Opt-out dialog has a button for “disable”, but actually the addon is removed
- Fixed: 1160728 – Unbreak Lightning 4.0b4 beta builds
- Fixed: 1162300 – TEST-UNEXPECTED-FAIL | xpcshell-libical.ini:calendar/test/unit/test_alarm.js | xpcshell return code: 0
- Fixed: 1163306 – Re-enable libical tests and disable ical.js in nightly builds when binary compatibility is back
- Fixed: 1165002 – Lightning broken, tries to load libical backend although “calendar.icaljs” defaults to “true”
- Fixed: 1165315 – TEST-UNEXPECTED-FAIL | xpcshell-icaljs.ini:calendar/test/unit/test_bug759324.js | xpcshell return code: 1 | ###!!! ASSERTION: Deprecated, use NewChannelFromURI2 providing loadInfo arguments!
- Fixed: 1165497 – TEST-UNEXPECTED-FAIL | xpcshell-icaljs.ini:calendar/test/unit/test_alarmservice.js | xpcshell return code: -11
- Fixed: 1165726 – TEST-UNEXPECTED-FAIL | /builds/slave/test/build/tests/mozmill/testBasicFunctionality.js | testBasicFunctionality.js::testSmokeTest
- Fixed: 1165728 – TEST-UNEXPECTED-FAIL | xpcshell-icaljs.ini:calendar/test/unit/test_bug494140.js | xpcshell return code: -11
Sunbird will no longer be actively developed by the Calendar team.
- Fixed: 401779 – Integrate Lightning Into Thunderbird by Default and Ship Thunderbird with Lightning Enabled
- Fixed: 717292 – Spell check language setting for subject and body not synchronized, but temporarily appears so when changing language and depending on focus (confusing ux)
- Fixed: 914225 – Support hotfix add-on in Thunderbird
- Fixed: 1025547 – newmailaccount/jquery.tmpl.js, line 123: reference to undefined property def
- Fixed: 1088975 – Answering mail with sendername containing encoded special chars and comma creates two “To”-entries
- Fixed: 1101237 – Remove distribution directory during install
- Fixed: 1109178 – Thunderbird OAuth implementation does not work with Evernote
- Fixed: 1110166 – Port |Bug 1102219 – Rename String.prototype.contains to String.prototype.includes| to comm-central
- Fixed: 1113097 – Fix misuse of fixIterator
- Fixed: 1130854 – Package Lightning with Thunderbird
- Fixed: 1131997 – Adapt for Debugger Server code for changes in bug 1059308
- Fixed: 1135291 – Update chat log entries added to Gloda since bug 955292 to use relative paths
- Fixed: 1135588 – New conversations get indexed twice by gloda, leading to duplicate search results
- Fixed: 1138154 – Plugins default to “always activate” in Thunderbird
- Fixed: 1142879 – [meta] track Mozilla-central (Core) issues that we want to have fixed in TB38
- Fixed: 1146698 – Chat Messages added to logs just before shutdown may not be indexed by gloda
- Fixed: 1148330 – Font indicator doesn’t update when cursor is placed in text where core returns sans-serif (Windows). Serif and monospace don’t work (Linux).
- Fixed: 1148512 – TEST-UNEXPECTED-FAIL | mailnews/imap/test/unit/test_dod.js | xpcshell return code: 0||1 | streamMessages – [streamMessages : 94] false == true | application crashed [@ mozalloc_abort(char const * const)]
- Fixed: 1149059 – splitter in compose window can be resized down to completely obscure composition area
- Fixed: 1151206 – Using a theme hides minimize, maximize and close button in composer window [Mac]
- Fixed: 1151475 – Remove use of expression closures in mail/
- Fixed: 1152299 – [autoconfig] Cosmetic changes for WEB.DE config
- Fixed: 1152706 – Upgrade to Correspondents column (combined To/From column) too agressive
- Fixed: 1152796 – chrome://messenger/content/folderDisplay.js, line 697: TypeError: this._savedColumnStates.correspondentCol is undefined
- Fixed: 1152926 – New mail sound preview doesn’t work for default system sound on Mac OS X
- Fixed: 1154737 – Permafail: TEST-UNEXPECTED-FAIL | toolkit/components/telemetry/tests/unit/test_TelemetryPing.js | xpcshell return code: 0
- Fixed: 1154747 – TEST-UNEXPECTED-FAIL | /builds/slave/test/build/tests/mozmill/session-store/test-session-store.js | test-session-store.js::test_message_pane_height_persistence
- Fixed: 1156669 – Trash folder duplication while using IMAP with localized TB
- Fixed: 1157236 – In-content dialogs: Port bug 1043612, bug 1148923 and bug 1141031 to TB
- Fixed: 1157649 – TEST-UNEXPECTED-FAIL | dom/push/test/xpcshell/test_clearAll_successful.js (and most other push tests)
- Fixed: 1158824 – Port bug 138009 to fix packaging errors | Missing file(s): bin/defaults/autoconfig/platform.js
- Fixed: 1159448 – Thunderbird ignores proxy settings on POP3S protocol
- Fixed: 1159627 – resource:///modules/dbViewWrapper.js, line 560: SyntaxError: unreachable code after return statement
- Fixed: 1159630 – components/glautocomp.js, line 155: SyntaxError: unreachable code after return statement
- Fixed: 1159676 – mailnews/mime/jsmime/test/test_custom_headers.js | run_next_test 0 – TypeError: _gRunningTest is undefined at /builds/slave/test/build/tests/xpcshell/head.js:1435 (and other jsmime tests)
- Fixed: 1159688 – After switching/changing the window layout, dragging the splitter between threadpane and messagepane can create gray/grey area/space (misplaced notificationbox)
- Fixed: 1159815 – Take bug 1154791 “Inline spell checker loses red underlines after a backspace is used – take two” in Thunderbird 38
- Fixed: 1159817 – Take “Bug 1100966 – Inline spell checker loses red underlines after a backspace is used” in Thunderbird 38
- Fixed: 1159834 – Consider taking “Bug 756984 – Changing location in editor doesn’t preserve the font when returning to end of text/line” in Thunderbird 38
- Fixed: 1159923 – Take bug 1140105 “Can’t query for a specific font face when the selection is collapsed” in TB 38
- Fixed: 1160105 – Fix strict mode warnings in protovis-r2.6-modded.js
- Fixed: 1160106 – “Searching…” spinner at the bottom of gloda search results never goes away
- Fixed: 1160114 – Strict mode warnings on faceted search
- Fixed: 1160805 – Missing Windows and Linux nightly builds, build step set props: previous_buildid fails
- Fixed: 1161162 – “Join Chat” doesn’t focus the newly joined MUC
- Fixed: 1162396 – Take bug 1140617 “Pasting an image loses the composition style” in TB38
- Fixed: 1163086 – Take bug 967494 “changing spellcheck language in one composition window affects all open and new compositions” in TB38
- Fixed: 1163299 – “TypeError: getBrowser(…) is null” in contentAreaClick with Lightning installed and started in calendar view
- Fixed: 1163343 – Incorrectly formatted error message “sending failed”
- Fixed: 1164415 – Error in comment for imapEnterServerPasswordPrompt
- Fixed: 1164658 – TypeError: Cc[‘@mozilla.org/weave/service;1’] is undefined at resource://gre/modules/FxAccountsWebChannel.jsm:227
- Fixed: 1164707 – missing toolkit_perfmonitoring.xpt in aurora builds
- Fixed: 1165152 – Take bug 1154894 in TB 38 branch: Disable test_plugin_default_state.js so Thunderbird can ship with plugins disabled by default
- Fixed: 1165320 – TEST-UNEXPECTED-FAIL | /builds/slave/test/build/tests/mozmill/notification/test-notification.js
MailNews Core-specific: (30)
- Fixed: 610533 – crash [@ nsMsgDatabase::GetSearchResultsTable(char const*, int, nsIMdbTable**)] with virtual folder
- Fixed: 745664 – Rename Address book aaa to aaa_test, delete another address book bbb, and renamed address book aaa_test will lose its name and appear deleted after restart (dataloss! involving localized names)
- Fixed: 777770 – get rid of nsVoidArray from /mailnews
- Fixed: 786141 – Use nsIFile.exists() instead of stat to check the existence of the file
- Fixed: 1069790 – Email addresses with parenthesis are not pretty-printed anymore
- Fixed: 1072611 – Ctrl+P not working from Composition’s Print Preview window
- Fixed: 1099587 – Make JS callers of ios.newChannel call ios.newChannel2 in mail/ and mailnews/
- Fixed: 1130248 – |To: “email@example.com” <firstname.lastname@example.org>| becomes |”email@example.com”@example.com| when I compose mail to it
- Fixed: 1138220 – some headers are not not properly capitalized
- Fixed: 1141446 – Behaviour of malformed rfc2047 encoded From message header inconsistent
- Fixed: 1143569 – User-agent error when posting to NNTP due to RFC5536 violation of Tb (user-agent header is folded just after user-agent:, “user-agent:[CRLF][SP]Mozilla…”)
- Fixed: 1144693 – Disable libnotify usage on Linux by default for new-mail notifications (doesn’t always work after bug 858919)
- Fixed: 1149320 – fix compile warnings in mailnews/extensions/
- Fixed: 1150891 – Port package-manifest.in changes from Bug 1115495 – Part 2: PAC generator for browsing and system wide proxy
- Fixed: 1151782 – Inputting 29th Feb as a birthday in the addressbook contact replaces it with 1st Mar.
- Fixed: 1152364 – crash in Address Book via nsAbBSDirectory::GetChildNodes nsCOMArrayEnumerator::operator new(unsigned int, nsCOMArray_base const&)
- Fixed: 1152989 – Account Manager Extensions broken in Thunderbird 37/38
- Fixed: 1154521 – jsmime fails on long references header and e-mail gets sent and stored in Sent without headers
- Fixed: 1155491 – Support autoconfig and manual config of gmail IMAP OAuth2 authentication
- Fixed: 1155952 – Nesting level does not match indentation
- Fixed: 1156691 – GUI “Edit filters”: Conditions/actions (for specfic accounts) not visible
- Fixed: 1156777 – nsParseMailbox.cpp:505:55: error: ‘do_QueryObject’ was not declared in this scope
- Fixed: 1158501 – Port bug 1039866 (metro code removal) and bug 1085557 (addition of socorro symbol upload API)
- Fixed: 1158751 – Port NO_JS_MANIFEST changes | mozbuild.frontend.reader.SandboxValidationError: calendar/base/backend/icaljs/moz.build
- Fixed: 1159255 – Build error: MSVC_ENABLE_PGO = True is not permitted to be used in mailnews/intl/moz.build
- Fixed: 1159626 – chrome://messenger/content/accountUtils.js, line 455: SyntaxError: unreachable code after return statement
- Fixed: 1160647 – Port |Bug 1159972 – Remove the fallible version of PL_DHashTableInit()| to comm-central
- Fixed: 1163347 – Don’t require scope in ispdb config for OAuth2
- Fixed: 1165737 – Fix usage of NS_LITERAL_CSTRING in mailnews, port Bug 1155963 to comm-central
- Fixed: 1166842 – Re-enable binary extensions for comm-central
You might have noticed that I had no “Things I’ve Learned This Week” post last week. Sorry about that – by the end of the week, I looked at my Evernote of “lessons from the week”, and it was empty. I’m certain I’d learned stuff, but I just failed to write it down. So I guess the lesson I learned last week was, always write down what you learn.How to make your mozilla-central Mercurial clone work faster
I like Mercurial. I also like Git, but recently, I’ve gotten pretty used to Mercurial.
One complaint I hear over and over (and I’m guilty of it myself sometimes), is that “Mercurial is slow”. I’ve even experienced that slowness during some of my Joy of Coding episodes.
This document did not exist when I first started working with Mercurial – back then, I was using mq or sometimes pbranch, and grumbling about how I missed Git.
But there is some gold in this document.
gps has been doing some killer work documenting best practices with Mercurial, and this document is one of the results of his labour.
watchman is a tool that some folks at Facebook wrote to monitor changes in a folder. hgwatchman is an extension for Mercurial that takes advantage of watchman for a repository, smartly precomputing a bunch of stuff when the folder changes so that when you fire a command, likehg status
It takes a fraction of the time it’d take without hgwatchman. A fraction.
Here’s how I set hgwatchman up on my MacBook (though you should probably go by the Mercurial for Mozillians doc as the official reference):
- Install watchman with brew: brew install watchman
- Clone the hgwatchman extension to some folder that you can easily remember and build it: hg clone https://bitbucket.org/facebook/hgwatchman cd hgwatchman make local
- Add the following lines to my user .hgrc: [extensions] hgwatchman = cloned-in-dir/hgwatchman/hgwatchman
- Make sure the extension is properly installed by running: hg help extensions
- hgwatchman should be listed under “enabled extensions”. If it didn’t work, keep in mind that you want to target the hgwatchman directory
- And then in my mozilla-central .hg/.hgrc: [watchman] mode = on
- Boom, you’re done!
Congratulations, hg should feel snappier now!
In Episode 15, we kept working on the same bug as the last two episodes – proxying the printing dialog on OS X to the parent process from the content process. At the end of Episode 14, we’d finished the serialization bits, and put in the infrastructure for deserialization. In this episode, we did the rest of the deserialization work.
And then we attempted to print a test page. And it worked!
We did it!
Then, we cleaned up the patches and posted them up for review. I had a lot of questions about my Objective-C++ stuff, specifically with regards to memory management (it seems as if some things in Objective-C++ are memory managed, and it’s not immediately obvious what that applies to). So I’ve requested review, and I hope to hear back from someone more experienced soon!
I also plugged a new show that’s starting up! If you’re a designer, and want to see how a designer at Mozilla does their work, you’ll love The Design Hour, by Ricardo Vazquez. His design chops are formidable, and he shows you exactly how he operates. It’s great!
Finally, I failed to mention that I’m on holiday next week, so I can’t stream live. I have, however, pre-recorded a shorter Episode 16, which should air at the right time slot next week. The show must go on!
Keeping Firefox zippy involves running performance tests on each push to make sure we’re not making Firefox slower.
How does that even work? This used to be a mystery. NO LONGER. jmaher lets you peek behind the curtain here in the first episode of Lost in Data!
In this episode, I kept working on the same bug as last week – proxying the print dialog from the content process on OS X. We actually finished the serialization bit, and started doing deserialization!
Hopefully, next episode we can polish off the deserialization and we’l be done. Fingers crossed!
Note that this episode was about 2 hours and 10 minutes, but the standard-definition recording up on Air Mozilla only plays for about 13 minutes and 5 seconds. Not too sure what’s going on there – we’ve filed a bug with the people who’ve encoded it. Hopefully, we’ll have the full episode up for standard-definition soon.
On Firefox Hello, we recently added the eslint linter to be run against the Hello code base. We started of with a minimal set of rules, just enough to get us something running. Now we’re working on enabling more rules.
Since we enabled it, I feel like I’m able to iterate faster on patches. For example, if just as I finish typing I see something like:
Now I think about it, I’m realising it has also helped reduced the amount of review nits on my patches – due to trivial formatting mistakes being caught automatically, e.g. trailing white-space or missing semi-colons.
Talking about reviews, as we’re running eslint on the Hello code, we just have to apply the patch, and run our tests, and we automatically get eslint output:
Hopefully our patch authors will be running eslint before uploading the patch anyway, but this is an additional test, and a few less things that we need to look at during review which helps speed up that cycle as well.
I’ve also put together a global config file for eslint (see below), that I use for outside of the Hello code, on the rest of the Firefox code base (and other projects). This is enough, that, when using it in my editor it gives me a reasonable amount of information about bad syntax, without complaining about everything.
I would definitely recommend giving it a try. My patches feel faster overall, and my test runs are for testing, not stupid-mistake catching!
Want more specific details about the setup and advantages? Read on…
You need to have eslint installed globally, or at least in your path, other than that, just follow the installation instructions given on the SublimeLinter page.
One configuration I change I did have to make to the global configuration:
- Select “Preferences” -> “Settings – More” -> “Syntax Specific – User”
- In the file that appears, set the configuration up as follows (or whatever suits you):
I’ve uploaded my global configuration to a gist, if it changes I’ll update it there. It isn’t intended to catch everything – there’s too many inconsistencies across the code base for that to be sensible at the moment. However, it does at least allow general syntax issues to be highlighted for most files – which is obviously useful in itself.
I haven’t yet tried running it across the whole code base via eslint on the command line – there seems to be some sort of configuration issue that is messing it up and I’ve not tracked it down yet.
Firefox Hello’s Configuration
The configuration files for Hello can be found in the mozilla-central source. There’s a few of these because we have both content and chrome code, and some of the content code is shared with a website that can be viewed by most browsers, and hence isn’t currently able to use all the es6 features, whereas the chrome code can. This is another thing that eslint is good for enforcing.
Our eslint configuration is evolving at the moment, as we enable more rules, which we’re tracking in this bug.
Had to deal with some network issues during this video – sorry if people were getting dropped frames during the live show! I have personally checked this recording, and almost all frames are there.
The only frames that are missing are the ones where I scramble around to connect to the wired network, which was boring anyhow.
In this episode, I worked on proxying the print dialog from the content process on OS X. It was a wild ride, and I learned quite a bit about Cocoa stuff. It was also a throwback to my very first episode, where I essentially did the same thing for Linux!
We’ll probably polish this off in the next episode, or in the episode after.
I actually discovered this during my most recent Joy of Coding episode – there is a static utility method to convert between native Cocoa NSStrings and Gecko nsAStrings – nsCocoaUtils::GetStringForNSString. Very handy, and works exactly as advertised.An “Attach to Process by pid” Keyboard Shortcut for XCode
I actually have colleague Garvan Keeley to thank for this one, and technically I learned this on April 24th. It was only this week that I remembered I had learned it!
When I’m debugging Firefox on OS X, I tend to use XCode, and I usually attach to Firefox after it has started running. I have to navigate some menus in order to bring up the dialog to attach to a process by pid, and I was getting tired of doing that over and over again.
So, as usual, I tweeted my frustration:
Dear lazyweb – is there an XCode keyboard shortcut for “Attach to Process” > “By Process Identifier (PID) or Name”? Mousing it blows.
— Mike Conley (@mike_conley) April 24, 2015
AND LO, THE INTERNET SPOKE BACK:
It seems small, but the savings in time for something that I do so frequently quickly adds up. And it always feels good to go faster!