Ontario’s 42nd Parliament, 1st Session: Better Local Government Act, the Superior Court of Ontario, the Canadian Charter of Rights and Freedoms, the Notwithstanding Clause, and Bill 31, Efficient Local Government Act

Logo used for education and illustrative purposes. This is not an official publication and I am not an agent of the OLA.

Hoo, that’s a title. Let’s start with a timeline, shall we?

You’ll remember from my first post in this series a rather peculiar Bill that reached the floor of the Legislative Assembly on July 30: Bill 5, Better Local Government Act, 2018. It, amongst other things, cut the number of municipal wards in Toronto from 47 to 25 a little over two months before its municipal election.

It sustained heavy debate in August and, on the final day before recess, was carried through both its second and third readings (with division). There were immediate court challenges and Ontario Superior Court Justice Edward Belobaba was asked to examine the legality of the Bill.

In Ontario, as in the rest of Canada and in the United States, we have multiple branches of government designed to keep each other in check. The legislative branch is allowed to change the laws, yes, but only if the change is constitutional according to the judicial branch.

In this case Justice Belobaba ruled that it was not constitutional. By changing the terms of the election while it was ongoing, it interfered with the candidates’ Right to Free Expression. By increasing the number of residents per councillor it impinged on residents’ effective representation in municipal politics (which the Justice argued was a form of Expression so infringed).

The Government announced its intent to file an appeal, as is expected. If you don’t appeal, you’ve given up, and no politician I know of would dare give the impression of giving up. But as the Toronto election was a mere month and a half thence, it was unlikely that a legal argument would occur early enough to matter for the election currently under way.

What wasn’t expected (by me at least) was that the Premier announced his intention to reconvene the Legislative Assembly two weeks early from its recess and use the “Notwithstanding Clause” of the Charter to assert the Province’s right to govern itself despite the provision of the Charter.

If you’re familiar with the politics of the United States, think of it like this: If a State Government wanted to ignore certain provisions of the Bill of Rights all it had to do was vote for itself to be allowed to do so. Certain rights (term limits, voter eligibility) would be inalienable, but certain other ones (fundamental freedoms of religion, expression, press, peaceful assembly…) could be voted away five years at a time. One of its intended uses was to operate in case the judicial branch overstepped its bounds, but to my knowledge that has never actually happened. (Well, the Government party alleges it has now, of course, but only history will tell if this argument has merit.)

It’s been 18 years since the last time a Province attempted to vote on a Bill that invokes the Notwithstanding clause (Alberta tried and failed to use it to prevent the recognition of same-sex marriage. Wrong side of history, folks.). And now Ontario has one on the books:

Bill 31, Efficient Local Government Act, 2018

This is identical to Bill 5, Better Local Government Act, 2018 except for a few twiddles. There’s some adjustment of related acts because there were things that were supposed to happen in August that now need to be redone with the new ward territories… but the big one is the inclusion of lines like “The amendments to this Act made by Schedule 1 to the Efficient Local Government Act, 2018 apply despite the Human Rights Code.”

You know it’s a good bill when you have to specify that it needs to happen despite Human Rights.


This is not suspending the Charter, this is using the hard-negotiated rights of the Provinces to enact a segment of the Charter to suspend parts of itself in the course of provincial business. It is legal.

But as we have seen and continue to see with people arguing that “It’s a free country, so I’m allowed to say <terrible thing to say>”, if your only argument is that it’s legal, you already know it isn’t right.

Chaos in the House:

In Ontario we have an adversarial Legislative Assembly. The Opposition is there to debate motions on their merits (or lack thereof), and generally try and cajole the Government to explain itself and maybe change its approach.

When the Premier called the Assembly back in on September 12… well, things became a little bit more than adversarial. The Premier and several MPPs (notably in the Hansard the member for Essex) broke decorum, the gallery began demonstrating and had to be cleared… and all that within the first fifteen minutes of Question Period:

After lunch, the MPPs themselves interrupted parliamentary proceeding and some  “warning and naming” happened. If the Speaker determines that a member cannot maintain decorum, that member is named by their name (not by their riding, ministerial title, or title (like “Premier” or “Leader of the Opposition”)) by the Speaker and must leave. Or be escorted out.

The first to be escorted out was the MPP for my riding of Waterloo, Ms. Catherine Fife. The second was the Leader of the Opposition, Ms. Horwath. Over a dozen MPPs were escorted from the house, and then the first reading of Bill 31 carried (on division).

The next day, September 13, after a duration of further debate on Bill 4, Cap and Trade Cancellation Act, question period started back in with the NDP MPPs back in the house:

