mozilla

Mozilla Nederland LogoDe Nederlandse
Mozilla-gemeenschap

Mozilla Firefox 46.0 - Tweakers

Nieuws verzameld via Google - wo, 27/04/2016 - 12:07

Tweakers

Mozilla Firefox 46.0
Tweakers
Mozilla Firefox 2013 logo (75 pix) Mozilla heeft versie 46 van zijn webbrowser Firefox uitgebracht. In versie 46 zijn onder meer aanpassingen in de Just In Time-compiler aangebracht die de beveiliging ten goede moeten komen, is er gtk3-integratie op de ...

Categorieën: Mozilla-nl planet

Air Mozilla: Bay Area Rust Meetup April 2016

Mozilla planet - wo, 27/04/2016 - 04:00

Bay Area Rust Meetup April 2016 Rust meetup on the subject of operating systems.

Categorieën: Mozilla-nl planet

Air Mozilla: Connected Devices Weekly Program Review, 26 Apr 2016

Mozilla planet - di, 26/04/2016 - 19:00

Connected Devices Weekly Program Review Weekly project updates from the Mozilla Connected Devices team.

Categorieën: Mozilla-nl planet

Richard Newman: Different kinds of storage

Mozilla planet - di, 26/04/2016 - 18:59

I’ve been spending most of my time so far on Project Tofino thinking about how a user agent stores data.

A user agent is software that mediates your interaction with the world. A web browser is one particular kind of user agent: one that fetches parts of the web and shows them to you.

(As a sidenote: browsers are incredibly complicated, not just for the obvious reasons of document rendering and navigation, but also because parts of the web need to run code on your machine and parts of it are actively trying to attack and track you. One of a browser’s responsibilities is to keep you safe from the web.)

Chewing on Redux, separation of concerns, and Electron’s process model led to us drawing a distinction between a kind of ‘profile service’ and the front-end browser itself, with ‘profile’ defined as the data stored and used by a traditional browser window. You can see the guts of this distinction in some of our development docs.

The profile service stores full persistent history and data like it. The front-end, by contrast, has a pure Redux data model that’s much closer to what it needs to show UI — e.g., rather than all of the user’s starred pages, just a list of the user’s five most recent.

The front-end is responsible for fetching pages and showing the UI around them. The back-end service is responsible for storing data and answering questions about it from the front-end.

To build that persistent storage we opted for a mostly event-based model: simple, declarative statements about the user’s activity, stored in SQLite. SQLite gives us durability and known performance characteristics in an embedded database.

On top of this we can layer various views (materialized or not). The profile service takes commands as input and pushes out diffs, and the storage itself handles writes by logging events and answering queries through views. This is the CQRS concept applied to an embedded store: we use different representations for readers and writers, so we can think more clearly about the transformations between them.

Where next?

One of the reasons we have a separate service is to acknowledge that it might stick around when there are no browser windows open, and that it might be doing work other than serving the immediate needs of a browser window. Perhaps the service is pre-fetching pages, or synchronizing your data in the background, or trying to figure out what you want to read next. Perhaps you can interact with the service from something other than a browser window!

Some of those things need different kinds of storage. Ad hoc integrations might be best served by a document store; recommendations might warrant some kind of graph database.

When we look through that lens we no longer have just a profile service wrapping profile storage. We have a more general user agent service, and one of the data sources it manages is your profile data.

Categorieën: Mozilla-nl planet

Mozilla Addons Blog: Migrating Popup ALT Attribute from XUL/XPCOM to WebExtensions

Mozilla planet - di, 26/04/2016 - 18:27

Today’s post comes from Piro, the developer of Popup ALT Attribute, in addition to 40 other add-ons. He shares his thoughts about migrating XUL/XPCOM add-ons to WebExtensions, and shows us how he did it with Popup ALT Attribute. You can see the full text of this post on his personal blog.

***

