-Поиск по дневнику

Поиск сообщений в rss_planet_mozilla

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 19.06.2007
Записей:
Комментариев:
Написано: 7

Planet Mozilla





Planet Mozilla - https://planet.mozilla.org/


Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://planet.mozilla.org/.
Данный дневник сформирован из открытого RSS-источника по адресу http://planet.mozilla.org/rss20.xml, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Doug Belshaw: How I've achieved notification nirvana with a smartphone / smartband combo

Понедельник, 06 Июля 2015 г. 18:17 + в цитатник

TL;DR I’m using a cheap Sony SmartBand SWR10 to get selective vibrating notifications on my wrist from my Android phone. I never miss anything important, and I’m not constantly checking my devices.

Sony SmartBand SWR10 - image via Digital Trends

Every year I take between one and two months away from social media and blogging. I call this period Belshaw Black Ops. One of the things I’ve really enjoyed during these periods is not being constantly interrupted by notifications.

The problem with notifications systems on smartphones is that they’re still reasonably immature. You’re never really sure which ones are unmissable and which ones are just fairly meaningless social updates. When a pre-requisite of your job is ‘keeping up to date’ it’s difficult to flick the binary switch to off.

Thankfully, I’ve come across a cheap and easy way to simplify all of this. After finding out about the existence of Sony smartbands via HotUKDeals (a goldmine of knowledge as well as deals) I bought the SWR10 for about lb20. It connects via NFC and Bluetooth to Android smartphones.

The battery life of the smartband is about 3-4 days. I wear it almost all of the time - including in bed as I use the vibrating alarm to wake me up when I start to stir. I choose not to use the Sony lifelogging app as I’m not really interested in companies having that many details about me. It’s the reason I stopped wearing a Fitbit.

Sony SmartBand SWR10 notifications

My wife and I use Telegram to message each other, so my wrist vibrates discreetly when she sends me a message. I’ve also got it configured to vibrate on calendar events, phone calls, and standard SMS messages.

All of this means that my smartphone is almost permanently in Silent mode. The vibration on my wrist is enough for me to feel, but not for others to hear. It’s pretty much the perfect system for me - notification nirvana!


Comments? Questions? I’m @dajbelshaw or you can email me: mail@dougbelshaw.com

http://literaci.es/notification-nirvana


Armen Zambrano: mozci 0.8.2 - Allow using TreeHerder as a query source

Понедельник, 06 Июля 2015 г. 17:58 + в цитатник
In this release we have added an experimental feature where you can use Treeherder as your source for jobs' information instead of using BuildApi/Buildjson.
My apologies as this should have been a minor release (0.9.0) instead of a security release (0.8.2).

Contributors

Thanks to @adusca @vaibhavmagarwal and @chmanchester for their contributions.
Our latest new contributor is @priyanklodha - thank you!

How to update

Run "pip install -U mozci" to update

Major highlights

  • Added --query-source option to get data from Treeherder or Buildapi
  • Improved usage of OOP to allow for different data sources seamlessly

Minor improvements

  • Better documentation of --times
  • Cleaning up old builds-*.js files
  • Enforced line character limit

All changes

You can see all changes in here:
0.8.1...0.8.2

Creative Commons License
This work by Zambrano Gasparnian, Armen is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

http://feedproxy.google.com/~r/armenzg_mozilla/~3/LaeBM3GkvE8/mozci-082-allow-using-treeherder-as_6.html


Mike Taylor: Upcoming changes to the Firefox for Android UA string

Понедельник, 06 Июля 2015 г. 08:00 + в цитатник

If there's one thing that developers love more than the confusing nature of User Agent strings, it's when they change.

Great news, everybody.

Beginning in Firefox for Android 41, the default UA string will contain the Android version in the platform token (bug here):

Mozilla/5.0 (Android ; Mobile; rv:) Gecko/ Firefox/

And perhaps the only things that developers love more than changing UA strings is when they change conditionally.

So, for interoperability with the wild and crazy web, if a user is on a version of Android lower than 4 (which we still support), we will report the Android version as 4.4. Versions 4 and above will accurately reflect the Android version.

And in case you've forgotten, Firefox for Android is the same across Android versions, so sniffing the version won't tell you if we do or do not support the latest cool feature.

As always, send all complaints to our head of customer satisfaction.

https://miketaylr.com/posts/2015/07/upcoming-changes-to-the-firefox-for-android-ua-string.html