This is a level of acrimony I didn’t expect to see, and the Speaker seems pretty tired of it all. It’s getting so bad that even the MPPs aren’t willing to put up with talking past each other anymore, the member for Mushkegowuk-James Bay filed a notice of dissatisfaction under Standing Order 38(a) about the Government’s answer to their previous question about school infrastructure.

And this is all without even debating further Bill 31 and its Notwithstanding business. This is since the Leader of the Opposition and the Leader of the Green Party are working on a Reasoned Amendment to the Bill (sometimes used as a delaying tactic, mostly intended as a way for the non-Government members to suggest alternative Bill implementations), so debate on that to-be-written Amendment must happen first.

So what’s next? Well, the Legislative Assembly stands adjourned until next Wednesday the 19th. Why? Because of, and I kid you not, the International Plowing Match in Chatham-Kent.

So we won’t hear more about the Amendment until then, and we can’t hear more about Bill 31 and its use of the Notwithstanding clause until at least then…

…which means Toronto limps on in a quantum superposition. It had 45 wards, it was growing to 47, it was ordered to have 25, and the order was struck down.

I imagine voter turnout is going to be weak-to-middling when October 22 comes around, and there may even be grounds for a legal challenge of its validity given the confusion all this nonsense is causing…

But we’ll see.



Ontario’s 42nd Parliament, 1st Session: August 2018

Logo used for education and illustrative purposes. This is not an official publication and I am not an agent of the OLA.

I’ve been lax in preparing this update as I had to travel for work in August and I wasn’t expecting anything of substance to happen until the Legislative Assembly reconvened around September 24.

I was wrong about that, but that’ll be a subject for a subsequent update. For now let’s focus on what the Ontario Legislative Assembly did in the two weeks (7 meeting days) it pursued its business in August.

We left off with the Government in a snit about who may have said what and the Opposition trying gamely to carry on but I found no one bothering to bring it up again on August 1st so I guess the matter must have been settled out of the chamber. So let’s talk about Bills.

Bills 6, 7, 8, 10, 12, and 13 have all stalled at First Reading. The Government didn’t move forward on the post of Poet Laureate, regulating gas prices, publishing large health care salaries, making firefighter training safer, closing an employment standards loophole for the auto sector, and imposing minimum standards of daily care for Long-Term Care Homes.

Bill 9 and 11 were referred to committee, so PTSD Awareness Day and regulations requiring that movable soccer goals be firmly attached to the ground should go ahead in a timely fashion, once committees have a chance to meet.

Also of marginal note are Bills 14 through 23, 25 through 27, and 29. All of these bills are about counting the invasive Zebra Mussel populations in Ontario waterways, handfuls of waterways in each bill.

As for bills debated and completed in August:

Bill 4, “Cap and Trade Cancellation Act, 2018”

The Second Reading hasn’t completed and the debate is ongoing. The terms of the debate seem to be:

Opposition: “Climate Change is real. Cap and Trade sucks, but it’s better than the nothing the Government aims to replace it with.”

Government: “We agree that Climate Change is real. Cap and Trade is worse than nothing since it grants large polluters free passes and harms people who drive.”

Despite the Speaker asking for the debate to adjourn after 6 and a half hours (!!) across all the days of debate, the PC Minister for Education Thompson asks that the debate continue.

Which is peculiar to me. If cap-and-trade is so bad, why aren’t they just ramming it through legislature without debate? They have a majority, they can just do it. I mean, look at the omnibus Bill 2 which was proposed and passed in a little over a week.

Bill 5, Better Local Government Act, 2018

On the final day before recess, and a scant two months and one week before election day in Toronto, Bill 3 carried on division and received Royal Assent. This reduced the number of Toronto City Wards down from 47 to 25.

There was an immediate court challenge that attacked the bill on a couple of fronts. The first was that the previous law said no amendments or changes were to be made without public consultation (which in this case was not done). The NDP was quick to point out that the Government was quick to bring up lack of sufficient consultation in terms of the sex-ed curriculum (we’ll get there) to which the Government rejoined that the NDP was only whining because they stood to lose some councillors in the election.  The second was that it infringed the Charter of Rights and Freedoms both for the Right to Free Expression of the candidates currently trying to be elected and for the Right to Representation of the electorate, whose individual votes suddenly decreased in weight.

Didn’t realize Toronto City Councillors had party affiliation. Interesting.

I’ll devote a whole post to the snafu that came out of this, but for now it’ll suffice to note the Government position that this will save money and make Toronto city governance more efficient, and NDP position was that it was a vindictive personal attack by the Premier and would have neither of those effects.

Bill 24, Ministry of Community and Social Services Amendment Act (Social Assistance Research Commission), 2018

Establish a research commission to advise the government annually about how to adjust the rates of provincial financial assistance from the Ontario Works Act and ODSP based on the cost of living in different geographical regions of Ontario.

