# Firefox on 19.09 could be marked as insecure or downgraded to ESR 68

**URL:** https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577
**Category:** Development
**Created:** [October 29, 2019, 10:03am UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577 "2019-10-29T10:03:49Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![FRidh](https://discourse.nixos.org/user_avatar/discourse.nixos.org/fridh/32/7643_2.png) [@FRidh](https://discourse.nixos.org/u/FRidh)
#### Post date: [October 29, 2019, 10:03am UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/1 "2019-10-29T10:03:49Z")

</div>

On 19.09 the latest version of Firefox is currently 69. Version 70 has been released, however, it requires a newer version of a core library, `sqlite`. In stable releases we typically do not update versions of packages. The question is now how to proceed with this, for this case, but also for in the future.

Please have a look at [[19.09] firefox: mark as insecure and remove myself as maintainer by andir · Pull Request #72126 · NixOS/nixpkgs · GitHub](https://github.com/NixOS/nixpkgs/pull/72126).

---

<div class="post-metadata">

### Author: ![samueldr](https://discourse.nixos.org/user_avatar/discourse.nixos.org/samueldr/32/6_2.png) [@samueldr](https://discourse.nixos.org/u/samueldr)
#### Post date: [October 30, 2019, 7:34am UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/2 "2019-10-30T07:34:54Z")

</div>

We do have, as part of previous discussions about backports (don’t have the link handy and the internet here is bad), a rule about that. Paraphrased:

Backporting new versions is allowed (and preferred) in these cases:

- Software that is extremely security sensitive
- Software that relies on a third party service

Browsers are of the first case, new versions will receive security updates, and browsers are the main chunk of exposure to security issues for users. Furthermore this is also a concern of usability, it would make using NixOS an annoyance for users that don’t setup a mixed system with multiple channels.

Browsers could also be of the second case, with shiny new features always getting added, but in reality these are more about software like “social” software, like service-driven chat (e.g. discord, slack), or for entirely service-driven software, like entertainment software (e.g. spotify).

Though, we should _not_ upgrade `sqlite` wholesale on stable. Probably this requires an sqlite used by Firefox. I figure that on unstable that new sqlite has not been added under an attribute sqlite\_x\_y, right? If so then I’m not sure about the best way to add this to stable, while keeping sqlite to the current version. Though, I figure that, at the very worst, something like the following would be fine.

```auto
firefox = callPackage .../firefox {
    sqlite = callPackage .../sqlite/x_y.nix;
};

```

The only drawback I see is that we don’t expose that new sqlite variant to the outside… But that’s the point, _we do not want to expose that new sqlite variant to the outside_.

---

<div class="post-metadata">

### Author: ![ckauhaus](https://discourse.nixos.org/user_avatar/discourse.nixos.org/ckauhaus/32/151_2.png) [@ckauhaus](https://discourse.nixos.org/u/ckauhaus)
#### Post date: [October 30, 2019, 9:16am UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/3 "2019-10-30T09:16:34Z")

</div>

Another valid approach would be to stick to the latest ESR release, right? Security patches should be provide for ESR releases IIRC. This could make life easier for everyone at the cost of not having the newest Firefox available.

But since there will be a new NixOS version out every half a year, we won’t be lacking behind that much anyway. So this would be my preferred option.

---

<div class="post-metadata">

### Author: ![qyliss](https://discourse.nixos.org/user_avatar/discourse.nixos.org/qyliss/32/34285_2.png) [@qyliss](https://discourse.nixos.org/u/qyliss)
#### Post date: [October 30, 2019, 10:11am UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/4 "2019-10-30T10:11:40Z")

</div>

> Another valid approach would be to stick to the latest ESR release,  
> right? Security patches should be provide for ESR releases IIRC. This  
> could make life easier for everyone at the cost of not having the  
> newest Firefox available.

Security patches absolutely will be provided – that’s what the ESR is  
for!

I think this is the way forward. Security patches are the justification  
usually given for updating browsers in stable, and if we stick to an ESR  
that’s taken care of without the pain of trying to do partial upgrades.  
This is similar to what we do for the kernel as of 19.09.

It’s a bit late to do anything about it for 19.09, so we’ll have to come  
up with some other solution there, but for 20.03 I think we should just  
remove non-ESR Firefox after branch-off, like we now do with Linux.

Latest Firefox is always available from unstable if somebody really does  
need features less than six months old for some reason.

---

<div class="post-metadata">

### Author: ![worldofpeace](https://discourse.nixos.org/user_avatar/discourse.nixos.org/worldofpeace/32/245_2.png) [@worldofpeace](https://discourse.nixos.org/u/worldofpeace)
#### Post date: [October 31, 2019, 5:24pm UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/5 "2019-10-31T17:24:53Z")

</div>

I know this may sound like a pure vanity argument, but there’s for sure a large part of the firefox userbase that might find NixOS of a lesser taste simply out of the fact that NixOS stable releases will never have latest firefox. I think it’s a unique challenge for NixOS to be able to do able to deliver this. I personally find having to pull software in from unstable taxing on a users machine, and what’s the pathway to even formally support this? I know it could be a lot more work to convert firefox to vendored after branch off, but I think that’s just one feat that Nix makes more convenient than trying to do this conventionally elsewhere. And to proclaim that doesn’t really mean much until someone wants to put in the work do this, but it’s certainly an option.

---

<div class="post-metadata">

### Author: ![vcunat](https://discourse.nixos.org/user_avatar/discourse.nixos.org/vcunat/32/11_2.png) [@vcunat](https://discourse.nixos.org/u/vcunat)
#### Post date: [November 1, 2019, 12:22pm UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/6 "2019-11-01T12:22:43Z")

</div>

Apart from ESR, there’s always the option of pulling the whole Firefox closure from unstable, and _maybe_ the latest -bin variant will keep working as well. As for how to make this better user-accessible, I think there are more options, perhaps via flakes in future.

---

<div class="post-metadata">

### Author: ![qyliss](https://discourse.nixos.org/user_avatar/discourse.nixos.org/qyliss/32/34285_2.png) [@qyliss](https://discourse.nixos.org/u/qyliss)
#### Post date: [November 4, 2019, 1:16pm UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/7 "2019-11-04T13:16:18Z")

</div>

Why should Firefox in particular be kept up to date, in contrast with  
every other package in our stable distribution? I think this could be a  
dangerous road to go down, and could lead to a maintenance nightmare –  
the same justification could be applied to any other package.

We already have a good path for running stable and pulling specific  
packages from unstable. I’m not sure what you mean by “formally  
support”, but I’ve never seen anything to suggest that fetching closures  
from unstable shouldn’t be supported – in fact the guarantees of Nix  
mean that it should always work, short of something like a kernel  
incompatibility. If it’s not documented well, that can be improved. If  
it’s not elegant, well, there are ideas like Flakes that will improve  
the flow.

---

<div class="post-metadata">

### Author: ![worldofpeace](https://discourse.nixos.org/user_avatar/discourse.nixos.org/worldofpeace/32/245_2.png) [@worldofpeace](https://discourse.nixos.org/u/worldofpeace)
#### Post date: [November 4, 2019, 3:46pm UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/8 "2019-11-04T15:46:13Z")

</div>

> [@qyliss](#):
>
> Why should Firefox in particular be kept up to date, in contrast with  
> every other package in our stable distribution? I think this could be a  
> dangerous road to go down, and could lead to a maintenance nightmare –  
> the same justification could be applied to any other package.

For all the reasons I mentioned, software delivery vanity. This has already been the status quo, delivering the latest firefox to stable users, and it’s not an uncommon practice for many other distros. Even [LTS ubuntu](https://packages.ubuntu.com/xenial-updates/firefox) can provide this to their users. And I’d honestly be personally embarrassed if we had to do this, we release every 6 months.

All my points were why we should have latest firefox available to users on stable channels in the most convenient way, which is not pulling in different channels.

As for it being justified for other packages, I don’t think I have a response to that. I essentially meant there should be a no change of latest firefox being available. This exception is already being made for certain packages that fit the criteria @samueldr mentioned.

> [@qyliss](#):
>
> We already have a good path for running stable and pulling specific  
> packages from unstable. I’m not sure what you mean by “formally  
> support”, but I’ve never seen anything to suggest that fetching closures  
> from unstable shouldn’t be supported – in fact the guarantees of Nix  
> mean that it should always work, short of something like a kernel  
> incompatibility. If it’s not documented well, that can be improved. If  
> it’s not elegant, well, there are ideas like Flakes that will improve  
> the flow.

I’m also not sure if you’re aware about version mismatches with applications on stable. I’ve received lots of reports of things being broken, rendering issues, mismatched glibc crashes, gdk pibuf loader mismatches [Programs using gdk\_pixbuf 2.38 crash with 2.36 loaders from system · Issue #54278 · NixOS/nixpkgs · GitHub](https://github.com/NixOS/nixpkgs/issues/54278). Even woes with wrapGAppsHook just makes me discourage users from using applications from unstable entirely. So it could be that we couldn’t guarantee an unstable firefox on stable, which means it won’t be available at all outside the binary package. Mixing channels is less usable.

---

<div class="post-metadata">

### Author: ![samueldr](https://discourse.nixos.org/user_avatar/discourse.nixos.org/samueldr/32/6_2.png) [@samueldr](https://discourse.nixos.org/u/samueldr)
#### Post date: [November 4, 2019, 4:46pm UTC](https://discourse.nixos.org/t/firefox-on-19-09-could-be-marked-as-insecure-or-downgraded-to-esr-68/4577/9 "2019-11-04T16:46:54Z")

</div>

Hi, I’ll be short and to the point, which might look like I’m negative or combative, but this is only a list of facts about the current workflow.

As shown by [my previously aborted RFCs about a dedicated backport _team_](https://github.com/samueldr/rfcs/blob/c5076b0814040cfaa960c5af99ba6798311333f1/rfcs/0029-backports-team.md#motivation), there is already a (though not upstreamly) [documented process](https://gist.github.com/grahamc/c60578c6e6928043d29a427361634df6#what-to-backport) the Nixpkgs community has been following since [at least early January 2017](https://gist.github.com/grahamc/c60578c6e6928043d29a427361634df6/revisions).

Since this predates RFCs, there is no RFC for the process. The aborted RFC was more about codifying a workflow and tooling around the existing criteria.

Now I’ll be blunt. If there is a desire to change the process, it has to go through the RFC process.

Though, I will concede that the fact that this information was passed around via word-of-mouth, rather than included into the Nixpkgs manual is not great. Though, it is precedent about the way it has been happening since at least early 2017.