This Week In Rust: This Week in Rust 86

Понедельник, 06 Июля 2015 г. 07:00 + в цитатник

Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us an email! Want to get involved? We love contributions.

This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.

From the Blogosphere

New Releases & Project Updates

  • capgun. A simple utility that watches files and fires a specified command when they do.
  • pirate. A command-line arrrrguments parser, written in Rust.
  • rust-worldgen. Noise and World Generation library for Rust.
  • plex. A parser and lexer generator as a Rust syntax extension.

What's cooking on nightly?

107 pull requests were merged in the last week.

New Contributors

  • Adam Heins
  • Alex Newman
  • Christian Persson
  • Eljay
  • Kagami Sascha Rosylight

Approved RFCs

Final Comment Period

Every week the teams announce a 'final comment period' for RFCs which are reaching a decision. Express your opinions now. This week's RFCs entering FCP are:

New RFCs

Upcoming Events

If you are running a Rust event please add it to the calendar to get it mentioned here. Email Erick Tryzelaar or Brian Anderson for access.

Quote of the Week

"Greek constitution to be rewritten in #rustlang to deal with their ownership and borrowing problem."@bigthingist

Submit your quotes for next week!.

http://this-week-in-rust.org/blog/2015/07/06/this-week-in-rust-86/


Planet Mozilla Interns: Jonathan Wilde: Gossamer Sprint Two, Day Three

Воскресенье, 05 Июля 2015 г. 03:00 + в цитатник

Want more context? See the introduction to Gossamer and previous update.

Another Demo

Let’s say you make a code change to your browser and you want it today. After making your change, you need to restart the app, or in the case of browser.html clear caches and refresh the page.

With our experimental fork of browser.html, we can now apply a lot of different types of changes without a refresh.

Let’s say we want to change the experiments icon in the upper right of our browser and make it red and larger. You just make the change and hit save. The changes appear in your running browser, without any loss of state.

We’re doing this with Webpack Hot Module Replacement and React Hot Loader.

In the demo, I’m running browser.html from Webpack’s development server. It watches and serves the browser.html files from my working copy, performs incremental module builds, and has an open socket.io connection to the browser notifying it of build status.

When the working copy changes, it performs an incremental build and notifies the browser of new code. The browser can apply the changes without a restart.

What I Did on Saturday

  • Restructured browser.html so that there is one component exported per file, which plays better with React Hot Loader at the moment.
  • Moved browser.html to CommonJS, which plays better with the early builds of Webpack 2 at the moment.
  • Shifted the npm start script from ecstatic to Webpack’s development server.

Next Steps

  • Graft webpack onto the Gossamer build server.

http://jwilde.me/mozilla/2015/07/05/gossamer-two-day-three.html


Ted Clancy: RAII helper macro

Суббота, 04 Июля 2015 г. 06:45 + в цитатник

One of the most important idioms in C++ is “Resource Acquisition Is Initialization” (RAII), where the constructor of a class acquires a resource (like locking a mutex, or opening a file) and the corresponding destructor releases the resource.

Such classes are almost always used as local variables. The lifetime of the variable lasts from its point of declaration to the end of its innermost containing block.

A classic example is something like:

extern int n;
extern Mutex m;

void f() {
    Lock l(&m); // This is an RAII class.
    n++;
}

The problem is, code written with these classes can easily be misunderstood.

1) Sometimes the variable is used solely for the side-effects of its constructor and destructor. To a naive coder, this can look like an unused variable, and they might be tempted to remove it.

2) In order to control where the object is destroyed, the coder sometimes needs to add another pair of braces (curly brackets) to create a new block scope. Something like:

void f() {
    [...]

    {
        Lock l(&m);
        n++;
    }

    [...]
}

The problem is, it’s not always obvious why that extra block scope is there. (For trivial code, like the above, it’s obvious. But in real code, ‘l’ might not be the only variable defined in the block.) To a naive coder, it might even look like an unnecessary scope, and they might be tempted to remove it.

The usual solutions to this situation are: (a) Write a comment, or (b) trust people to understand what you meant. Those are both bad options.

That’s why I’m fond of the following MACRO.

#define with(decl) \
for (bool __f = true; __f; ) \
for (decl; __f; __f = false)

This allows you to write:

void f() {
    [...]

    with (Lock l(&m)) {
        n++;
    }

    [...]
}

This creates a clear association between the RAII object and the statements which depend on its existence. The code is less likely to be misunderstood.