Hello, add-on developers. My name is YUKI Hiroshi aka Piro, a developer of Firefox add-ons. For many years I developed Firefox and Thunderbird add-ons personally and for business, based on XUL and XPCOM.

I recently started to research the APIs are required to migrate my add-ons to WebExtensions, because Mozilla announced that XUL/XPCOM add-ons will be deprecated at the end of 2017. I realized that only some add-ons can be migrated with currently available APIs, and
Popup ALT Attribute is one such add-on.

Here is the story of how I migrated it.

What’s the add-on?

Popup ALT Attribute is an ancient add-on started in 2002, to show what is written in the alt attribute of img HTML elements on web pages. By default, Firefox shows only the title attribute as a tooltip.

Initially, the add-on was implemented to replace an internal function FillInHTMLTooltip() of Firefox itself.

In February 2016, I migrated it to be e10s-compatible. It is worth noting that depending on your add-on, if you can migrate it directly to WebExtensions, it will be e10s-compatible by default.

Re-formatting in the WebExtensions style

I read the tutorial on how to build a new simple WebExtensions-based add-on from scratch before migration, and I realized that bootstrapped extensions are similar to WebExtensions add-ons:

  • They are dynamically installed and uninstalled.
  • They are mainly based on JavaScript code and some static manifest files.

My add-on was easily re-formatted as a WebExtensions add-on, because I already migrated it to bootstrapped.

This is the initial version of the manifest.json I wrote. There were no localization and options UI:

{ "manifest_version": 2, "name": "Popup ALT Attribute", "version": "4.0a1", "description": "Popups alternate texts of images or others like NetscapeCommunicator(Navigator) 4.x, and show long descriptions in the multi-row tooltip.", "icons": { "32": "icons/icon.png" }, "applications": { "gecko": { "id": "{61FD08D8-A2CB-46c0-B36D-3F531AC53C12}", "strict_min_version": "48.0a1" } }, "content_scripts": [ { "all_frames": true, "matches": ["<all_urls>"], "js": ["content_scripts/content.js"], "run_at": "document_start" } ] }

I had already separated the main script to a frame script and a loader for it. On the other hand, manifest.json can have some manifest keys to describe how scripts are loaded. It means that I don’t need to put my custom loaders in the package anymore. Actually, a script for any web page can be loaded with the content_scripts rule in the above sample. See the documentation for content_scripts for more details.

So finally only 3 files were left.

Before:

+ install.rdf + icon.png + [components] + [modules] + [content] + content-utils.js

And after:

+ manifest.json (migrated from install.rdf) + [icons] | + icon.png (moved) + [content_scripts] + content.js (moved and migrated from content-utils.js)

And I still had to isolate my frame script from XPCOM.

  • The script touched nsIPrefBranch and some XPCOM components via XPConnect, so they were temporarily commented out.
  • User preferences were not available and only default configurations were there as fixed values.
  • Some constant properties accessed, like Ci.nsIDOMNode.ELEMENT_NODE, had to be replaced as Node.ELEMENT_NODE.
  • The listener for mousemove events from web pages was attached to the global namespace for a frame script, but it was re-attached to the document itself of each web page, because the script was now executed on each web page directly.
Localization

For the old install.rdf I had a localized description. In WebExtensions add-ons I had to do it in different way. See how to localize messages for details. In short I did the following:

Added files to define localized descriptions:

+ manifest.json + [icons] + [content_scripts] + [_locales] + [en_US] | + messages.json (added) + [ja] + messages.json (added)

Note, en_US is different from en-US in install.rdf.

English locale, _locales/en_US/messages.json was:

{ "name": { "message": "Popup ALT Attribute" }, "description": { "message": "Popups alternate texts of images or others like NetscapeCommunicator(Navigator) 4.x, and show long descriptions in the multi-row tooltip." } }

Japanese locale, _locales/ja/messages.json was also included. And, I had to update my manifest.json to embed localized messages:

