mozilla

Mozilla Nederland LogoDe Nederlandse
Mozilla-gemeenschap

Abonneren op feed Mozilla planet
Planet Mozilla - http://planet.mozilla.org/
Bijgewerkt: 3 uur 30 min geleden

Air Mozilla: Martes mozilleros

4 uur 41 min geleden

Martes mozilleros Reunión bi-semanal para hablar sobre el estado de Mozilla, la comunidad y sus proyectos.

Categorieën: Mozilla-nl planet

Rail Aliiev: Funsize is ready for testing!

4 uur 56 min geleden

Funsize is very close to be enabled in production! It has undergone a Rapid Risk Assessment procedure, which found a couple of potential issues. Most of them are either resolved or waiting for deployment.

To make sure everything works as expected and to catch some last-minute bugs, I added new update channels for Firefox Nightly and Developer Edition. If you are brave enough, you can use the following instructions and change your update channels to either nightly-funsize (for Firefox Nightly) or aurora-funsize (for Firefox Developer Edition).

TL;DR instruction look like this:

  • Enable update logging. Set app.update.log to true in about:config. This step is optional, but it may help with debugging possible issues.
  • Shut down all running instances of Firefox.
  • Edit defaults/pref/channel-prefs.js in your Firefox installation directory and change the line containing app.update.channel with:
pref("app.update.channel", "aurora-funsize"); // Firefox Developer Edition

or

pref("app.update.channel", "nightly-funsize"); // Firefox Nightly
  • Continue using you Firefox

You can check your channel in the About dialog and it should contain the channel name:

About dialog Reporting Issues

If you see any issues, please report them to Bugzilla.

Categorieën: Mozilla-nl planet

Robert O'Callahan: rr Talk Video From TCE 2015

7 uur 52 min geleden

The good people at the Technion have uploaded video of the TCE 2015 talks, in particular video of my rr talk. My slides are also available. This is a fairly high-level talk describing the motivation and design of rr, delving into a few interesting details and concluding with a discussion of some of the exciting possibilities that could be enabled by rr and similar technology.

Categorieën: Mozilla-nl planet

Byron Jones: happy bmo push day!