I like to call this a with-statement (analogous to an if-statement). Any kind of variable declaration can go in the head of the with-statement (as long as it can appear in the head of a for-statement). The body of the with-statement executes once. The variable declared in the head of the statement is destroyed after the body executes.

Your code editor might even highlight ‘with‘ as a keyword, since it’s a keyword in Javascript (where it has a different — and deprecated — purpose).

I didn’t invent this kind of MACRO. (I think I first read about something similar in a Dr Dobb’s article.) I just find it really useful, and I hope you do too.


https://tedclancy.wordpress.com/2015/07/04/raii-helper-macro/


Ted Clancy: ICANN, wtf?

Пятница, 03 Июля 2015 г. 18:56 + в цитатник

If you care about privacy on the internet, you might want to check out this link: icann.wtf


https://tedclancy.wordpress.com/2015/07/03/icann-wtf/


Mozilla Reps Community: Rep of the month – May 2015

Пятница, 03 Июля 2015 г. 15:29 + в цитатник

Please join us in congratulating Mahmood Qudah of Jordan for being selected as Mozilla Rep of the Month for May 2015.

Mahmood is not just an active member in the Jordan local community but also very active in the bigger Mozilla Arabic community. He is doing lectures at universities in Jordan (many FSA events too), participating in the Marketing team for the Arabic community, he is helping in fixing RTL (right-to-left) issues in Firefox OS. In addition, he did few lectures teaching students how to start localizing Firefox OS.

Every month he is having one or two events, either organizing them or being part of them. We’re happy to see that he’s blasting both communities with new ideas every day.

Congratulations, Mahmood! Keep on rocking.

Don’t forget to congratulate him on Discourse!

https://blog.mozilla.org/mozillareps/2015/07/03/rep-of-the-month-may-2015/


Carsten Book: 7 Years at Mozilla!

Пятница, 03 Июля 2015 г. 11:23 + в цитатник

Hi,

since last month i’m now 7 years at Mozilla as full-time employee \o/

Of course I’m longer around because i started as Community Member in QA years before. And its a long way from my first steps at QA to my current role as Code Sheriff @ Mozilla.

I never actively planned to join the Mozilla Community it just happened :) I worked back in 2001 at a German Email Provider as 2nd Level Support Engineer and as part of my Job (and also to Support Customers) we used different Email Programm’s to find out how to set-up the Programm and so.

Some Friends already involved into OpenSource (some linux fans) pointed me to this Mozilla Programm (at that time M1 or so) and i liked the Idea with this “Nightly”. Having everyday a brand new Program was something really cool and so started my way into the Community without even knowing that i’m now Part of the Community.

So over the years with Mozilla i finally filed my first bug and and was scared like hell (all this new fields in a non-native language) and not really knowing what i signed up when i clicked up this “submit” button in bugzillla :)  (was not even sure if i’m NOW supposed to fix the bug :)

And now i file dozens of Bugs every day while on Sheriffduty or doing other tasks :)

I learned a lot of stuff over the last years and still love being part of Mozilla  and its the best place to work for me! So on to the next years at Mozilla!

– Tomcat

https://blog.mozilla.org/tomcat/2015/07/03/7-years-at-mozilla/


Carsten Book: a day in sheriffing

Пятница, 03 Июля 2015 г. 11:11 + в цитатник

Hi,

since i talked with a lot of people about Sheriffing and what we do here is what a typical day for me look:

We care about the Code Trees like Test Failures etc

I usually start the day with checkin the trees we are responsible for  for test failures using treeherder. This gives me first a overview of the current status and as well make sure that everything is ok for the Asian and European Community which is online at that time.

This Tasks is ongoing till the end of my duty shift. From time to time this means we have to do backouts for code/test regressions.
Beside this i do stuff like checkin-neededs, uplifts etc and other tasks and of course always availble for questions etc on irc :)

Also i was thinking about some parts of my day-to-day experience:

Backouts and Tree Closures:

While backouts of code for test failures/bustages etc is one important task of sheriffs (and the managing of tree closures related to this), its always a mixed feeling to backout work from someone (and no one wants to cause a bustage) but its important to ensure quality of our products.

Try Server!!!

Tree Closures due to backouts can have the side effect that others are blocked with checkins. So if in doubt if your patch compile or could cause test regressions, please consider a try run, this helps at lot to keep tree closures for code issues at a minimum.