{ "manifest_version": 2, "name": "__MSG_name__", "version": "4.0a1", "description": "__MSG_description__", "default_locale": "en_US", ...

__MSG_****__ in string values are automatically replaced to localized messages. You need to specify the default locale manually via the default_locale key.

Sadly, Firefox 45 does not support the localization feature, so you need to use Nightly 48.0a1 or newer to try localization.

User preferences

Currently, WebExtensions does not provide any feature completely compatible to nsIPrefBranch. Instead, there are simple storage APIs. It can be used like an alternative of nsIPrefBranch to set/get user preferences. This add-on had no configuration UI but had some secret preferences to control its advanced features, so I did it for future migrations of my other add-ons, as a trial.

Then I encountered a large limitation: the storage API is not available in content scripts. I had to create a background script just to access the storage, and communicate with it via the inter-sandboxes messaging system. [Updated 4/27/16: bug 1197346 has been fixed on Nightly 49.0a1, so now you don’t need any hack to access the storage system from content scripts anymore. Now, my library (Configs.js) just provides easy access for configuration values instead of the native storage API.]

Finally, I created a tiny library to do that. I don’t describe how I did it here, but if you hope to know details, please see the source. There are just 177 lines.

I had to update my manifest.json to use the library from both the background page and the content script, like:

"background": { "scripts": [ "common/Configs.js", /* the library itself */ "common/common.js" /* codes to use the library */ ] }, "content_scripts": [ { "all_frames": true, "matches": ["<all_urls>"], "js": [ "common/Configs.js", /* the library itself */ "common/common.js", /* codes to use the library */ "content_scripts/content.js" ], "run_at": "document_start" } ]

Scripts listed in the same section share a namespace for the section. I didn’t have to write any code like require() to load a script from others. Instead, I had to be careful about the listing order of scripts, and wrote a script requiring a library after the library itself, in each list.

One last problem was: how to do something like the about:config or the MCD — general methods to control secret preferences across add-ons.

For my business clients, I usually provide add-ons and use MCD to lock their configurations. (There are some common requirements for business use of Firefox, so combinations of add-ons and MCD are more reasonable than creating private builds of Firefox with different configurations for each client.)

I think I still have to research around this point.

Options UI

WebExtensions provides a feature to create options pages for add-ons. It is also not supported on Firefox 45, so you need to use Nightly 48.0a1 for now. As I previously said, this add-on didn’t have its configuration UI, but I implemented it as a trial.

In XUL/XPCOM add-ons, rich UI elements like <checkbox>, <textbox>, <menulist>, and more are available, but these are going away at the end of next year. So I had to implement a custom configuration UI based on pure HTML and JavaScript. (If you need more rich UI elements, some known libraries for web applications will help you.)

On this step I created two libraries:

Conclusion

I’ve successfully migrated my Popup ALT Attribute add-on from XUL/XPCOM to WebExtensions. Now it is just a branch but I’ll release it after Firefox 48 is available.

Here are reasons why I could do it:

  • It was a bootstrapped add-on, so I had already isolated the add-on from all destructive changes.
  • The core implementation of the add-on was similar to a simple user script. Essential actions of the add-on were enclosed inside the content area, and no privilege was required to do that.

However, it is a rare case for me. My other 40+ add-ons require some privilege, and/or they work outside the content area. Most of my cases are such non-typical add-ons.

I have to do triage, plan, and request new APIs not only for me but for other XUL/XPCOM add-on developers also.

Thank you for reading.

Categorieën: Mozilla-nl planet

The Mozilla Blog: Update to Firefox Released Today

Mozilla planet - di, 26/04/2016 - 17:45

The latest version of Firefox was released today. It features an improved look and feel for Linux users, a minor security improvement and additional updates for all Firefox users.

The update to Firefox for Android features minor changes, including an improvement to user notifications and clearer homescreen shortcut icons.

More information:

Categorieën: Mozilla-nl planet

Update to Firefox Released Today

Mozilla Blog - di, 26/04/2016 - 17:45

The latest version of Firefox was released today. It features an improved look and feel for Linux users, a minor security improvement and additional updates for all Firefox users.

The update to Firefox for Android features minor changes, including an improvement to user notifications and clearer homescreen shortcut icons.

More information:

Categorieën: Mozilla-nl planet

Mozilla: Firefox 46 erkennt Webkit-Präfixe - Golem.de

Nieuws verzameld via Google - di, 26/04/2016 - 17:37

Golem.de

Mozilla: Firefox 46 erkennt Webkit-Präfixe
Golem.de
Firefox umgeht die damit verbundenen Fehler nun, indem einige CSS-Funktionen und DOM-APIs mit Webkit-Präfixen als solche erkannt werden und der Browser dann das gewünschte Ergebnis anzeigt. Die so von Mozilla angestrebte Kompatibilität ist auch ...
Neuer Mozilla Firefox unterstützt Webkit-PräfixeHardwareLuxx

alle 2 nieuwsartikelen »Google Nieuws
Categorieën: Mozilla-nl planet

Air Mozilla: Martes mozilleros, 26 Apr 2016

Mozilla planet - di, 26/04/2016 - 17:00

Martes mozilleros Reunión bi-semanal para hablar sobre el estado de Mozilla, la comunidad y sus proyectos. Bi-weekly meeting to talk (in Spanish) about Mozilla status, community and...

Categorieën: Mozilla-nl planet

Marcia Knous: Nightly is where I will live

Mozilla planet - di, 26/04/2016 - 16:56
After some time working on Firefox OS and Connected Devices, I am moving back to Desktop land. Going forward I will be working with the Release Management Team as the Nightly Program Manager. That means I would love to work with all of you all to identify any potential issues in Nightly and help bring them to resolution. To that end, I have done a few things. First, we now have a Telegram Group for Nightly Testers. Feel free to join that group if you want to keep up with issues we are
Categorieën: Mozilla-nl planet

David Lawrence: Happy BMO Push Day!

Mozilla planet - di, 26/04/2016 - 16:00

the following changes have been pushed to bugzilla.mozilla.org:

  • [1195736] intermittent internal error: “file error – nav_link: not found” (also manifests as fields_lhs: not found)

discuss these changes on mozilla.tools.bmo.


Categorieën: Mozilla-nl planet

Mozilla taps possible homes for Thunderbird email client - Computerworld

Nieuws verzameld via Google - di, 26/04/2016 - 13:49

Computerworld

Mozilla taps possible homes for Thunderbird email client
Computerworld
"Firefox and Thunderbird have diverging needs," said Mitchell Baker, the chairwoman of the Mozilla Foundation, in December. "Firefox needs to move at the speed of the Web ... [and] Thunderbird is a valuable and respected open source project, with ...
Thunderbird is GO: Mozilla prepares to jettison mail clientThe Register
Two Foundations Are Willing to Take Over Thunderbird DevelopmentSoftpedia News

alle 3 nieuwsartikelen »Google Nieuws
Categorieën: Mozilla-nl planet

Daniel Glazman: First things first

Mozilla planet - di, 26/04/2016 - 10:20

Currently implementing many new features into Postbox, I carefully read (several times) Mark Surman's recent article on Thunderbird's future. I also read Simon Phipps's report twice. Then the contract offer for a Thunderbird Architect posted by Mozilla must be read too:

... Thunderbird is facing a number of technical challenges, including but not limited to:

  • ...
  • The possible future deprecation of XUL, its current user interface technology and XPCOM, its current component technology, by Mozilla
  • ...

In practice, the last line above means for Thunderbird:

  1. rewrite the whole UI and the whole JS layer with it
  2. most probably rewrite the whole SMTP/MIME/POP/IMAP/LDAP/... layer
  3. most probably have a new Add-on layer or, far worse, no more Add-ons

Well, sorry to say, but that's a bit of a « technical challenge »... So yes, that's indeed a « fork in the road » but let's be serious a second, it's unfortunately this kind of fork; rewriting the app is not a question of if but only a question of when. Unless Thunderbird dies entirely, of course.

Evaluating potential hosts for Thunderbird and a fortiori chosing one seems to me rather difficult without first discussing the XUL/XPCOM-less future of the app, i.e. without having in hands the second milestone delivered by the Thunderbird Architect. First things first. I would also be interested in knowing how many people MoCo will dedicate to the deXULXPCOMification of Firefox, that would allow some extrapolations and some pretty solid requirements (and probably rather insurmountable...) for TB's host.

Last but not least and from a more personal point of view, I feel devastated confronting Mark's article and the Mozilla Manifesto.

Categorieën: Mozilla-nl planet

Daniel Stenberg: Absorbing 1,000 emails per day

Mozilla planet - di, 26/04/2016 - 10:19

Some people say email is dead. Some people say there are “email killers” and bring up a bunch of chat and instant messaging services. I think those people communicate far too little to understand how email can scale.

I receive up to around 1,000 emails per day. I average on a little less but I do have spikes way above.

Why do I get a thousand emails?

Primarily because I participate on a lot of mailing lists. I run a handful of open source projects myself, each with at least one list. I follow a bunch more projects; more mailing lists. We have a whole set of mailing lists at work (Mozilla) and I participate and follow several groups in the IETF. Lists and lists. I discuss things with friends on a few private mailing lists. I get notifications from services about things that happen (commits, bugs submitted, builds that break, things that need to get looked at). Mails, mails and mails.

Don’t get me wrong. I prefer email to web forums and stuff because email allows me to participate in literally hundreds of communities from a single spot in an asynchronous manner. That’s a good thing. I would not be able to do the same thing if I had to use one of those “email killers” or web forums.

Unwanted email

I unsubscribe from lists that I grow tired from. I stamp down on spam really hard and I run aggressive filters and blacklists that actually make me receive rather few spam emails these days, percentage wise. There are nowadays about 3,000 emails per month addressed to me that my mail server accepts that are then classified as spam by spamassassin. I used to receive a lot more before we started using better blacklists. (During some periods in the past I received well over a thousand spam emails per day.) Only 2-3 emails per day out of those spam emails fail to get marked as spam correctly and subsequently show up in my inbox.

Flood management

My solution to handling this steady high paced stream of incoming data is prioritization and putting things in different bins. Different inboxes.

  1. Filter incoming email. Save the email into its corresponding mailbox. At this very moment, I have about 30 named inboxes that I read. I read them in order, top to bottom as they’re sorted in roughly importance order (to me).
  2. Mails that don’t match an existing mailing list or topic that get stored into the 28 “topic boxes” run into another check: is the sender a known “friend” ? That’s a loose term I use, but basically means that the mail is from an email address that I have had conversations with before or that I know or trust etc. Mails from “friends” get the honor of getting put in mailbox 0. The primary one. If the mail comes from someone not listed as friend, it’ll end up in my “suspect” mailbox. That’s mailbox 1.
  3. Some of the emails get the honor of getting forwarded to a cloud email service for which I have an app in my phone so that I can get a sense of important mail that arrive. But I basically never respond to email using my phone or using a web interface.
  4. I also use the “spam level” in spams to save them in different spam boxes. The mailbox receiving the highest spam level emails is just erased at random intervals without ever being read (unless I’m tracking down a problem or something) and the “normal” spam mailbox I only check every once in a while just to make sure my filters are not hiding real mails in there.
Reading

I monitor my incoming mails pretty frequently all through the day – every day. My wife calls me obsessed and maybe I am. But I find it much easier to handle the emails a little at a time rather than to wait and have it pile up to huge lumps to deal with.

I receive mail at my own server and I read/write my email using Alpine, a text based mail client that really excels at allowing me to plow through vast amounts of email in a short time – something I can’t say that any UI or web based mail client I’ve tried has managed to do at a similar degree.

A snapshot from my mailbox from a while ago looked like this, with names and some topics blurred out. This is ‘INBOX’, which is the main and highest prioritized one for me.

alpine screenshot

I have my mail client to automatically go to the next inbox when I’m done reading this one. That makes me read them in prio order. I start with the INBOX one where supposedly the most important email arrives, then I check the “suspect” one and then I go down the topic inboxes one by one (my mail client moves on to the next one automatically). Until either I get overwhelmed and just return to the main box for now or I finish them all up.

I tend to try to deal with mails immediately, or I mark them as ‘important’ and store them in the main mailbox so that I can find them again easily and quickly.

I try to only keep mails around in my mailbox that concern ongoing topics, discussions or current matters of concern. Everything else should get stored away. It is hard work to maintain the number of emails there at a low number. As you all know.

Writing email

I averaged at less than 200 emails written per month during 2015. That’s 6-7 per day.

That makes over 150 received emails for every email sent.

Categorieën: Mozilla-nl planet

Thunderbird is GO: Mozilla prepares to jettison mail client - The Register

Nieuws verzameld via Google - di, 26/04/2016 - 06:59

The Register

Thunderbird is GO: Mozilla prepares to jettison mail client
The Register
In a report provided to Mozilla by Simon Phipps, the Software Freedom Conservancy and The Document Foundation are named as possible hosts for the project. Phipps suggests Thunderbird could only remain under the Mozilla Foundation under an ...
Two Foundations Are Willing to Take Over Thunderbird DevelopmentSoftpedia News

alle 2 nieuwsartikelen »Google Nieuws
Categorieën: Mozilla-nl planet

Mozilla Firefox 46.0 Now Available to Download with GTK3 Integration for Linux - Softpedia News (blog)

Nieuws verzameld via Google - di, 26/04/2016 - 02:27

Softpedia News (blog)

Mozilla Firefox 46.0 Now Available to Download with GTK3 Integration for Linux
Softpedia News (blog)
Just a few moments ago, we discovered that Mozilla has uploaded the final version of the Firefox 46.0 web browser to its FTP servers, making them available to download for all supported platforms. The Firefox 46.0 web browser is expected to be ...

Categorieën: Mozilla-nl planet

Air Mozilla: Mozilla Weekly Project Meeting, 25 Apr 2016

Mozilla planet - ma, 25/04/2016 - 20:00

Mozilla Weekly Project Meeting The Monday Project Meeting

Categorieën: Mozilla-nl planet

Allen Wirfs-Brock: Slide Bite: Survival of the Fittest

Mozilla planet - ma, 25/04/2016 - 19:31

incrementalevolution

The first ten or fifteen years of a computing era is a period of chaotic experimentation. Early product concepts rapidly evolve via both incremental and disruptive innovations. Radical ideas are tried. Some succeed and some fail. Survival of the fittest prevails. By mid-era, new stable norms should be established. But we can’t predict the exact details.

Categorieën: Mozilla-nl planet

Google Glass startup secures $17 million, QAComplete 11.0, and Mozilla fights ... - SDTimes.com

Nieuws verzameld via Google - ma, 25/04/2016 - 18:22

SDTimes.com

Google Glass startup secures $17 million, QAComplete 11.0, and Mozilla fights ...
SDTimes.com
Google Glass could be coming to health systems, as startup Augmedix has secured US$17 million in a strategic round of funding that includes investments from Sutter Health, Dignity Health, Catholic Health Initiatives, TriHealth, and one other. This ...

en meer »Google Nieuws
Categorieën: Mozilla-nl planet

Pagina's