unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Aleix Conchillo Flaqué" <aconchillo@gmail.com>
To: Maxime Devos <maximedevos@telenet.be>
Cc: Guix-devel <guix-devel@gnu.org>
Subject: Re: (ice-9 base64)?
Date: Wed, 17 Aug 2022 17:09:24 -0700	[thread overview]
Message-ID: <CA+XASoXPLroB1LLb6yi4w0nAd20xHGC0HBEJtjUYzuFP7XCAWw@mail.gmail.com> (raw)
In-Reply-To: <5331d2f3-13a5-e40c-f3bb-398438a0b103@telenet.be>

[-- Attachment #1: Type: text/plain, Size: 5954 bytes --]

Thank you for the explanations Maxime!

Then, if I understood correctly, IMO I would say Guile should not really
care about Guix's bundling/unbundling. That is, adding (ice-9 base64) (or
however we want to call it... maybe (encoding base64) following Golang and
Guile's (web ....) module) should be totally independent of Guix. So, if we
add (ice-9 base64) to Guile then Guix should figure out what to do with it,
but it's Guix's concern not Guile's.

About Guix's unbundling (maybe that's something that should go on Guix's
mailing list), I don't think currently there's any unbundling for base64
modules or at least not in a package I maintain guile-jwt (guile-jwt
bundles base64). And probably there's no unbundling because there's no
canonical implementation? Even if there was a canonical implementation, how
would that look like in Guix's guile-jwt package? What would the snippet
actually do?

Thanks,

Aleix

On Wed, Aug 17, 2022 at 12:23 PM Maxime Devos <maximedevos@telenet.be>
wrote:

>
> On 17-08-2022 18:22, Aleix Conchillo Flaqué wrote:
>
> Hi Maxime!
>
> On Tue, Aug 16, 2022 at 12:04 PM Maxime Devos <maximedevos@telenet.be>
> wrote:
>
>>
>> On 16-08-2022 19:21, Aleix Conchillo Flaqué wrote:
>>
>>
>>
>> On Tue, Aug 16, 2022 at 9:59 AM Maxime Devos <maximedevos@telenet.be>
>> wrote:
>>
>>>
>>> On 16-08-2022 18:10, Aleix Conchillo Flaqué wrote:
>>>
>>> Hi,
>>>
>>> In many projects I've been copying Göran Weinholt's base64
>>> implementation and I've also seen it in other projects, would it make sense
>>> to include it in Guile's standard library? [...]
>>>
>>> If we do this, we should contact the various other projects to make them
>>> use (ice-9 base64).
>>>
>>
>> I think they could switch whenever they want (i.e. whenever this was
>> added to Guile) or even not switch at all.
>>
>> Sure, but they can't switch if they don't know about it. And if they
>> don't know about it and hence don't switch, the proposal fails at its
>> purpose of unbundling base64. Besides, we need them to switch (see Guix
>> no-bundling policy and the reasons behind it) -- if upstream refuses to
>> unbundle, then in our locally modified version for Guix.
>>
>
> Forgive my ignorance, but what do you mean by unbundling? I'm not familiar
> with Guix at all, well, just conceptually and for trying a few commands
> years ago.
>
> Sometimes the source code of a package contains a copy of a dependency.
> This is called 'bundling'. 'Unbundling' is the act of undoing the
> 'bundling', this is often done by cleaning up the source code (with what we
> call a 'snippet' in Guix: (snippet #~(delete-file-recursively
> "googletest"))) and setting some configuration flags
> ("-DUSE_SYSTEM_GOOGLETEST=yes" or such).
>
> For example, in Guix we occasionally encounter a bundled "googletest" (a
> test framework).
>
> In this case, we are kind of (un)bundling the base64 module, though it's
> not _exactly_ (un)bundling because, AFAIK, there is canonical upstream
> location for the base64 module to replace things with. Still seems pretty
> close to me.
>
> Upsides of unbundling, as mentioned in '(guix)Submitting Patches':
>
>      Sometimes, packages include copies of the source code of their
>      dependencies as a convenience for users.  However, as a
>      distribution, we want to make sure that such packages end up using
>      the copy we already have in the distribution, if there is one.
>      This improves resource usage (the dependency is built and stored
>      only once), and allows the distribution to make transverse changes
>      such as applying security updates for a given software package in a
>      single place and have them affect the whole system—something that
>      bundled copies prevent.
>
> Another benefit: reviewing for absence of malware is less work when
> there's only a single copy to review, though I suppose that in this case
> the module is so small the reviewing benefit is minimal.
>
> Whether we simply replace (guix base64) by (gcrypt base64) depends on how
>>> old (gcrypt base64) is compared to the earliest 'supported' Guix for
>>> pull/time-travel, but even if it is not present in the old gcrypt, we can
>>> work-around that (we have a 'fake-gcrypt-hash' in build-aux/build-self.scm,
>>> so we can easily have a (define gcrypt-base64 [some copy])).  Or simply
>>> update the local guile-gcrypt in buid-aux/build-self.scm.
>>>
>> guile-gcrypt base64 is pretty new with the patch above (but no release
>> after that), I have no idea if Guix has added anything else.
>>
>> base64 is available in at least 0.3.0, which is packaged in Debian
>> bullseye (which is considered "stable"), so not too new, though we might
>> need to change build-aux/build-self.scm if 0.1.0 doesn't have base64.  Guix
>> appears to have the pre-quoted-patch version, without changes of its own
>> except for a different module name.
>>
>
> One more time, forgive me, but what is build-aux/build-self.scm?
>
> It's an implementation detail of Guix, it's a file (from the new version,
> not the old) that is loaded by "guix pull" in the old Guix to compile the
> new version of Guix.
>
> OTOH a similar replacement can be done for (ice-9 base64), but
>>> transitioning to (ice-9 base64) would take much longer, at least until the
>>> various distributions are updated to a Guile that has (ice-9 base64),
>>> whereas (gcrypt base64) could be switched to immediately.
>>>
>> Maybe this could be handled by each project independently.
>>
>> They wouldn't have to if the base64 module is put in (guile gcrypt).
>>
>>
>> And the last forgiveness... (guile gcrypt)?
>
> Oops, that should have been guile-gcrypt -- it's a Guile package -- "guix
> show guile-gcrypt" / <https://notabug.org/cwebber/guile-gcrypt>
> <https://notabug.org/cwebber/guile-gcrypt>.
>
> Greetings,
> Maxime.
>

[-- Attachment #2: Type: text/html, Size: 13454 bytes --]

  reply	other threads:[~2022-08-18  0:10 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CA+XASoUx+D059h-Df-qQfkmvXto9YEbB25PENqF104NnbzdCNg@mail.gmail.com>
     [not found] ` <33556713-c85b-ab0f-554e-94a40f9d418e@telenet.be>
     [not found]   ` <CA+XASoWrAYkuJRaEueT2Fb1Wrx6KNV3gpABMMiFPLijUDkR+Ww@mail.gmail.com>
2022-08-16 19:04     ` (ice-9 base64)? Maxime Devos
2022-08-16 22:40       ` Blake Shaw
2022-08-17 16:22       ` Aleix Conchillo Flaqué
2022-08-17 19:23         ` Maxime Devos
2022-08-18  0:09           ` Aleix Conchillo Flaqué [this message]
2022-08-18  7:56             ` Maxime Devos
2022-08-19  0:20               ` Aleix Conchillo Flaqué
2022-08-19 10:06                 ` Maxime Devos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+XASoXPLroB1LLb6yi4w0nAd20xHGC0HBEJtjUYzuFP7XCAWw@mail.gmail.com \
    --to=aconchillo@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=maximedevos@telenet.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).