And last but not least Sheriffing is a Community Task! So if you want to be part of the Sheriff Team as Community Sheriff please sent me a mail at tomcat at mozilla dot com

Thanks!

– Tomcat

https://blog.mozilla.org/tomcat/2015/07/03/a-day-in-sheriffing/


About:Community: MDN at Whistler

Пятница, 03 Июля 2015 г. 07:20 + в цитатник

The MDN community was well-represented at the Mozilla “Coincidental Work Week” in Whistler, British Columbia, during the last week in June. All of the content staff, a couple of the development staff, and quite a few volunteers were there. Meetings were met, code was hacked, docs were sprinted, and fun was funned.

Cross-team conversations

One of the big motivations for the “Coincidental Work Week” is the opportunity for cross-pollination among teams, so that teams can have a high-bandwidth conversations about their work with others. MDN touches many other functional groups within Mozilla, so we had a great many of these conversations. Some MDN staff were also part of “durable” (i.e., cross-functional) teams within the Engagement department, meeting with product teams about their marketing needs. Among others, MDN folks met with:

  • Add-ons, about future plans for add-ons.
  • Mozilla Foundation, about MDN’s role in broader learning initiatives, and about marketing themes for the last half of the year.
  • Firefox OS, about their plans in the next six months, and about increasing participation in Firefox OS.
  • Developer Relations and Platform Engineering, about improving coordination and information sharing.
  • Firefox Developer Tools, about integrating more MDN content into the tools, and making the dev-tools codebase more accessible to contributors.
  • Participation, to brainstorm ways to increase retention of MDN contributors.

Internal conversations

The MDN community members at Whistler spent some time as a group reflecting on the first half of the year, and planning and prioritizing for the second half of the year. Sub-groups met to discuss specific projects, such as the compatibility data service, or HTML API docs.

Hacking and sprinting

Lest the “Work Week” be all meetings, we also scheduled time for heads-down productivity. MDN was part of a web development Hack Day on Wednesday, and we held doc sprints for most of the day on Thursday and Friday. These events resulted in some tangible outputs, as well as some learning that will likely pay off in the future.

  • Heather wrote glossary entries and did editorial reviews.
  • Sebastian finished a new template for CSS syntax.
  • Sheppy worked on an article and code sample about Web RTC.
  • Justin finished a prototype feature for helpfulness ratings for MDN articles.
  • Saurabh prototyped an automation for badge nominations, and improved CSS reference pages’ structure and syntax examples.
  • Klez got familiar with the compatibility service codebase and development workflow; he also wrote glossary entries and other learning content.
  • Mark learned about Kuma by failing to get it running on Windows.
  • Will finished a patch to apply syntax highlighting to the CSS content from MDN in Dev Tools.

And fun!