I like that, of members in the the commission, at least one must be or must have been receiving “basic financial assistnace” under OWA, and another must be or must have been receiving ODSP. I’d have gone for two of each, making “people who know what it’s like” a smooth four out of the nine spots… but I guess we want more space for economists in there, too. Seems like standard governmental business, so long as the geographical regions end up being broad enough that this can’t be used to funnel money away from or towards specific ridings.

First reading carried on August 9. I don’t expect too much motion on this too quickly, going by the speed of other Bills.

Bill 28, Alternate Land Use and Services Program for Agricultural Land Act, 2018

Allow owners of agricultural land to set aside parts of their land to lie fallow and return to a natural state, or to act as a windbreak or other natural feature.

Not sure why we need legislation to allow farmers to not farm their land. Maybe this way it doesn’t exempt them from some sort of tax benefit proportional to the number of acres of agricultural land they farm?

First reading carried on August 13. I don’t expect too much motion on this too quickly, going by the speed of other Bills.

Bill 30, Fighting Back Against Handguns Act (Handgun Ammunition Sales), 2018

Allows municipalities to prohibit sale or delivery of handgun ammunition within municipal limits.

Not sure whether this is a good idea. Prohibition can lead to bootlegging, if the supply is easy enough to come by. If this is supposed to reduce overall ammunition purchasing I’d have thought a better mechanism would be taxing the sale as a vice (like tobacco).

First reading carried on August 14.

Sex-ed Curriculum

Without needing a bill the Government through the Ministry of Education required the teaching of the 1998 Health Curriculum (partially revised in 2010) in all public and catholic elementary and middle schools starting this September.

I’ve read some of the reissued curriculum. It isn’t bad, but it doesn’t contain the word “consent”, and the mentions of the word “Internet” are mostly using it as an informational resource (like CDs and DVDs) with one mention of the dangers of being predated upon and one mention of privacy and security concerns. The solution to the dangers of the Internet in the curriculum is to always tell an adult “when you’re on the Internet”.

Because in the early 2000s it was possible to not be on the Internet all the time.

These aspects concern me, as does the invitation from the Government for parents to snitch on teachers found to be teaching the 2015 curriculum instead. I was going to talk to my daughter’s teacher about how he was going to handle the situation but I couldn’t ask him to expose himself to the risk of other parents tattling on him to the Government.

I should remember to tell him that I would bring up any concerns I have with material with him first and with the principal second, to hopefully put his mind at ease about us… and I’ll see if I can get him to promise to teach the kids the meaning of consent. Y’know, in English class. Words have meanings.

Other Stuff

There’s a lot of other motions and business. Mr. Piccini wants more people to elect to be organ donors, Mr. Kramp wants a monument for the CAF’s sacrifices in the war in Afghanistan, Mr. Walker wants Ontario to use the Modified International Symbol of Access for new accessible parking spaces, Miss Taylor wants the Ontario basic income pilots to be uncancelled, …

It’s really surprising how many words get output by the Assembly each day it is in session, but how little actually gets done. Committees haven’t had a chance to more than determine their organization, let alone scribe proper copies of the bills referred to them.

All the time seems spent talking past each other in a large wood-panelled room, and the Government doing what they want at the speed they want it done. Which makes me question why I’m bothering to look into this. Why am I writing these thousands of words and spending time reading and watching and becoming ever more frustrated over matters over which my last influence was exerted in June?

I should look into what step comes after “Get informed”.

The End of Firefox Windows XP Support

Firefox 62 has been released. Go give it a try!

At the same time, on the Extended Support Release channel, we released Firefox ESR 60.2 and stopped supporting Firefox ESR 52: the final version of Firefox with Windows XP support.

Now, we don’t publish all-channel user proportions grouped by operating system, but as part of the Firefox Public Data Report we do have data from the release channel back before we switched our XP users to the ESR channel. At the end of February 2016, XP users made up 12% of release Firefox. By the end of February 2017, XP users made up 8% of release Firefox.

If this trend continued without much change after we switched XP users to ESR, XP Firefox users would presently amount to about 2% of release users.

That’s millions of users we kept safe on the Internet despite running a nearly-17-year-old operating system whose last patch was over 4 years ago. That’s a year and a half of extra support for users who probably don’t feel they have much ability to protect themselves online.

It required effort, and it required devoting resources to supporting XP well after Microsoft stopped doing so. It meant we couldn’t do other things, since we were busy with XP.

I think we did a good thing for these users. I think we did the right thing for these users. And now we’re wishing these users the very best of luck.

…and that they please oh please upgrade so we can go on protecting them into the future.



Data Science is Hard: Counting Users

Screenshot_2018-08-29 User Activity Firefox Public Data Report

