Subject: Re: [bug#67512] [PATCH 0/5] Add LibreWolf

From: Ian Eure <[email-masked]>
Date: Sun, 10 Dec 2023 14:28:35 -0800

Hi, thank you very much for your comments.

Ludovic Courtès <[email-masked]> writes:

> Hi!
>
> Ian Eure <[email-masked]> skribis:
>
>> I mentioned in #guix that I was working on a package for 
>> LibreWolf,
>> and it was requested that I send in patches, so I am.  These 
>> changes
>> are based on the firefox-esr package in nonguix; I've retained 
>> the
>> copyright / authorship notices from there.
>>
>> LibreWolf (https://librewolf.net/) is a fork of Firefox which
>> removes the telemetry and advertising, and bundles uBlock 
>> Origin.
>> It doesn't have the redistribution issues that Firefox does, 
>> its
>> name/logo are under MPL 2.0 and aren't trademarked.
>>
>> I'm new to Guix, and not remotely a browser development expert, 
>> so I
>> don't expect these are ready to be accepted yet, but I believe
>> they're in good enough shape to have a discussion about. 
>> They're
>> working acceptably well for me, though I'm not currently daily
>> driving Guix, so there may be issues I haven't encountered yet.
>
> This is much appreciated!  People often complain that IceCat is 
> based on
> too old a version of Firefox, so if we can have LibreWolf (or 
> even
> Firefox without its problematic bits), that’s great.
>

IMO, LibreWolf pretty much is Firefox without the problematic 
bits.
It’s been my default browser for several years, and I’m very 
satisfied
with it.

>> The librewolf package has some functions duplicated from (gnu
>> packages gnuzilla), which probably ought to get factored out 
>> and put
>> somewhere, but I'm not sure if they should be in (gnu packages
>> mozilla) or a different module.  Guidance would be appreciated 
>> here.
>
> To me that’s the main issue here: these packages are complex, 
> and I
> wouldn’t want us to end up with two (or more!) copies of these 
> beasts.
>
> As the person who made the changes, it would be great if you 
> could
> pinpoint things that had to be changed compared to ‘icecat’. 
> What
> phases or flags differ?  What phases can be factorized?
>
This work isn’t based on the icecat package, but on the 
firefox-esr
package from nonguix.  The duplication I refer to is two small 
helper
functions, `runpath-of' and `runpaths-of-input', totaling nine 
lines
of code; they’re flagged with a comment in the patch.  As 
mentioned in
the cover letter, I’m happy to extract these, I just don’t know 
where
they ought to be placed.  They’re defined inside a lambda in a 
gexp,
which sounds like it may be challenging to put somewhere 
accessible to
both packages.

Skimming the icecat package, not many of the build steps are 
shared
with librewolf, and factoring the commonalities out would IMO 
result
in overly complex, brittle, hard to maintain code that’s worse 
than
the slight duplication between the two packages.  If there’s a 
strong
feeling that they must be accounted for, I’ll give it a try, but I
don’t believe that it’s the best option.

Thanks,

  — Ian