13 uur 29 min geleden

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

  • [1178231] When the tracking section is collapsed, keywords are displayed like they are in the whiteboard
  • [1180449] The modal user interface has changed the behavior of ctype=xml URLs
  • [1180711] invalid_cookies_or_token should have a real error code
  • [1172968] Move the scripts we want to keep from contrib/* and place them in scripts/ directory. Remove contrib from repo
  • [1180788] b.m.o modal UI “fixed in” label isn’t quite right for B2G
  • [1180776] Mozilla Recruiting Requisition Opening Process Template: Job Description Update

discuss these changes on mozilla.tools.bmo.


Filed under: bmo, mozilla
Categorieën: Mozilla-nl planet

Ehsan Akhgari: Local Autoland

14 uur 54 min geleden

It has been a while since I’ve asked myself: “Is the tree open?”

These days, when I want to land something on mozilla-inound, I switch to my git-workdir[1], I cherry-pick the commit that I want to land, and I type the following in my terminal:

$ land

Land is a very sophisticated bot that tries to land your commits for you!  It assumes you use git-cinnabar, which you should if you use git.  Porting it to Mercurial is left as an exercise.

FAQ
  • Isn’t this wasteful for the infrastructure?
    The frequency of the tool is adjustable, and I sometimes to tune it back to poll less frequently.  However our infrastructure should be very well capable of handling load at this level (please let me know if this assumption is flawed!)
  • Is this how we sometimes see you push immediately after the tree opens?
    Of course!
Categorieën: Mozilla-nl planet

Cameron Kaiser: Beta 1 aftermath

15 uur 34 min geleden
So let's sum up the first 38 beta.

Confirmed bugs: Facesuck seems to be totally whacked in Ion mode (it works fine in Baseline only mode). IonPower passes all the JIT tests, though, so this must be something that the test suite does not cover. I'm investigating some other conformance test suites and corrected a couple other variances so far between Baseline and Ion but none of them appear to be what's ailing Faceblech yet.

Also, we have another web font that makes ATSUI puke, except it has an inconveniently null PostScript name so we can't filter it with the existing method. Fortunately Tobias had come up with an alternative font filter system some time ago that should work with 10.4.

Not confirmed (yet?): a few people have reported that memory usage skyrockets upon quit and the browser crashes (inevitably after exceeding its addressing space), on a variety of systems, both 10.4 and 10.5. I can't reproduce this on any of the test machines.

I need to do more looking into the stored passwords question.

Since we're out of runway, i.e., ESR31, and we need one more beta before release, I'm going to keep working on the Facebork problem (or at least try to fix it by fixing something else) until July 24. If we can't do it by then, I guess we launch without IonPower, which is unfortunate and will regress JavaScript performance, but we will still at least have Baseline. Faceburp is just too big to debug in place, so I need you folks to find another site that has similar problems. I haven't been able to yet myself.

Categorieën: Mozilla-nl planet

Nicholas Nethercote: Compacting GC

16 uur 50 min geleden

Go read Jon Coppeard’s description of the compacting GC algorithm now used by SpiderMonkey!

Categorieën: Mozilla-nl planet

John O'Duinn: “Hot Seat: The CEO Guidebook” by Dan Shapiro

19 uur 58 min geleden

This book just came out and I loved it. If you are starting a company, or thinking of it, you need to read this book. Period.

Dan covered a whole range of topics very succinctly, and in easy-to-follow language. When and how to raise funds. What all those terms mean. Who should (and should not!) be on your board, and why. How to allocate shares and ownership between co-founders. Where to incorporate your company (Dan has strong opinions on this!). How to create (and then also maintain) company culture. A great section on decision making. A section on “Hiring” in the context of the Manhattan project vs the moon shot Apollo project that I think every engineering hiring manager should read before building a team. Several true stories about startups where co-founders mismatches caused company threatening problems (trivia: 6 of 10 startups lose a co-founder in early days). And some good (and bad!) stories of how important trust was.

Some great quotes that resonated with me:

“You have limited resources of time and money. When they run out, you go bankrupt. The important thing is not cost/benefit: it’s opportunity cost.”

(in the context of how much travel was needed for all the in-person meetings with investors when raising funding) “…Alaska Airlines gave me MVP status for my efforts. In January.”

“Entrepreneurship is the pursuit of opportunity without regard to the resources currently controlled”. Prof Stevenson, Harvard.

In a variation of the “fail fast” mantra in developer circles, Dan notes that “…while it might seem like cold comfort now, the sooner you fail, the sooner you can try again.” Oh, and he’s not just saying it – that was the ending of a chapter where he detailed the failure of one of his startups.

His tolerance for large volumes of coffee and pointer to suggested reading “Coffee, CYP1A2 Genotype, and Risk of Myocardial Infarction” was a great and unexpected tangent for me personally. (More info here Journal of American Medical Association)

“Startups don’t out think their competitors; they out-execute them.”

“If leadership is the forest, then management is the trees. Day to day, it’s what consumes your time, and its imperative that you get it right.”

It takes skill and seasoned-experience-in-the-field to have one person cover all these different topics. Even more skill to do so clearly, and concisely. Putting them all together in a way that makes sense was great. Just great. If you are starting a company, or thinking of it, you need to read this book. Period.

Aside: Having this on my kindle app, on my trusty nexus5 phone was quite a good reading experience. The book was written in short, digestible chapters, which I could quickly complete standing a store line, or in the back of a taxi between meetings. It also encouraged me to think more about the chapter I just finished in the time before I got to stop and read some more. A nice way to digest the many lessons in here. I’m still experimenting with what books I find do work best on phone+kindle vs ink-on-paper, but at least for this book, reading on kindle worked for me.

(Disclaimer: I bought this book because I’m starting my own company, and that is the basis of the above review. As this book is published by O’Reilly Press, it feels important to disclose that I am also currently doing some work with O’Reilly… which did not influence anything I wrote here.)

Categorieën: Mozilla-nl planet

Chris Cooper: Releng & Relops weekly highlights - July 3, 2015

ma, 06/07/2015 - 23:23

Welcome to the weekly releng Friday update, Whistler hangover edition.

Half the team took time off after Whistler. With a few national holidays sprinkled in, things were pretty slow last week. Still, those of us who were still around took advantage of the lull to get stuff done.

tl;dr

Taskcluster: Our new intern, Anthony Miyaguchi, started in San Francisco and will working on crash symbols uploads in TaskCluster. Our other intern, Anhad, has almost finished his work migrating spidermonkey to taskcluster. Morgan and Jonas are investigating task graph creation directly from github. Dustin continues to make efficiency improvements in the Fennec Taskcluster builds.

Modernize infrastructure: Mark, Q, and Rob continue to work on standing up our new Windows build platform in AWS. This includes measuring some unexpected performance improvements.

Improve release pipeline: We’re standing up a staging version of Ship-It to make it easier to iterate. Ben’s working on a new-and-improved checksum builder for S3, and Mike fixed a problem with l10n updates.

Improve CI pipeline: Jordan pushed the archiver relengapi endpoint and client live. They are now being actively used for mozharness on the ash project branch. catlee deployed the hg bundleclone extension to our Mac and Linux platforms, and Rail deployed a new version of fun size with many integrity improvements.

Release: Firefox 39.0 is in the wild!

Tune in again next week!

And here are all the details:

Taskcluster
  • Our intern, Anhad, has nearly finished porting Spidermonkey to TaskCluster (https://bugzil.la/1164656). He’ll have a blog post with details coming up shortly.
  • Morgan decided it would be a good idea if the container we used to build 32-bit Linux builds was under our direct control, so we spent some time this week putting one together. (https://bugzil.la/1178161)
  • Morgan and Jonas began sketching out how we can create task graphs directly from github integration by using organization hooks (https://bugzil.la/1179458). This will be an important piece for autoland.
  • Dustin continues to make efficiency improvements in the Fennec TC builds. Last week, he worked installing java for android builds via tooltool rather than on the base image for the build host. (https://bugzil.la/1161075). He also filed a bug to make sure the tooltool client deletes downloads after unpacking to avoid some of the existing overhead incurred by using tooltool for an increasing number of things (https://bugzil.la/1179777).
  • Dustin also wrote a blog post about how to run ad-hoc task using taskcluster: http://code.v.igoro.us/posts/2015/07/ad-hoc-tasks-in-taskcluster.html
Operational work
  • Coop was in California to onboard our new intern, Anthony Miyaguchi. Anthony’s first task will be figuring out how to upload symbols to Socorro API from a separate task in TaskCluster (https://bugzil.la/1168979). Welcome, Anthony!
Modernize infrastructure
  • Microsoft is deprecating the use of SHA-1 Authenticode signatures at the end of the year. This is good for the safety of internet users in general, unless you happen to still be on Windows XP SP2 or earlier which do _not_ support SHA-2 or other newer signature algorithms. This means that if Mozilla needs to ship to XP SP2 _and_ XP SP3 (and higher) after 2016-01-01, we may not be able to ship them the same binaries. Ben spent some time looking at potential solutions this week. (https://bugzil.la/1079858)
  • Mark has been adding new xml-based config support options for our new Windows instances in ec2 (https://bugzil.la/1164943).
  • Having Windows builds in AWS is a win from a scalability standpoint, but early measurements indicate that builds in AWS might also be faster than our current hardware builders by up to 30%. Q has been capturing build time comparisons for build slaves in AWS versus colo hardware to get a better picture of the potential wins (https://bugzil.la/1159384).
  • Rob deployed an updated version of runslave.py to all Windows slaves, finishing off a round of standardization and correctness work begun a few months ago (https://bugzil.la/115406).
Improve release pipeline
  • As part of our ongoing migration off of our monolithic ftp server, Ben has been iterating on getting checksum builders working with S3 (https://bugzil.la/117414). The eventual goal will be to run these as tasks in Taskcluster.
  • In Whistler, we decided it was important to maintain a staging version of release runner / ship it to allow us to iterate more quickly and safely on these tools. Ben spent some time this week planning how to facilitate supporting a staging version alongside the production deployment (https://bugzil.la/1178324).
  • Mike landed a fix to a branding issue that was preventing developer edition l10n builds from correctly identifying themselves to the update server (https://bugzil.la/1178785).
Improve CI pipeline
  • At the start of the quarter, Jordan was tasked with moving mozharness into the gecko tree. Through discussion with Dustin and others, this gradually morphed into creating a relengapi endpoint that allows you to get a tarball of any repo and rev subdirectory, upload it to s3, and download/unpack it locally. This would pave the way for being able to put *anything* in the gecko tree by reference, and still being able to deploy it or use it without checking out the tree. The archiver relengapi endpoint and client is now live and being actively used on the ash project branch. We hope to uplift it to mozilla-central by the end of this week (https://bugzil.la/1131856).
  • coop added buildprops.json to the list of files uploaded to TaskCluster as part of the build process (https://bugzil.la/117709). This makes it easier for developers to replicate buildbot builds locally or on loaned machines because now they have access to the same seed variables as buildbot.
  • catlee deployed the hg bundleclone extension to our Mac and Linux platforms last week (https://bugzil.la/1144872). Coupled with the server-side improvements deployed by dev services recently, we are gradually reducing the complexity and overhead of VCS operations that we need to maintain in releng code.
  • Rail deployed a new version of funsize (0.11), our on-demand update generation service. The new version includes improvements to use whitelisted domains, and virus scanning complete and performing signature verification on complete MAR files before creating partial MARs (https://bugzil.la/1176428).
Releases

See you next week!

Categorieën: Mozilla-nl planet

Air Mozilla: Tech Talk: The Power of Emotion and Delight

ma, 06/07/2015 - 21:00

 The Power of Emotion and Delight Ricardo Vazquez will be speaking on, "The Power of Emotion and Delight: Microinteractions."

Categorieën: Mozilla-nl planet

Air Mozilla: Mozilla Weekly Project Meeting

ma, 06/07/2015 - 20:00

Mozilla Weekly Project Meeting The Monday Project Meeting

Categorieën: Mozilla-nl planet

About:Community: MDN Fellows Successfully Oriented

ma, 06/07/2015 - 18:18

The first-ever cohort of MDN Fellows convened at the Mozilla Vancouver space the weekend of June 20. This MDN Fellowship Pilot is an experiment for Mozilla to engage advanced web developers in strategic projects at Mozilla to advance our teaching and learning objectives.

Day 1: Learning About Learning

One of the first things we did was to collectively identify shared goals for the weekend:

  • Welcome our Fellows into the Mozilla fold.
  • Create ties between our Fellows and their project mentors.
  • Build familiarity with key learning and curriculum design principles.
  • Set up our Fellows for success in creating Content Kits, a new framework designed by both MDN and the Mozilla Foundation to facilitate wide teaching of web content.
  • Understand how the Fellows’ work ties into the broader mission and efforts at Mozilla.

And Day 1 was an exercise in integrity: because one of the least effective ways people learn is by lecture – and since we wanted our fellows to learn about learning – we all jumped in and engaged with learning content. Bill Mills, Community Manager for Mozilla’s Science Lab, conveyed several principles. A few nuggets that our teams have already started to apply to their projects:

  • Structure curriculum into as small, manageable pieces as possible. This allows instructors and students to customize and adapt the content to their specific needs and learning pace. This also helps avoid the common pitfall of underestimating how much time is required to teach material generally.
  • Employ techniques to identify gaps in learning. For example, it’s possible to design multiple choice answers to flag specific learning errors e.g. if the question is “What is 23 + 28?” and a student selects one of the incorrect answers of “41” then you can assume the student did not properly ‘carry’ in their math.
  • Provide multiple approaches to explain the same issue to avoid the common pitfall of simply repeating the information more slowly, or more loudly ;).

Day 2: Getting to Brass Tacks

Day 2 had our Fellows applying their new knowledge to their own projects. They developed a plan of attack for their respective work for the remainder of the Fellowship. Some highlights:

The Curriculum team was well-served by referencing the Dunning-Kruger effect in designing its pre-requisites list. Specifically, they decided to parse this out using a “get information as you need it” approach for the pre-reqs rather than present their potential instructors with one long daunting list.

Both the Service Workers team and the WebGL team are embracing the above-mentioned concept of modularizing their content to make it more manageable. Specifically, Service Workers will create different approaches for different use cases to accommodate the evolving nature of its nascent technology; and WebGL will parse out different components so instructors and students can create reusable hackable code samples.

The Test The Web Forward team is employing “reverse instructional design” so its instructors can help others understand how problems are solved a step-by-step basis that students can dissect rather than simply see the final ‘answers.’ If you’ve heard of “reverse engineering” then “reverse instructional design” should make sense.

The Web App Performance Team, taking into consideration the time spent on both network as well front-end efforts, is advocating best practices and reverse engineering the problems in the code with proper documentation and examples.

How MDN Fellows Support the Mozilla Mission

Last year MDN began working with our colleagues at the Mozilla Foundation to see how we might partner to advance our common goals of growing web literacy. The work MDN is doing to expand beyond documentation and into teaching and learning dovetails nicely with the Foundation’s efforts to harmonize Mozilla’s learning and fellowship programs. This is a work in progress and we expect our MDN Fellows to play a key role in informing this.

Categorieën: Mozilla-nl planet

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

ma, 06/07/2015 - 17: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 £20. 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

Categorieën: Mozilla-nl planet

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

ma, 06/07/2015 - 16: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).

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

How to updateRun "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 changesYou can see all changes in here:
0.8.1...0.8.2Creative Commons License
This work by Zambrano Gasparnian, Armen is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
Categorieën: Mozilla-nl planet

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

ma, 06/07/2015 - 07: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 <Android version>; Mobile; rv:<Gecko version>) Gecko/<Gecko version> Firefox/<Gecko version>

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.

Categorieën: Mozilla-nl planet

This Week In Rust: This Week in Rust 86

ma, 06/07/2015 - 06: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!.

Categorieën: Mozilla-nl planet

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

zo, 05/07/2015 - 02: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.
Categorieën: Mozilla-nl planet

Adrian Gaudebert: Rethinking Socorro's Web App

za, 04/07/2015 - 14:10

rewrite-cycle.jpg
Credits @lxt

I have been thinking a lot about what we could do better with Socorro's webapp in the last months (and even more, the first discussions I had about this with phrawzty date from Spring last year). Recently, in a meeting with Lonnen (my manager), I said "this is what I would do if I were to rebuild Socorro's webapp from scratch today". In this post I want to write down what I said and elaborate it, in the hope that it will serve as a starting point for upcoming discussions with my colleagues.

State of the Art

First, let's take a look at the current state of the webapp. According to our analytics, there are 5 parts of the app that are heavily consulted, and a bunch of other less used pages. The core features of Socorro's front-end are:

Those we know people are looking at a lot. Then there are other pages, like Crashes per User, Top Changers, Explosive Crashes, GC Crashes and so on that are used from "a lot less" to "almost never". And finally there's the public API, on which we don't have much analytics, but which we know is being used for many different things (for example: Spectateur, crash-stats-api-magic, Are we shutting down yet?, Such Comments).

The next important thing to take into account is that our users oftentimes ask us for some specific dataset or report. Those are useful at a point in time for a few people, but will soon become useless to anyone. We used to try and build such reports into the webapp (and I suppose the ones from above that are not used anymore fall into that category), but that costs us time to build and time to maintain. And that also means that the report will have to be built by someone from the Socorro team who has time for it, it will go through review and testing, and by the time it hits our production site it might not be so useful anymore. We have all been working on trying to reduce that "time to production", which resulted in the public API and Super Search. And I'm quite sure we can do even better.

Building Reports

bob-the-builder.jpg

Every report is, at its core, a query of one or several API endpoints, some logic applied to the data from the API, and a view generated from that data. Some reports require very specific data, asking for dedicated API endpoints, but most of them could be done using either Super Search alone or some combination of it with other API endpoints. So maybe we could facilitate the creation of such reports?

Let us put aside the authentication and ACL features, the API, the admin panel, and a few very specific features of the web app, to focus on the user-facing features. Those can be simply considered as a collection of reports: they all call one or several models, have a controller that does some logic, and then are displayed via a Django template. I think what we want to give our users is a way to easily build their own reports. I would like them to be able to answer their needs as fast as possible, without depending on the Socorro team.

The basic brick of a fresh web app would thus be a report builder. It would be split in 3 parts:

  • the model controls the data that should be fetched from the API;
  • the controller gets that data and performs logic on it, transforming it to fit the needs of the user;
  • and the view will take the transformed data and turn it into something pretty, like a table or a graph.

Each report could be saved, bookmarked, shared with others, forked, modified, and so on. Spectateur is a prototype of such a report builder.

We developers of Socorro would use that report system to build the core features of the app (top crashers, home page graphs, etc. ), maybe with some privileges. And then users will be able to build reports for their own use or to share with teammates. We know that users have different needs depending on what they are working on (someone working on FirefoxOS will not look at the same reports than someone working on Thunderbird), so this would be one step towards allowing them to customize their Socorro.

One Dashboard to Rule Them All

So users can build their own reports. Now what if we pushed customization even further? Each report has a view part, and that's what would be of interest to people most of the time. Maybe we could make it easy for a user to quickly see the main reports that are of interest to them? My second proposal would be to build a dashboard system, which would show the views of various reports on a single page.

A dashboard is a collection of reports. It is possible to remove or add new reports to a dashboard, and to move them around. A user can also create several dashboards: for example, one for Firefox Nightly, one for Thunderbird, one for an ongoing investigation... Dashboards only show the view part of a report, with links to inspect it further or modify it.

dashboard-example.png

An example of what a dashboard could look like.

Socorro As A Platform

The overall idea of this new Socorro is to make it a platform where people can find what they want very quickly, personalize their tool, and build whatever feature they need that does not exist yet. I would like it to be a better tool for our users, to help them be even more efficient crash killers.

I can see several advantages to such a platform:

  • time to create new reports is shorter;
  • people can collaborate on reports;
  • users can tweak existing reports to better fit their needs;
  • people can customize the entire app to be focused on what they want;
  • when you give data to people, they build things that you did not even dream about. I expect that will happen on Socorro, and people will come up with incredibly useful reports.
I Need Feedback

feedback-everywhere.jpg

Concretely, the plan would be to build a brand new app along the existing one. The goal won't be to replace it right away, but instead to build the tools that would then be used to replace what we currently have. We would keep both web apps side by side for a time, continuing to fix bugs in the Django app, but investing all development time in the new app. And we would slowly push users towards the new one, probably by removing features from the Django app once the equivalent is ready.

I would love to discuss this with anyone interested. The upcoming all-hands meeting in Whistler is probably going to be the perfect occasion to have a beer and share opinions, but other options would be fine (email, IRC... ). Let me know what you think!

Categorieën: Mozilla-nl planet

Kaustav Das Modak: Decentralizing Mozilla India Evangelism Task Force

za, 04/07/2015 - 07:58
Some of the key goals of the Mozilla India Task Force Meetup ’15 included ensuring an organizational structure which promotes larger inclusion, allows wider participation and better recognition of contributors. We had precious little time to discuss about the Evangelism Task Force (ETF) in this year’s meetup, but the focus was to build an inter-disciplinary […]
Categorieën: Mozilla-nl planet

Ted Clancy: RAII helper macro

za, 04/07/2015 - 05: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.


Categorieën: Mozilla-nl planet

Pagina's