Counting is harder than you think. No, really!

Intuitively, as you look around you, you think this can’t be true. If you see a parking lot you can count the cars, right?

But do cars that have left the parking lot count? What about cars driving through it without stopping? What about cars driving through looking for a space? (And can you tell the difference between those two kinds from a distance?)

These cars all count if you’re interested in usage. It’s all well and good to know the number of cars using your parking lot right now… but is it lower on weekends? Holidays? Are you measuring on a rainy day when fewer people take bicycles, or in the Summer when more people are on vacation? Do you need better signs or more amenities to get more drivers to stop? Are you going to have expand capacity this year, or next?

Yesterday we released the Firefox Public Data Report. Go take a look! It is the culmination of months of work of many mozillians (not me, I only contributed some early bug reports). In it you can find out how many users Firefox has, the most popular addons, and how quickly Firefox users update to the latest version. And you can choose whether to look at how these plots look for the worldwide user base or for one of the top ten (by number of Firefox users) countries individually.

It’s really cool.

The first two plots are a little strange, though. They count the number of Firefox users over time… and they don’t agree. They don’t even come close!

For the week including August 17, 2018 the Yearly Active User (YAU) count is 861884770 (or about 862M)… but the Monthly Active User (MAU) count is 256092920 (or about 256M)!

That’s over 600M difference! Which one is right?

Well, they both are.

Returning to our parking lot analogy, MAU is about counting how many cars use the parking lot over a 28-day period. So, starting Feb 1, count cars. If someone you saw earlier returns the next day or after a week, don’t count them again: we only want unique cars. Then, at the end of the 28-day period, that was the MAU for Feb 28. The MAU for Mar 1 (on non-leap-years) is the same thing, but you start counting on Feb 2.

Similarly for YAU, but you count over the past 365 days.

It stands to reason that you’ll see more unique cars over the year than you will over the month: you’ll see visitors, tourists, people using the lot just once, and people who have changed jobs and haven’t been back in four months.

So how many of these 600M who are in the YAU but not in the MAU are gone forever? How many are coming back? We don’t know.

Well, we don’t know _precisely_.

We’ve been at the browser game for long enough to see patterns in the data. We’re in the Summer slump for MAU numbers, and we have a model for how much higher the numbers are likely to be come October. We have surveyed people of varied backgrounds and have some ideas of why people change browsers to or away from Firefox.

We have the no-longer users, the lapsed users, the lost-and-regained users, the tried-us-once users, the non-human users, … we have categories and rough proportions on what we think we know about our population, and how that influences how we can better make the internet better for them.

Ultimately, to me, it doesn’t matter too much. I work on Firefox, a product that hundreds of millions of people use. How many hundreds of millions doesn’t matter: we’re above the threshold that makes me feel like I’m making the world better.

(( Well… I say that, but it is actually my job to understand the mechanisms behind these  numbers and why they can’t be exact, so I do have a bit of a vested interest. And there are a myriad of technological and behavioural considerations to account for in code and in documentation and in analysis which makes it an interesting job. But, you know. Hundreds of millions is precise enough for my job satisfaction index. ))

But once again we reach the inescapable return to the central thesis. Counting is harder than you think: one of the leading candidates for the Data Team’s motto. (Others include “Well, it depends.” and “¯\_(ツ)_/¯”). And now we’re counting in the open, so you get to experience its difficulty firsthand. Go have another look.



Ontario’s 42nd Parliament, 1st Session: July 2018

Logo used for education and illustrative purposes. This is not an official publication and I am not an agent of the OLA.

In an effort to keep informed and politically active I’m watching the proceedings of our new provincial government here in Ontario. This is new for me. The closest I got to reading about governance was skimming a copy of Robert’s Rules of Order to help me chair meetings while I was President for three years of the anime club in University.

Yes, your nerd alert is working just fine.

Anyhoo, given my newness to all this please forgive as I belabour explanations or express confusion of long-held parliamentary weirdness. I’ll try to confine them to procedural notes so they aren’t too bothersome.

So, following the Ontario General Election in June, we ended up with the 42nd Parliament comprising a majority government of 76 Members of Provincial Parliament (MPPs) from the Progressive Conservative Party of Ontario (PC), the official opposition of 40 MPPs of the New Democratic Party of Ontario (NDP), and eight independents: seven from the Liberal Party of Ontario and one from the Green Party of Ontario.

