Firefox moving to 4 week releases
hacks.mozilla.org
hacks.mozilla.org
Getting features out to people faster means shorter feedback cycles.
Regarding versioning, most applications don't use semantic versioning; that's mainly for libraries. Not sure what "backwards incompatible" would mean for a browser, anyway.
Speaking as someone who was at Mozilla at that time, you can change "probably had" to "definitely has". In hindsight I'd go ahead and call it a disaster. The X weeks release cadence solves so many problems.
zach_galifianakis_laugh.mp4
Such logic is commonly performed without releases until you start depending on multiple features in multiple places. Then it saves you.
The same "alignment" works also much better between engineering and non-engineering teams. Once we collect the focus areas and major features planned for release X, security, performance, accessibility, localization, platform integration, UI, UX, design, legal and marketing teams can prioritize their work to aid them.
Having no release cycle, or long release cycle, dilutes this effort and reduces visibility.
There is, in my opinion, somewhere, a threshold beyond which the release cycle burden outweighs the benefits and/or where the cycle is to short for teams to usefully react, but I don't think we hit it so far.
Then feedback, if you rollout release too frequently you also can be several releases in and get feedback of some bug in a release prior to current release, albeit only a week or so. So by having organised releases, allows better management and a better experience overall. It's a fine balance, but for those who needs it, there will always be nightly builds of most things they want with last second updates, also self-builds for those inclined.
But I get the whole artificial timeframe does seem somewhat odd, but the further you look at the overall usage, management and support factors et all, you start to appreciate such regular timeframes.
On the other extreme, I've worked in an environment in which a whole suit had to be retested and go thru all the hopes as a full stop was missed of a comment and that change caused the whole testing, management/release cycle to go thru the motions again. That you would like, ignore and package up with other small things into a full release - which is what many do these days in most environments. After all - would you want to go thru a rollout of a new release that may contain a fix you want, or equally may just be adding a full stop to a comment in the code and yielding no binary level changes, albeit that it went thru the whole hoops and hurdles as a full release and that is what you got.
So from my experience, a 4 week release cycle is good, fixed, something that you can plan around. Also kudos for not just picking a day a month and doing monthly updates like most, that tends to seem more arbitrary unlike 4 weeks, which has an air of less arbitrary and feels like it was thought out more. Though an element of personal experience does come into play.
Planning feature development and rollout is more difficult if you always have to refer to a calendar to find future release dates. I would prefer to be able to say a feature can land in Firefox Nightly in January, ship to Firefox Beta on February 1, and Release channel users on March 1.
Mozilla has a long wiki page of past and future release dates:
Exactly my thought - why 4 weeks? Why not just put everyone on Nightly and be done with it? Then everyone will enjoy the firehose of agility and features that is Mozilla! You're always shipping working code, right? If it passes the harness, it's good, isn't it?
At some point you need to say this is what we want to ship, and branch, and make sure that not only all tests pass, but that the installers work, run the benchmark suite that might not be run on every PR, make sure the updates work on all systems, appstores, etc. Accept new patches to fix bugs, etc.
I suppose they might have a release team that does nothing but releases, and if creating a full release takes a week (no idea how long it takes honestly), then maybe they could release each week.
But I don't think they can release a new version every day, because probably running their whole CI takes longer.
E.g. before shipping a version of Rust, the RC is used to build and run tests of all packages in the Rust package repository. This takes 4 full days. One could probably throw money at the problem and speed it up, but at least right now, releases just cannot technically happen faster, unless you are willing to compromise on quality.
http://ftp.mozilla.org/pub/firefox/releases/69.0/
All of the various Linux distributions just repackage those binaries. iOS and Android are distributed only through the App Store and Google Play.
The BSDs and other ("tier 3") platforms have to compile from source and distribute their own packages:
https://developer.mozilla.org/en-US/docs/Mozilla/Supported_b...
Debian and Ubuntu don’t build from sources?
You can notice by looking at the build time in the version string.
This makes it impossible to share a profile between two GNU/Linux distributions (or even the official binary and the distribution binary) without hacking with the current versions, even if they are effectively the same version: one will complain that the profile has been run with a more recent version.
(But I sure expect and want my distributions to rebuild Firefox - I trust Debian for making sure no bit of proprietary code is here, and makes tracking opt-in, more than Mozilla)
Source please.
Never mind, it's simply wrong so don't even worry about it!
/usr/portage/www-client/firefox-bin/firefox-bin-69.0.ebuild
MOZ_HTTP_URI="https://archive.mozilla.org/pub/mozilla.org/${MOZ_PN}/releases/"
...
SRC_URI="${SRC_URI}
amd64? ( ${MOZ_HTTP_URI%/}/${MOZ_PV}/linux-x86_64/en-US/${MOZ_P}.tar.bz2 -> ${PN}_x86_64-${PV}.tar.bz2 )
x86? ( ${MOZ_HTTP_URI%/}/${MOZ_PV}/linux-i686/en-US/${MOZ_P}.tar.bz2 -> ${PN}_i686-${PV}.tar.bz2 )"And to save you a click, they compile it from a source tarball.
[1] https://git.archlinux.org/svntogit/packages.git/tree/trunk/P...
https://git.archlinux.org/svntogit/packages.git/tree/trunk/P...
[1] - https://ftp.mozilla.org/pub/firefox/releases/68.1.0esr/linux...
Historically reducing your download size by a couple megabytes has had measurable positive impact on conversion rates (from webpage visit -> install) so I expect this tradeoff made a lot of sense in the past even if it's less important now.
EDIT: One other thing worth note is that there's zh-CN and zh-TW, and I can imagine the Chinese government being very irritated about the idea of their release having separate Taiwan loc text/images baked in since according to them Taiwan doesn't exist. Major software like Windows has already had CN-specific releases for this (among other) reason(s).
The current practice is really a dimension-reduction, where a N×2 matrix [(CN, TW, HK, SG, MY...) × (simplified, traditional)] collapsed into a 2×1 vector (TW, CN).
The language labels should have been `zh-hans` and `zh-hant` if one means to differentiate the writing systems, and not the underlying linguistic variants.
According to Beijing government, Taiwan absolutely exists, it's just that it is not a sovereign state. Hong Kong has been handed over to China for more than twenty years and people in Hong Kong continue to use zh-HK – Beijing government seems to be OK with that.
You experience small issues, one by one, instead of a massive amount of bugs coming all of a sudden.
For example, last time I updated a Linux distribution with 6-month releases this was the case. Whereas with a rolling release one, it's just much more pleasant.
*impossible with a limited constraint of time and/or money.
I've been using only this for the last 10 years or so (on windows, Linux, Mac and Android), and I can count the number of time things really broke on one hand.
We call these Firefox Nighly, and they are available at https://www.mozilla.org/en-US/firefox/nightly/all/.
Release notes at available at https://www.mozilla.org/en-US/firefox/71.0a1/releasenotes/, but they are not always updated for each version, sometimes batched (its quite some work due to the amount of commits that are pushed per day).
There is a cool blog at https://blog.nightly.mozilla.org/ that talks a bit about the new stuff.
All this is really experimental and probably not for everybody, but helps us to deliver something good at the end. Filing bugs and giving us feedback is of course particularly appreciated, as always!
Not part of the talk: if you have more than 3 people involved you probably need a release schedule in terms of either scope or time. I'd personally advise you to have one even if you only have 1 person, just for a mental target if nothing else.
The talk goes into studies of projects which did scope based releases and got horrible results in practice. All the ones in the talk switched to time based releases and were much happier. Also, in a software project, you can only fix either scope or time, but not both. Also, if you want to ship in a timely manner, you probably want to fix one of them, not let both float.
Edit: it looks like this is his paper on the topic: http://www.cyrius.com/publications/michlmayr_fitzgerald-time...
I feel like it might help with motivation. It's easy to push things "to tomorrow" if you don't have a hard cap on how many tomorrows are available before the feature is supposed to go out.
> If people demand a certain new feature ("[this will] bring you new features more quickly"), it can just be brought out as it's ready, instead of having to wait an average of 3 (now 2) weeks before it can be released?
It's kind of like forming a habit. Having a set schedule could in theory delay quick features, but it will also keep the motivation going for time-consuming features.
> And why does this have to increment the major version, since when is every single update backwards incompatible?
I actually really like this personally. Encoding compatibility in a version number is, IMO, useless— it's sometimes just hard to know if your changes will break something or not, so there's a wealth of minor versions out there that break things anyway.
Just using a single number just makes everything simpler. Detecting breaking changes should be done with systems (tests, static analysis, etc) and not by trusting a number some developer came up with.
When the cost of the release goes above a certain amount, due the sheer number of features or the thoroughness of the release process, it starts to make sense to mutualize release tasks between a bunch of features.
Bundling those features on a time basis is quite often a local optimum between an acceptable delay for the product team and an acceptable cost for ops/release/qa/...
For server-side software, it's easy enough to do multiple releases per day, because you have full control over the environment, and all the work is internal. But for desktop/mobile software like this, having multiple releases per day won't be efficient in terms of bandwidth, load, or user experience.
And each browser version has other external costs, like documentation and support. Right now it can be hard to solve a problem like, "How do I do X with Firefox" because the answer varies by version. The more versions you have, the harder that is.
Or can you imagine trying to triage and verify bug reports if there are, say, 3 new Firefox releases per day, and people could be on any one of dozens of versions because they don't quit and restart the browser very often? We can imagine solutions to these problems, of course. But I think getting a release cadence below weekly for desktop apps will be a very long road.
https://herbsutter.com/2019/07/13/draft-faq-why-does-the-c-s...
I also think that quality tends to suffer. Over the last two years windows 10 has released several buggy updates that caused our in house apps to stop working.
It feels like they're just taking the piss when the life cycle of an extended support release is just 42 weeks.
Still a step in the right direction though.
My 2 cents, speaking from some experience working on long time cycle projects and shorter cycle projects.
that said I think 4 weeks is a real short release cycle. 3 months, so 4 releases a year -- one for each season. Would seem to strike a better balance.
Neither long cycles nor short cycles make any sense. Some features take a long time to develop, some take a short time to develop. Sometimes features that take a long time to develop aren't user-facing enough to be worth releasing for, and sometimes a quick fix has a huge impact that's worth a release, like a patch for a vulnerability that's actively being exploited by a spreading malware. Features simply don't line up with a single length of time. The problem isn't long or short cycles, it's cycles.
I imagine that could work well in some cases, but it also allows corporate bureaucracy and/or marketing teams to determine when things get released at larger scales and that might not be so ideal.
This is an argument for frequent releases, not regular, predictable releases.
> users know they can plan around predictable upgrade schedules.
I'm not sure this is actually how users plan upgrades.
The majority of individuals probably never turn off the auto-update flag. Planning doesn't enter the equation.
For organizations, my guess is that most organizations will try to build their upgrade process around security, but the reality will rarely be so clean. When I worked in IT we'd get computers into our shop that hadn't been updated. Period. We'd upgrade our provisioning images when there was a notable security patch, and besides that, we just would run updates on every machine every week at 2am Sunday night: that way it didn't interfere with users, but if something went wrong, we were on it with the full team first thing Monday morning. But if machines were turned off or whatever, they wouldn't run the updates. At no point did we ever even check the release schedule of a piece of software: the updates happened on our time, and theirs was irrelevant.
I didn't work in IT for very long, though, so someone with more IT experience should correct me if I'm wrong.
It depends on the project, but in larger projects the calendar approach means politics takes a back seat as no one can hold back the release if their feature hasn't been merged yet due to blocking issues. And it helps keep the change-set small, and hence lower risk, if you release more often.
Also, Firefox already has a nightly release stream. I use the Aurora stream which releases a few times a week and have almost never had an issue with this frequency. I don't think a monthly release cycle is going to be an issue.
Use ESR, or only read release notes every 6 months.
Short release cycles also mean much shorter release notes. The average FF changelog has a dozen minor items or so, it takes 5mn to go through it.
IME frequent updates terrify non-technical users, any given update might change the UI, remove a feature the use or add some other complication (like simply not working) at an inopportune moment. Big fat updates give them a chance to prepare for these changes at a time of their choosing.
Neither says anything useful. 2019-10 is no more actionable or informative than 76.0.0. That 2019-10 was released in october 2019 is meaningless information and only "more" in the "babble" sense.
I would know it there is a big chance of breakage if I moved from 76.0.0 -> v77.0.0 and I am reasonably certain it won't break if I moved from 76.0.0 -> 76.0.1
Since there are more websites than extensions, the utilitarian approach would be to choose 2019-10 over 76.0.0.
Furthermore, as another comment said, it is impossible to remember on which release they started breaking this or that, since there is no more major version number change, which is usually handy to indicate backward-incompatible changes.
On one side, relatively minor upgrades can have huge impacts for some use cases. Some changes are riskier than others, but SemVer and major/minor distinctions are not reliable signals for anything critical.
More important though, if you're skipping browser updates at all, you need to be tracking the security implications of every patch you skip. Otherwise you're increasing your risk by an order of magnitude more than you'd reduce it by deciding a change might be too buggy based on a numbering scheme.
It's not so fun to work around because Windows Installer tries to be smart about things, as opposed to the others that take a more robust approach.
https://docs.microsoft.com/en-us/windows/win32/msi/productve...
I don't know if 4 weeks is or isn't the right answer (after all some SaaS companies update dozens of times a day), but I know that I tend to leave my browser windows open until it crashes or the computer reboots. While I don't regularly use Firefox right now, I can imagine that I could skip entire versions with this behavior.
I guess Beta is moving to daily releases? I suppose it's good, generally I have to restart Firefox once a day for resource leaks and restarting through the update UI is easier than opening the browser console.
I was using Nightly for a while but it turns out that even daily updates aren't fast enough for that. If a new patch breaks something, typically the offending patch isn't backed out and it takes 6-12 hours to get fixed, meaning the fix isn't available in the next nightly and you have to suffer for several days.
I'm waiting for the hard drive to die so I can justify getting a new SSD or laptop, which I'm pretty sure will solve the problem, so no, I haven't filed a bug.
Yeah, you should probably hold off on the bug report.
Why "probably"? I fail to see how uBO is related to "things get cached that don't need to be".
The main issue is capturing a decent profile, the lag caused by the profiler makes it hard to trust anything.
Of course, you need an extensive battery of unit tests and integration tests, and lots of user testing in beta. But actually if you're only deploying smaller self-contained changes then there's less moving parts at any given time. You'll have stronger guarantees of less interactions.
Quite often, missing those sorts of improvements isn't a big deal. That depends on the nature of the software in question, though.
Done poorly, or even in a mediocre fashion, and we've got more half-baked features and insufficiently-tested changes.
Now, which scenario is more likely?
1) People rush to get things into release because if they miss the release, they are waiting longer to get it out. If the release is every 4 weeks, a missed release is not as big a deal.
2) Long release cycles means things done early in the release get forgotten, so when it's finally released, they tend to be off people's minds.
3) Larger releases become harder to update and deploy. Larger file sizes, a lot more changes all at once.
As someone who has done both (long and short release schedules) I can't imagine going back to long release schedules. It has a lot more complexity and is a lot more error prone than a shorter release schedule. Not only do you get the practice, but people are more inclined to wait until next release to get it right.
Plus, most of the serious bugs are found right away when a new group of users starts testing, e.g. when Firefox Nightly version moves to Beta or Beta moves to stable Release. Firefox Nightly, Beta, and Release channels have very different user populations. They have different hardware (Nightly users are power users with big, fast machines), software (Release users are more likely to use anti-virus software or not have the latest GPU driver updates installed), and browsing usage.
Mozilla's studies of crash rates and bug fixes for Firefox Beta showed that most of crashes and bugs are seen in the first two weeks or so. Having more beta "bake time" with a very long beta cycle has little benefit after the first batch of bugs are found and fixed.
An interesting historical tidbit: about 60% of Firefox Beta users are in India and Indonesia. That is definitely not representative of Nightly or Release user populations! The apocryphal story is that many years ago, a local computer retailer started passing around copies of a beta CD of Firefox 4 so people didn't have to download it over a slow or metered internet. And then all those people are still on the Firefox Beta channel.
https://support.mozilla.org/en-US/kb/choosing-firefox-update...
Short release cycles mean smaller deltas and it also makes postponing the merging of changes to the next release is less disruptive. Merging things when they are ready instead of merging them to early to not miss some big releases is better.
Another reason smaller deltas is better is that risk does not scale with a linear relation relative to the amount of change but more like a quadratic or exponential relation. So, the less changes you introduce with a release, the less effort you need to ensure all is well. The testing over head increases massively with the amount of change since there are more combinations of things that can go wrong that all need testing. Finally, with the time increasing between the introduction of issues and people finding them, the complexity of analyzing them in the presence of other bugs becomes harder. Shorter feed back cycles are great for finding issues early.
Currently from nightly to release takes about 12- 16 weeks (assuming 6-8 week cycles). With this change, it will reduce to about 8 weeks. That's still two months of exposure to large group of nightly testers and an even larger group of beta testers.
Even if that weren't true, though, rapid release means a lot more updates, and updates are a pain in the butt.
Uhh really? Pretty sure "most people" don't even notice when their browser updates.
"We’re adjusting our cadence to increase our agility, and bring you new features more quickly. "
Does having faster release cycle really means having new features more quickly? The original 6-8 Weeks are already pretty damn fast. So I this pcs as marketing to general new site rather than technical.
Firefox, ( And Google Chrome ) already has Alpha and Beta Channels with fairly large number of audience testing it in real world. And features requires time to think, design, bake, tested in real world and refine, having a few more releases in between those process doesn't make the features come out any quicker.
Furthermore, the audiences for each of these channels are different, with Nightly being much more tech centric early adopters. While you do some testing in the prerelease channels, you main experimentation is going to have to wait until the code hits release.
So, let's say a feature takes 7 weeks to properly build and test. You start on week 1.
Now, after 6 weeks, a release goes out. A week later, your feature is done. You now have to wait 5 weeks before your release goes out. So, you merge your feature and move on to your next feature. 5 weeks later, your features is released.
So, to release a feature that takes 7 weeks, you had to wait 12 weeks.
Now, with a 4 week release schedule, you only have to wait 1 week.
This is a bit simple, but it really works this way. Now, here is the other end of the spectrum.
Let's say the release schedule is once every 12 weeks. (Under the idea that quicker is worse and slower is better). Now, let's say at week 6, you start your 7 week feature. It will get done on week 13, and have to wait 11 weeks to get released. That's a long time! So what happens? Well, what tends to happen is people push to get it done in 6 weeks rather than 7. That means skipping steps, working longer hours, and cutting corners. Why? Because they don't want to finish with something and have to wait 11 weeks for it to get released. They want to get it out there.
However, if you know that the longest you have to wait is 4 weeks, that's a lot more palatable.
> And features requires time to think, design, bake, tested in real world and refine,
Having more frequent releases doesn't change that.
> having a few more releases in between those process doesn't make the features come out any quicker.
tl;dr: They don't make finishing the feature faster. But they do allow finished features to get released faster. =)
I’m one of those. If I’m only one of 200 (as in, 199 don't care) and if Firefox has 200 million users, Firefox will waste millions of hours of user’s time per each additional release.
Even if it's just a matter of reading the release notes, having to do that twice as often is a non-zero burden.
Of course there is Firefox ESR but I seem to remember Mozilla's website basically explicitly recommending against it with language along the lines of "This is only for people whose corporate policies require it, don't install it unless you have no other choice."
Do you actually do this? Do you think the percentage of users who do exceeds 1%? I mean, I do read the release notes for new web features but that’s because I know from the stats that almost all of our users will be updated shortly after release.
Mozilla has been tweaking their process forever, but all of it is for naught if they don't work on what users want. The latest FF brags "we are shipping a new “New Tab” page experience that connects you to the best of Pocket’s content", while standard keyboard shortcuts have been broken for well over 10 years. This is not a problem with their release cadence.
Users have a curious way of asking for what they believe is feasible. I've seen users encounter an obvious bug, and work around it by hand, and turn around and ask for something completely different, like an alternative workaround. (Just add a macro system so I can record this sequence of 7 steps to work around this weird thing...) They literally don't think to ask "Fix this bug".
I wonder if that's what's happening here. As an occasional Firefox user, I know that keyboard shortcuts have been broken since the Bush administration, and the codebase is far too complex for me to work on even the simplest features (I've tried). I can absolutely see a user thinking "If they can't do what we want, at least they could do it faster". That feels like a change that's feasible in a way that "Fix the massive complexity problem" or even "Fix keyboard shortcuts (which are apparently massively complex)" do not.
Firefox itself was created by a couple programmers chatting late at night in a Denny's. They made a far better browser than the Mozilla organization of the day could. It's an important organization and it's impressive they can regularly ship useful free software, but user interfaces have never been a strong point for open source, in the way that compilers and runtimes and databases are. Tweak away, but I don't hold much hope for the situation to improve. The next great open-source browser is going to come from 2 or 3 people chatting in a Denny's, not Mozilla with N-week releases, for any value of N.
Firefox 38 for reader 50 for a hotkey.
The shortcuts I use work fine, so I don't understand the complaint.
I'm guessing this is not the case, because the demands and requirements of browsers would have increased massively since then in terms of the breadth of the developer APIs and security issues that need to be dealt with, plus an every increasing demand on speed and having the largest company in the world with effectively unlimited cash, the best minds and some sharp practices as your competitor.
You're presenting a very naive and romanticized version of the story.
source: I've been involved in Phoenix since 0.2.