Of course, the highlight of any Mozilla event is the chance to eat, drink, and socialize with other Mozillians. Planned dinners and parties, extracurricular excursions, and spontaneous celebrations rounded out the week. Many in the MDN group stayed at a hotel that happened to be a 20-minute walk from most of the other venues, so those of us with fitness trackers blew out our step-count goals all week. A few high points:

  • Chris celebrated his birthday at the closing party on Friday, at the top of Whistler mountain.
  • Mark saw a bear, from the gondola on the way up to the mountain-top party.
  • Saurabh saw snow for the first time. In June, no less.

    http://blog.mozilla.org/community/2015/07/03/mdn-at-whistler/


    Will Kahn-Greene: Input: Thank You project Phase 1: Part 1

    Пятница, 03 Июля 2015 г. 04:00 + в цитатник

    Summary

    Beginning

    When users click on "Submit feedback..." in Firefox, they end up on our Input site where they can let us know whether they're happy or sad about Firefox and why. This data gets collected and we analyze it in aggregate looking for trends and correlations between sentiment and subject matter, releases, events, etc. It's one of the many ways that users directly affect the development of Firefox.

    One of the things that's always bugged me about this process is that some number of users are leaving feedback about issues they have with Firefox that aren't problems with the product, but rather something else or are known issues with the product that have workarounds. It bugs me because users go out of their way to leave us this kind of feedback and then they get a Thank You page that isn't remotely helpful for them.

    I've been thinking about this problem since the beginning of 2014, but hadn't had a chance to really get into it until the end of 2014 when I wrote up a project plan and some bugs.

    In the first quarter of 2015, Adam worked on this project with me as part of the Outreachy program. I took the work that he did and finished it up in the second quarter of 2015.

    Surprise ending!

    The code has been out there for a little under a month now and early analysis suggests SUCCESS!

    But keep reading for the riveting middle!

    This blog post is a write-up for the Thank You project phase 1. It's long because I wanted to go through the entire project beginning to end as a case study.

    Read more… (17 mins to read)

    http://bluesock.org/~willkg/blog/mozilla/input_thankyou_phase1.html


    Mozilla Open Policy & Advocacy Blog: Decisive moment for net neutrality in Europe

    Пятница, 03 Июля 2015 г. 02:54 + в цитатник

    After years of negotiations, the E.U. Telecom Single Market Regulation (which includes proposed net neutrality rules) is nearing completion. If passed, the Regulation will be binding on all E.U. member states. The policymakers – the three European governmental bodies:  the Parliament, the Commission, and the Council – are at a crossroads: implement real net neutrality into law, or permit net discrimination and in doing so threaten innovation and competition. We urge European policymakers to stand strong, adopt clear rules to protect the open Internet, and set an example for the world.

    At Mozilla, we’ve taken a strong stance for real net neutrality, because it is central to our mission and to the openness of the Internet. Just as we have supported action in the United States and in India, we support the adoption of net neutrality rules in Europe. Net neutrality fundamentally protects competition and innovation, to the benefit of both European Internet users and businesses. We want an Internet where everyone can create, participate, and innovate online, all of which is at risk if discriminatory practices are condoned by law or through regulatory indifference.

    The final text of European legislation is still being written, and the details are still gaining shape. We have called for strong, enforceable rules against blocking, discrimination, and fast lanes are critical to protecting the openness of the Internet. To accomplish this, the European Parliament needs to hold firm to its five votes in the last five years for real net neutrality. Members of the European Parliament must resist internal and external pressures to build in loopholes that would threaten those rules.

    Two issues stand out as particularly important in this final round of negotiations: specialized services and zero-rating. On the former, specialized services – or “services other than Internet access services” – represent a complex and unresolved set of market practices, including very few current ones and many speculative future possibilities. While there is certainly potential for real value in these services, absent any safeguards, such services risk undermining the open Internet. It’s important to maintain a baseline of robust access, and prevent relegating the open Internet to a second tier of quality.

    Second, earlier statements from the E.U. included language that appeared to endorse zero-rating business practices. Our view is that zero-rating as currently implemented in the market is not the right path forward for the open Internet. However, we do not believe it is necessary to address this issue in the context of the Telecom Single Market Regulation. As such, we’re glad to see such language removed from more recent drafts and we encourage European policymakers to leave it out of the final text.

    The final text that emerges from the European process will set a standard not only for Europe but for the rest of the world. It’s critical for European policymakers to stand with the Internet and get it right.

    Chris Riley, Head of Public Policy
    Jochai Ben-Avie, Internet Policy Manager

    https://blog.mozilla.org/netpolicy/2015/07/02/decisive-moment-for-net-neutrality-in-europe/


    The Mozilla Blog: New Sharing Features in Firefox

    Четверг, 02 Июля 2015 г. 23:58 + в цитатник

    Whichever social network you choose, it’s undeniable that being social is a key part of why you enjoy the Web. Firefox is built to put you in control, including making it easier to share anything you like on the Web’s most popular social networks. Today, we’re announcing that Firefox Share has been integrated into Firefox Hello. We introduced Firefox Share to offer a simple way of sharing Web content across popular services such as Facebook, Twitter, Tumblr, LinkedIn and Google+ and other social and email services  (full list here) to help you share anything on the Web with any or all of your friends.

    Firefox Hello link sharing

    Firefox Hello, which we’ve been developing in beta with our partner, Telefonica, is the only in-browser video chat tool that doesn’t require an account or extra software downloads. We recently added screen sharing to Firefox Hello to make it easier to share anything you’re looking at in your video call. Now you can also invite friends to a Firefox Hello video call by sharing a link via the social network or email account of your choice, all without leaving your browser tab. That includes a newly added Yahoo Mail integration in Firefox Share that lets Yahoo Mail users share Hello conversation links or other Web content directly from Firefox Share.

    For more information:
    Release Notes for Firefox for Windows, Mac, Linux
    Release Notes for Android
    Download Firefox

    https://blog.mozilla.org/blog/2015/07/02/new-sharing-features-in-firefox/


    Air Mozilla: German speaking community bi-weekly meeting

    Четверг, 02 Июля 2015 г. 22:00 + в цитатник

    Mozilla Addons Blog: T-Shirt Form Data Exposure

    Четверг, 02 Июля 2015 г. 21:17 + в цитатник

    On Monday, June 15, 2015 Mozilla announced on the Add-ons blog a free special edition t-shirt for eligible AMO developers. Eligible developers were requested to sign up via Google Form and asked to input their full name, full address, telephone number and T-shirt size.

    This document was mistakenly configured to allow potential public access for less than 24 hours, exposing the response data for 70 developers. As soon as the incident was discovered, we immediately changed the permission level to private access. Other than the developer who discovered and reported this incident, we are not aware of anyone without authorization accessing the spreadsheet.

    We have notified the affected individuals. We regret any inconvenience or concern this incident may have caused our AMO developer community.

    https://blog.mozilla.org/addons/2015/07/02/t-shirt-form-data-exposure/


    Air Mozilla: Web QA Weekly Meeting

    Четверг, 02 Июля 2015 г. 19:00 + в цитатник

    Web QA Weekly Meeting This is our weekly gathering of Mozilla'a Web QA team filled with discussion on our current and future projects, ideas, demos, and fun facts.

    https://air.mozilla.org/web-qa-weekly-meeting/


    Roberto A. Vitillo: Telemetry metrics roll-ups

    Четверг, 02 Июля 2015 г. 18:29 + в цитатник

    Our Telemetry aggregation system has been serving us well for quite some time. As Telemetry evolved though, maintaining the codebase and adding new features such as keyed histograms has proven to be challenging. With the introduction of unified FHR/Telemetry, we decided to rewrite the aggregation pipeline with an updated set of requirements in mind.

    Metrics

    A ping is the data payload that clients submit to our server. The payload contains, among other things, over thousand metrics of the following types:

    • numerical, like e.g. startup time
    • categorical, like e.g. operating system name
    • distributional, like e.g. garbage collection timings

    Distributions are implemented with histograms that come in different shapes and sizes. For example, a keyed histogram represent a collection of labelled histograms. It’s not rare for keyed histograms to have thousands of possible labels. For instance, MISBEHAVING_ADDONS_JANK_LEVEL, which measures the longest blocking operation performed by an add-on, has potentially a label for each extensions.

    The main objective of the aggregator is to create time or build-id based aggregates by a set of dimensions:

    • channel, e.g. nightly
    • build-id or submission date
    • metric name, e.g. GC_MS
    • label, for keyed histograms
    • application name, e.g. Fennec
    • application version, e.g. 41
    • CPU architecture, e.g. x86_64
    • operating system, e.g. Windows
    • operating system version, e.g. 6.1
    • e10s enabled
    • process type, e.g. content or parent

    As scalar and categorical metrics are converted to histograms during the aggregation, ultimately we display only distributions in our dashboard.

    Raw Storage

    We receive millions of pings each day over all our channels. A raw uncompressed ping has a size of over 100KB. Pings are sent to our edge servers and end up being stored in an immutable chunk of up to 300MB on S3, partitioned by submission date, application name, update channel, application version, and build id.

    As we are currently collecting v4 submissions only on pre-release channels, we store about 700 GB per day; this considering only saved_session pings as those are the ones being aggregated. Once we start receiving data on the release channel as well we are likely going to double that number.

    As soon as an immutable chunk is stored on S3, an AWS lambda function adds a corresponding entry to a SimpleDB index. The index allows Spark jobs to query the set of available pings by different criteria without the need of performing an expensive scan over S3.

    Spark Aggregator

    A daily scheduled Spark job performs the aggregation, on the data received the day before, by the set of dimensions mentioned above. We are likely going to move from a batch job to a streaming one in the future to reduce the latency from the time a ping is stored on S3 to the time its data appears in the dashboard.

    Two kinds of aggregates are produced by aggregator:

    • submission date based
    • build-id based

    Aggregates by build-id computed for a given submission date have to be added to the historical ones. As long as there are submissions coming from an old build of Firefox, we will keep receiving and aggregating data for it. The aggregation of the historical aggregates with the daily computed ones (i.e. partial aggregates) happens within a PostgreSQL database.

    Database

    There is only one type of table within the database which is partitioned by channel, version and build-id (or submission date depending on the aggregation type).

    As PostgreSQL supports natively json blobs and arrays, it came naturally to express each row just as a couple of fields, one being a json object containing a set of dimensions and the other being an array representing the histogram. Adding a new dimension in the future should be rather painless as dimensions are not represented with columns.

    When a new partial aggregate is pushed to the database, PostreSQL finds the current historical entry for that combination of dimensions, if it exists, and updates the current histogram by summing to it the partially aggregated histogram. In reality a temporary table is pushed to the database that contains all partial aggregates which is then merged with the historical aggregates, but the underlying logic remains the same.

    As the database is usually queried by submission date or build-id and as there are milions of partial aggregates per day deriving from the possible combinations of dimensions, the table is partitioned the way it is to allow the upsert operation to be performed as fast as possible.

    API

    An inverted index on the json blobs allows to efficiently retrieve, and aggregate, all histograms matching a given filtering criteria.

    For example,

    select aggregate_histograms(histograms)
    from build_id_nightly_41_20150602
    where dimensions @> '{"metric": "SIMPLE_MEASURES_UPTIME", 
                          "application": "Firefox",
                          "os": "Windows"}'::jsonb;
    
    

    retrieves a list of histograms, one for each combination of dimensions matching the where clause, and adds them together producing a final histogram that represents the distribution of the uptime measure for Firefox users on the nightly Windows build created on the 2nd of June 2015.

    Aggregates are made available through a HTTP API. For example, to retrieve the aggregated histogram for the GC_MS metric on Windows for build-ids of the 2015/06/15 and 2015/06/16:

    curl -X GET "http://SERVICE/aggregates_by/build_id/channels/nightly/?version=41&dates=20150615,20150616&metric=GC_MS&os=Windows_NT"
    
    

     which returns

    {"buckets":[0, ..., 10000],
     "data":[{"date":"20150615",
              "count":239459,
              "histogram":[309, ..., 5047],
              "label":""},
             {"date":"20150616",
              "count":233688,
              "histogram":[306, ..., 7875],
              "label":""}],
     "kind":"exponential",
     "description":"Time spent running JS GC (ms)"}
    
    

    Dashboard

    Our intern, Anthony Zhang, did a phenomenal job creating a nifty dashboard to display the aggregates. Even though it’s still under active development, it’s already functional and thanks to it we were able to spot a serious bug in the v2 aggregation pipeline.

    It comes with two views, the histogram view designed for viewing distributions of measures:

    histogramand an evolution view for viewing the evolution of aggregate values for measures over time:

    evolutionAs we started aggregating data at the beginning of June, the evolution plot looks rightfully wacky before that date.


    http://robertovitillo.com/2015/07/02/telemetry-metrics-roll-ups/


    Air Mozilla: Reps weekly

    Четверг, 02 Июля 2015 г. 18:00 + в цитатник

    Byron Jones: happy bmo push day!

    Четверг, 02 Июля 2015 г. 08:59 + в цитатник

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

    • [1174057] Authentication Delegation should add an App ID column to associate api keys with specific callbacks
    • [1163761] Allow MozReview to skip user consent screen for Authentication Delegation
    • [825946] tracking flags should be cleared when a bug is moved to a product/component where they are not valid
    • [1149593] Hovering over “Copy Summary” changes the button to a grey box
    • [1171523] Change Loop product to Hello
    • [1175928] flag changes made at the same time as a cc change are not visible without showing cc changes
    • [1175644] The cpanfile created by checksetup.pl defines the same feature multiple times, breaking cpanm
    • [1176362] [Voting] When a user votes enough to confirm an individual bug, the bug does not change to CONFIRMED properly
    • [1176368] [Voting] When updating votestoconfirm to a new value, bugs with enough votes are not moved to CONFIRMED properly
    • [1161797] Use document.execCommand(“copy”) instead of flash where it is available
    • [1177239] Please create a “Taskcluster Platform” product
    • [1144485] Adapt upstream Selenium test suite to BMO
    • [1178301] webservice_bug_update.t Parse errors: Bad plan. You planned 927 tests but ran 921
    • [1163170] Giving firefox-backlog-drivers rights to edit the Rank field anywhere it appears in bugzilla
    • [1171758] Persistent xss is possible on Firefox

    discuss these changes on mozilla.tools.bmo.


    Filed under: bmo, mozilla

    https://globau.wordpress.com/2015/07/02/happy-bmo-push-day-148/



    Поиск сообщений в rss_planet_mozilla
    Страницы: 472 ... 171 170 [169] 168 167 ..
    .. 1 Календарь