Procedural Note: How are the Liberal MPPs and the Green MPP at the same time members of political parties (and having amongst them the heads of their parties, no less) but listed as independent? Governing the Legislative Assembly of Ontario are rules and regulations including Standing Orders. Standing Orders govern Members of the House differently if they are part of a “recognized party” (defined as a caucus of eight or more members). Since neither the Liberals nor the Greens have eight members, they are not “recognized parties” and are thus independent. This means they have some restrictions placed on their participation in legislative business. For instance they don’t have a right to as many questions as they’d like to field during Question Period (current practice is to give one member one question and one supplemental question each period), and they have much less time to do things like debate the Throne Speech and make inaugural remarks and other Statements.

As the party with the most number of MPPs the PC Party formed the government. Since they have a majority and we have strong party discipline in Ontario, they will not be defeated by a lack of confidence and instead will (barring unusual events) remain in power for their full term of four years and will likely implement their party’s platform citing a strong mandate from the people.

Procedural Note: With 76 of 124 seats it would seem that the PC mandate is strong, but Ontario is a First Past the Post system of representative democracy (each district elects a member to represent that district using a plurality vote). This results in some disproportionality. The Ontario General Election in  2014 had a Gallagher Index of 12.46 (the Canadian Government’s 2016 Special Committee on Electoral Reform recommended the reform of the federal electoral system to choose a method with a typical index less than 5). The election this past June had a Gallagher Index of 17.75, so it isn’t exactly proportional, but the PC Party did receive the highest proportion of the votes.

Even before the 42nd Legislature sat on July 12, the new government took action. Controversially they hired for $1M an ex-head of the PC Party known for underfunding and then shutting down hospitals to oversee an advisory panel charged with helping improve healthcare province-wide. This has featured in many Statements of Members and Questions, which is why I bring it up.

Eventually on July 12 the new government gathered to sit in Queen’s Park in Toronto to start official business. There’s technically a first Bill read and passed by the legislature, the pro forma “Bill 1” that shows we don’t need the Crown in order to legislate, but things really start going with the Throne Speech.

In Monarchies the Throne Speech is the Monarch handing down the priorities for their government to focus on in the coming years. In a Constitutional Monarchy like Canada, the Throne Speech is written by the Cabinet Ministers of the Government and is just read by the representative of the Crown. This was particularly interesting as Ontario’s representative of the Crown, Lieutennant Governor the Honourable Elizabeth Dowdeswell, is a staunch environmental conservationist (has been since the 80s) and she was given a speech to read that announced the end of carbon taxes and cap-and-trade without any particular replacement to keep polluting industries in check. This was commented upon by the Opposition.

The Throne Speech was just about what was expected from the Election. The priorities of the Government will be to: “reduce gas prices”, “lower your hydro bills”, “provide… tax relief to parents, small businesses and the working poor”, “scrapping the cap-and-trade carbon tax”, “make sure Ontario’s best interests are reflected in the NAFTA negotiations”, “reducing the regulatory burden”, “[call] a commission of inquiry into the financial practices of government”, “[perform] a thorough line-by-line audit of all government spending”, “return Ontario to a balanced budget”, “15,000 new long-term-care beds over the next five years and a historic new $3.8B investment in mental health and addictions”, “[replace] failed ideological experiments in the classroom with tried and true methods that work” (here meaning “discovery math” and the current sex-ed curriculum), “build a world-class transit system [in the Greater Toronto Area]”, “[cancelling] green energy contracts [imposed on rural municipalities]”, “freeing [police officers] from onerous restrictions that treat [them] as subjects of suspicion and scorn”, “expand the sale of beer and wine to convenience stores, grocery stores and big box stores”

Notable absence: Reconciliation with Indigenous Peoples.

Some of these priorities can be enacted through general Government business, but most of the big stuff will require legislation. And that’s where I expect to focus most of my time unless something from the Hansard (the parliamentary transcripts) sticks out.

So, Bill 1 was pro forma and we can ignore it.

Bill 2 is titled “Urgent Priorities Act, 2018” and is an omnibus Bill (a Bill that deals with more than one thing) of three parts:

1. “Hydro One Accountability Act, 2018” will require Hydro One reform and publish executive compensation amounts subject to the wills of the Treasury Board (which is now chaired by Peter Bethlenfalvy who sharp-eyed readers might remember as co-president of DBRS Ltd. when it decided to downgrade Ontario’s debt ratings in 2009). These provisions expire at the beginning of 2023 for some reason.

2. “White Pines Wind Project Termination Act, 2018” requires that the nine-turbine wind generation project in Prince Edward County be scrapped mid-construction. This’ll cost around $100M, and may result in lawsuits (despite clauses in the legislation that hope to curtail legal action).

3. “Back to Class Act (York University), 2018” appears to be standard back-to-work legislation for the teachers at York who have been striking since March.

Bill 2 received Royal Assent on July 25 (with division, meaning that not everyone was happy with this), so these things are happening. Schedule 1 is a big ol’ shrug from me… it will discourage Hydro One from being able to hire competent leadership to replace the ones that are being ousted, but I don’t really have a problem with the publication requirements. Honestly I think we’d be better served with a return to public ownership. Schedule 2 is a sad waste of money and will cost us in contractor trust (would you accept a contract knowing the last one was scrapped without consultation?) and in forwarding our green energy plans (we need something to replace the 18% of our electricity generated by burning gas/oil). Schedule 3 isn’t my circus, so I don’t have an opinion on it.

Bill 3 is titled “Compassionate Care Act, 2018” and is general government business instructing the Ministry of Health and Long-term Care to set out a framework for hospice care with reporting requirements. No members dissented the readings and it has been referred to committee for implementation.

Bill 4 is titled “Cap and Trade Cancellation Act, 2018” and is a straight-up repeal of “Climate Change Mitigation and Low-carbon Economy Act, 2016”. The only nod to environmental caution is that the government must now set new targets for greenhouse gas reduction, and must develop a plan to meet them. There are no timelines on those requirements. The outstanding cap and trade credits will be bought by the government at some cost. First reading was completed July 25 (with division).

Bill 5 is titled “Better Local Government Act, 2018” and messes with the wards of the City of Toronto and how the heads of councils of Regional Municipalities are selected: Muskoka, Niagara, Peel, and York will now be appointed. Durham, Halton, and Waterloo by general vote. This confuses me. Why mess with these things? Is Premier Ford still tied up in how he couldn’t win the Toronto City election? Why bother with this at all? First reading was completed July 30 (with division).

Bill 6 is titled “Poet Laureate of Ontario Act (In Memory of Gord Downie), 2018” and establishes the post, selection criteria, and responsibilities for a Poet Laureate of Ontario. First reading was July 30 (no division this time).

In addition to the big-ticket Bills, we also have Motions. They can be of the Government, or they can be of private Members.

The Government Motions of the month are fairly boring. Most are procedural (including the creation of Standing Committees), there’s one fast-forwarding the acceptance of Bill 2 by limiting debate and division (which may give political leverage later if these things blow up, which White Pines may do), and there’s one expressing the opinion of the House that it has a clear mandate of the people (grandstanding on the Party Platform).

Strangely of more interest are the Private Members’ Motions. Many of these are filed and ignored, some of them are passed. The ignored ones fell in three camps: there were a flurry of them asking that Bill 2 be paused until the extent of financial and legal liability under the bill might be assessed, which were all ignored. Bill 4 was also asked a few times to be sent back until it can be found in compliance with the Environmental Bill of Rights, 1993 (which provides many rights to citizens to challenge bills like Bill 4). We’ll see if any of those stick before Second Reading. Similarly, Bill 5 was challenged on the grounds of needing public consultation. To me this seems a weaker argument of challenge, but maybe the Opposition is building a case that the “Government For the People” really isn’t that interested in the people as much as they claim.

Of passed motions there were two: one from Mrs. Fee (PC of Kitchener South — Hespeler) expressing the opinion of the House that the Federal Government owes $200M related to the costs of illegal border crossers. (that choice of language is atrocious both morally and grammatically). The other was Jill Dunlop (PC of Simcoe North) moving that the Government of Ontario should “expedite the creation of sufficient skilled trades people to make skilled labour a competitive advantage for Ontario”, which carried without division (and I can see why as this is the reality we face).

The most circus-like aspect of the Legislative Assembly of Ontario is the Question Period where the Opposition is given an opportunity to call the Government into account, and the Government answers the questions by speechifying, reiterating talking points, and failing to answer the question. The Government also asks itself questions as an opportunity to do the same without having to think on its feet. All this grandstanding results in several standing ovations and lots of failure to keep to temperate language, remember to address comments through the Speaker, and maintain the decorum of the House. A recent illustration of this came on July 31 when the Speaker had to call a Recess early in Question Period. Relevant portion is 25:50 to 35:28:

At 27:57 the sound mix was adjusted so we could only hear the Speaker, but what happened (as the Speaker tells us at 34:43) is that something may have been said that caused general uproar in the House including the Premier and the Leader of the Opposition. The Speaker couldn’t get the House to order by asking so called a 5-min Recess (from 29:00 to 34:43). And from then on the Government refused to answer the Opposition’s questions under Standing Order 37(h) which simply states “A minister may, in his or her discretion, decline to answer any question.”

Reading of later answers by the Government paints that they heard a comment mocking the Member for Mississauga East–Cooksville (the one asking the question) from Gilles Bisson, the Official Opposition’s House Leader. Specifically I think the comment heard was to do with diversity or the Member’s Pakistani heritage since the Government’s House Leader keeps reiterating the Member’s ethnicity and the PC’s diversity of Members.

The Opposition continue on with Question Period gamely. Mr. Bisson denies the charge and as a point of order references Standing Order 23(h) and (i) which states you can’t make “allegations against another member” and impute “false or unavowed motives to another member”.

We’ll see if this continues in August 1st’s Question Period.

And that’s the extent of government business this month. The Opposition’s current points are extremist views are behind repealing the sex-ed curriculum, short-sightedness is behind Hydro One meddling, cronyism is behind everything, and the Premier’s insecurities are behind the municipal election meddling. The Government’s current points are respecting the taxpayer, respecting the ratepayer, Toronto needs provincial meddling to break its political deadlocks, cap-and-trade costs taxpayers, smaller government at all levels, and a little bit of gloating that they have a majority and the NDP doesn’t.

Some general governing, some truly annoying failure to answer questions, some truly peculiar nonsense, and just enough bad ideas to remind you why 60% of Ontarians voted against the Progressive Conservatives.

When do All Firefox Users Update?

Last time we talked about updates I wrote about all of what goes into an individual Firefox user’s ability to update to a new release. We looked into how often Firefox checks for updates, and how we sometimes lie and say that there isn’t an update even after release day.

But how does that translate to a population?

Well, let’s look at some pictures. First, the number of “update” pings we received from users during the recent Firefox 61 release:update_ping_volume_release61

This is a real-time look at how many updates were received or installed by Firefox users each minute. There is a plateau’s edge on June 26th shortly after the update went live (around 10am PDT), and then a drop almost exactly 24 hours later when we turned updates off. This plot isn’t the best for looking into the mechanics of how this works since it shows volume of all types of “update” pings from all versions, so it includes users finally installing Firefox Quantum 57 from last November as well as users being granted the fresh update for Firefox 61.

Now that it’s been a week we can look at our derived dataset of “update” pings and get a more nuanced view (actually, latency on this dataset is much lower than a week, but it’s been at least a week). First, here’s the same graph, but filtered to look at only clients who are letting us know they have the Firefox 61 update (“update” ping, reason: “ready”) or they have already updated and are running Firefox 61 for the first time after update (“update” ping, reason: “success”):update_ping_volume_61only_wide

First thing to notice is how closely the two graphs line up. This shows how, during an update, the volume of “update” pings is dominated by those users who are updating to the most recent version.

And it’s also nice validation that we’re looking at the same data historically that we were in real time.

To step into the mechanics, let’s break the graph into its two constituent parts: the users reporting that they’ve received the update (reason: “ready”) and the users reporting that they’re now running the updated Firefox (reason: “success”).


The first graph shows the two lines stacked for maximum similarity to the graphs above. The second unstacks the two so we can examine them individually.

It is now much clearer to see how and when we turned updates on and off during this release. We turned them on June 26, off June 27, then on again June 28. The blue line also shows us some other features: the Canada Day weekend of lower activity June 30 and July 1, and even time-of-day effects where our sharpest peaks are (EDT) 6-8am, 12-2pm, and a noticeable hook at 1am.

(( That first peak is mostly made up of countries in the Central European Timezone UTC+1 (e.g. Germany, France, Poland). Central Europe’s peak is so sharp because Firefox users, like the populations of European countries, are concentrated mostly in that one timezone. The second peak is North and South America (e.g. United States, Brazil). It is broader because of how many timezones the Americas span (6) and how populations are dense in the Eastern Timezone and Pacific Timezone which are 3 hours apart (UTC-5 to UTC-8). The noticeable hook is China and Indonesia. China has one timezone for its entire population (UTC+8), and Indonesia has three. ))

This blue line shows us how far we got in the last post: delivering the updates to the user.

The red line shows why that’s only part of the story, and why we need to look at populations in addition to just an individual user.

Ultimately we want to know how quickly we can reach our users with updated code. We want, on release day, to get our fancy new bells and whistles out to a population of users small enough that if something goes wrong we’re impacting the fewest number of them, but big enough that we can consider their experience representative of what the whole Firefox user population would experience were we to release to all of them.

To do this we have a two levers: we can change how frequently Firefox asks for updates, and we can change how many Firefox installs that ask for updates actually get it right away. That’s about it.

So what happens if we change Firefox to check for updates every 6 hours instead of every 12? Well, that would ensure more users will check for updates during periods they’re offered. It would also increase the likelihood of a given user being offered the update when their Firefox asks for one. It would raise the blue line a bit in those first hours.

What if we change the %ge of update requests that are offers? We could tune up or down the number of users who are offered the updates. That would also raise the blue line in those first hours. We could offer the update to more users faster.

But neither of these things would necessarily increase the speed at which we hit that Goldilocks number of users that is both big enough to be representative, and small enough to be prudent. Why? The red line is why. There is a delay between a Firefox having an update and a user restarting it to take advantage of it.

Users who have an update won’t install it immediately (see how the red line is lower than the blue except when we turn updates off completely), and even if we turn updates off it doesn’t stop users who have the update from installing it (see how the red line continues even when the blue line is floored).

Even with our current practices of serving updates, more users receive the update than install it for at least the first week after release.

If we want to accelerate users getting update code, we need to control the red line. Which we don’t. And likely can’t.

I mean, we can try. When an update has been pending for long enough, you get a little arrow on your Firefox menu: update_arrow.png

If you leave it even longer, we provide a larger piece of UI: a doorhanger.


We can tune how long it takes to show these. We can show the doorhanger immediately when the update is ready, asking the user to stop what they’re doing and–


…maybe we should just wait until users update their own selves, and just offer some mild encouragement if they’ve put it off for, say, four days? We’ll give the user eight days before we show them anything as invasive as the doorhanger. And if they dismiss that doorhanger, we’ll just not show it again and trust they’ll (eventually) restart their browser.

…if only because Windows restarted their whole machines when they weren’t looking.

(( If you want your updates faster and more frequent, may I suggest installing Firefox Beta (updates every week) or Firefox Nightly (updates twice a day)? ))

This means that if the question is “When do all Firefox users update?” the answer is, essentially, “When they want to.” We can try and serve the updates faster, or try to encourage them to restart their browsers sooner… but when all is said and done our users will restart their browsers when they want to restart their browsers, and not a moment before.

Maybe in the future we’ll be able to smoothly update Firefox when we detect the user isn’t using it and when all the information they have entered can be restored. Maybe in the future we’ll be able to update seamlessly by porting the running state from instance to instance. But for now, given our current capabilities, we don’t want to dictate when a user has to restart their browser.

…but what if we could ship new features more quickly to an even more controlled segment of the release population… and do it without restarting the user’s browser? Wouldn’t that be even better than updates?

Well, we might answers for that… but that’s a subject for another time.


Faster Event Telemetry with “event” Pings

Screenshot_2018-07-04 New Query(1).pngEvent Telemetry is the means by which we can send ordered interaction data from Firefox users back to Mozilla where we can use it to make product decisions.

For example, we know from a histogram that the most popular way of opening the Developer Tools in Firefox Beta 62 is by the shortcut key (Ctrl+Shift+I). And it’s nice to see that the number of times the Javascript Debugger was opened was roughly 1/10th of the number of times the shortcut key was used.

…but are these connected? If so, how?

And the Javascript Profiler is opened only half as often as the Debugger. Why? Isn’t it easy to find that panel from the Debugger? Are users going there directly from the DOM view or is it easier to find from the Debugger?

To determine what parts of Firefox our users are having trouble finding or using, we often need to know the order things happen. That’s where Event Telemetry comes into play: we timestamp things that happen all over the browser so we can see what happens and in what order (and a little bit of how long it took to happen).

Event Telemetry isn’t new: it’s been around for about 2 years now. And for those two years it has been piggy-backing on the workhorse of the Firefox Telemetry system: the “main” ping.

The “main” ping carries a lot of information and is usually sent once per time you close your Firefox (or once per day, whichever is shorter). As such, Event Telemetry was constrained in how it was able to report this ordered data. It takes two whole days to get 95% of it (because that’s how long it takes us to get “main” pings), and it isn’t allowed to send more than one thousand events per process (lest it balloon the size of the “main” ping, causing problems).

This makes the data slow, and possibly incomplete.

With the landing of bug 1460595 in Firefox Nightly 63 last week, Event Telemetry now has its own ping: the “event” ping.

The “event” ping maintains the same 1000-events-per-process-per-ping limit as the “main” ping, but can send pings as frequently as one ping every ten minutes. Typically, though, it waits the full hour before sending as there isn’t any rush. A maximum delay of an hour still makes for low-latency data, and a minimum delay of ten minutes is unlikely to be overrun by event recordings which means we should get all of the events.

This means it takes less time to receive data that is more likely to be complete. This in turn means we can use less of it to get our answers. And it means more efficiency in our decision-making process, which is important when you’re competing against giants.

If you use Event Telemetry to answer your questions with data, now you can look forward to being able to do so faster and with less worry about losing data along the way.

And if you don’t use Event Telemetry to answer your questions, maybe now would be a good time to start.

The “event” ping landed in Firefox Nightly 63 (build id 20180627100027) and I hope to have it uplifted to Firefox Beta 62 in the coming days.

Thanks to :sunahsuh for her excellent work reviewing the proposal and in getting the data into the derived datasets so they can be easily queried, and further thanks to the Data Team for their support.