unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* rust-build-system from antioxidant
@ 2023-06-02 18:02 Nicolas Graves via Development of GNU Guix and the GNU System distribution.
  2023-06-08 17:55 ` Maxime Devos
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Graves via Development of GNU Guix and the GNU System distribution. @ 2023-06-02 18:02 UTC (permalink / raw)
  To: guix-devel; +Cc: maximedevos


A few months ago, Maxime Devos worked on a new rust-build-system to
handle a few issues we were experiencing with cargo (see discussions on
antioxidant in guix-devel).

A month ago, we discussed about the possibility of the integration in
core guix, and the required steps. Maxime and I had a different
approach. Maxime highlighted the possibility to make a smooth transition
but once that would require many gradual changes and deprecation. My
approach was that since we'll have to eventually migrate all packages to
rust-build-system, and since we can freeze all former rust packages in
an archive channel, I would be clearer to make the transition at once.

Took me quite some time from there, but thanks to the huge work of
Maxime and a few rust patches, I've managed to compile ripgrep properly,
along with more than 350 packages which represent all transitive inputs
and native-inputs. It's basically a package-level copy of Maxime's work
on antioxidant, with more focus on "bootstrapping" properly (very few
packages are missing a test phase), and some work to cut down the number
of dependencies.

It's only a step, but a good one to continue the discussion about the
integration of this build-system (and the way it should be integrated).

You can find it in an archive right here for a 5 days (I would rather
not create a new 8 Gb repo online for 100 kb transferred, sorry). 

https://drop.chapril.org/download/696f37be60f243fd/#-j9Nt_xiN9eUBCsHfMDHig

If we manage to continue this to reach 100% builds like the antioxidant
channel, we could indeed switch in one big commit. The workspace
build-system is not included yet.

-- 
Best regards,
Nicolas Graves


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-02 18:02 rust-build-system from antioxidant Nicolas Graves via Development of GNU Guix and the GNU System distribution.
@ 2023-06-08 17:55 ` Maxime Devos
  2023-06-12  1:17   ` Maxim Cournoyer
  0 siblings, 1 reply; 11+ messages in thread
From: Maxime Devos @ 2023-06-08 17:55 UTC (permalink / raw)
  To: Nicolas Graves, guix-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 877 bytes --]

Op 02-06-2023 om 20:02 schreef Nicolas Graves:
> 
> A few months ago, Maxime Devos worked on a new rust-build-system to
> handle a few issues we were experiencing with cargo (see discussions on
> antioxidant in guix-devel).
> 
> A month ago, we discussed about the possibility of the integration in
> core guix, and the required steps. Maxime and I had a different
> approach. Maxime highlighted the possibility to make a smooth transition
> but once that would require many gradual changes and deprecation. My
> approach was that since we'll have to eventually migrate all packages to
> rust-build-system, and since we can freeze all former rust packages in
> an archive channel, I would be clearer to make the transition at once.
 > [...]

Actually, I started out with the non-gradual approach, but that was 
overruled by Ludo', IIRC.

Greetings,
Maxime.

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 929 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-08 17:55 ` Maxime Devos
@ 2023-06-12  1:17   ` Maxim Cournoyer
  2023-06-12 10:10     ` Maxime Devos
  2023-06-12 15:08     ` rust-build-system from antioxidant Vagrant Cascadian
  0 siblings, 2 replies; 11+ messages in thread
From: Maxim Cournoyer @ 2023-06-12  1:17 UTC (permalink / raw)
  To: Maxime Devos; +Cc: Nicolas Graves, guix-devel

Hi Maxime,

Maxime Devos <maximedevos@telenet.be> writes:

> Op 02-06-2023 om 20:02 schreef Nicolas Graves:
>> A few months ago, Maxime Devos worked on a new rust-build-system to
>> handle a few issues we were experiencing with cargo (see discussions on
>> antioxidant in guix-devel).
>> A month ago, we discussed about the possibility of the integration
>> in
>> core guix, and the required steps. Maxime and I had a different
>> approach. Maxime highlighted the possibility to make a smooth transition
>> but once that would require many gradual changes and deprecation. My
>> approach was that since we'll have to eventually migrate all packages to
>> rust-build-system, and since we can freeze all former rust packages in
>> an archive channel, I would be clearer to make the transition at once.
>> [...]
>
> Actually, I started out with the non-gradual approach, but that was
> overruled by Ludo', IIRC.

Did you perhaps meant to say that it was disagreed with, or at worst
"blocked by"?  There should not be a notion of 'overruling' in our
contribution processes (unless the Guix co-maintainers have to step in
as a last resort) if all participants strive to build consensus, as
mentioned in info '(guix) Commit Access':

   It is expected from all contributors, and even more so from committers,
   to help build consensus and make decisions based on consensus.  To learn
   what consensus decision making means and understand its finer details,
   you are encouraged to read
   <https://www.seedsforchange.org.uk/consensus>.

I thought I knew what consensus meant myself, but the above link helped
me to re-frame a few things in a way that is more conducive to building
consensus.

-- 
Thanks,
Maxim


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-12  1:17   ` Maxim Cournoyer
@ 2023-06-12 10:10     ` Maxime Devos
  2023-06-12 13:05       ` Maxim Cournoyer
  2023-07-02 20:12       ` Overruling and blocking Ludovic Courtès
  2023-06-12 15:08     ` rust-build-system from antioxidant Vagrant Cascadian
  1 sibling, 2 replies; 11+ messages in thread
From: Maxime Devos @ 2023-06-12 10:10 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: Nicolas Graves, guix-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 5271 bytes --]

Op 12-06-2023 om 03:17 schreef Maxim Cournoyer:
> Hi Maxime,
> 
> Maxime Devos <maximedevos@telenet.be> writes:
> 
>> Op 02-06-2023 om 20:02 schreef Nicolas Graves:
>>> A few months ago, Maxime Devos worked on a new rust-build-system to
>>> handle a few issues we were experiencing with cargo (see discussions on
>>> antioxidant in guix-devel).
>>> A month ago, we discussed about the possibility of the integration
>>> in
>>> core guix, and the required steps. Maxime and I had a different
>>> approach. Maxime highlighted the possibility to make a smooth transition
>>> but once that would require many gradual changes and deprecation. My
>>> approach was that since we'll have to eventually migrate all packages to
>>> rust-build-system, and since we can freeze all former rust packages in
>>> an archive channel, I would be clearer to make the transition at once.
>>> [...]
>>
>> Actually, I started out with the non-gradual approach, but that was
>> overruled by Ludo', IIRC.
> 
> Did you perhaps meant to say that it was disagreed with, or at worst
> "blocked by"?

Yes.  Overruling is a form of blocking, and blocking by authority 
(whether de facto or de jure) is overruling.

> There should not be a notion of 'overruling' in our
> contribution processes (unless the Guix co-maintainers have to step in
> as a last resort) if all participants strive to build consensus, as
> mentioned in info '(guix) Commit Access':
> 
>     It is expected from all contributors, and even more so from committers,
>     to help build consensus and make decisions based on consensus.  To learn
>     what consensus decision making means and understand its finer details,
>     you are encouraged to read
>     <https://www.seedsforchange.org.uk/consensus>.
> 
> I thought I knew what consensus meant myself, but the above link helped
> me to re-frame a few things in a way that is more conducive to building
> consensus.

In my experience, Ludovic often doesn't actually practice that, though.
For example, the thread of the patch you sent at 
<https://issues.guix.gnu.org/51427> is a good example of this, pretty 
much everyone (except Ludo') agreed that the provided patch is good.

People pointed out how Ludo' multiple time missed the point of the 
patch.  Yet, Ludo' kept missing the point, e.g. consider:

 > [Liliana Marie prikler wrote on 18 jul 2022 19:03]
> Am Montag, dem 18.07.2022 um 15:57 +0200 schrieb Ludovic Courtès:
> Toggle quote (7 lines)
>> Hello,
>> 
>> With commit 472a0e82a52a3d5d841e1dfad6b13e26082a5750 (Nov. 2021),
>> partially fixing <https://issues.guix.gnu.org/24937>, there is
>> hopefully less pressure to skip the remove-unused-links phase.
>> 
>> Should we close this issue?
> As a hard disk user, I'm leaning towards "no".  In fact, I recently
> encountered a case where I think I might want to skip it even if not
> deleting "specific items".  [...

 > [Ludovic]
> I agree that we should strive to have good performance on that kind of
> hardware too, but I don’t know how to get there.

That's what the patch is for:

 > [Liliana]
 > [...]
>> I agree that we should strive to have good performance on that kind
>> of hardware too, but I don’t know how to get there.
> I don't think deleting links will ever be fast on that disk.  But what
> I've been saying the whole time is that I don't always need the links
> deleted.  I think adding "expert" switches to skip these phases might
> actually be enough – after all, if I ever do want to run a full GC, the
> information ought to be the same, no?

[A remainder by me that Ludovic is missing the point]
> [...] The point isn't to work-around slow "deleting unused links" 
> implementation, but rather to avoid inherit slowness of deleting 
> everything when deleting a few things suffice [...]
 > [...]
> Apologies for being elliptic.  My point here, as has been discussed
> earlier in this thread, is that we can’t just skip that phase or we’d
> simply leave files around without actually deleting them.

As repeatedly explained in different ways previously, we can, in fact, 
just do this and these consequences are unproblematic.  This is again 
explained in different ways in a response by Liliana and me.

Given that a few of the participants that wanted the patch in some form, 
are actually committers yet didn't commit it even though there was 
consensus, and that de facto Ludo' has authority and disagreed with the 
patch, the only conclusion I can draw from this, is that Ludo' 
effectively overruled the consensus with their (de facto) authority.

Whether this was intentional or not, the effect was the same.

(Technically ‘https://www.seedsforchange.org.uk/consensus#block’ allows 
for an unilateral block, but it later writes ‘However it provides a 
safety net for situations where a proposal would seriously hurt the 
group of people in it’, which doesn't apply at all here.)

This is not the antioxidant stuff, but it should serve as an explanation 
on why I do not believe that Ludovic practices consensus.  There are 
also a few other examples/threads that look suspect to me, but they are 
very ambiguous/not clear-cut.

Greetings,
Maxime.

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 929 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-12 10:10     ` Maxime Devos
@ 2023-06-12 13:05       ` Maxim Cournoyer
  2023-06-14 13:02         ` Maxime Devos
  2023-07-02 20:12       ` Overruling and blocking Ludovic Courtès
  1 sibling, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2023-06-12 13:05 UTC (permalink / raw)
  To: Maxime Devos; +Cc: Nicolas Graves, guix-devel

Hi Maxime,

Maxime Devos <maximedevos@telenet.be> writes:

> Op 12-06-2023 om 03:17 schreef Maxim Cournoyer:
>> Hi Maxime,
>> Maxime Devos <maximedevos@telenet.be> writes:
>> 
>>> Op 02-06-2023 om 20:02 schreef Nicolas Graves:
>>>> A few months ago, Maxime Devos worked on a new rust-build-system to
>>>> handle a few issues we were experiencing with cargo (see discussions on
>>>> antioxidant in guix-devel).
>>>> A month ago, we discussed about the possibility of the integration
>>>> in
>>>> core guix, and the required steps. Maxime and I had a different
>>>> approach. Maxime highlighted the possibility to make a smooth transition
>>>> but once that would require many gradual changes and deprecation. My
>>>> approach was that since we'll have to eventually migrate all packages to
>>>> rust-build-system, and since we can freeze all former rust packages in
>>>> an archive channel, I would be clearer to make the transition at once.
>>>> [...]
>>>
>>> Actually, I started out with the non-gradual approach, but that was
>>> overruled by Ludo', IIRC.
>> Did you perhaps meant to say that it was disagreed with, or at worst
>> "blocked by"?
>
> Yes.  Overruling is a form of blocking, and blocking by authority
> (whether de facto or de jure) is overruling.
>
>> There should not be a notion of 'overruling' in our
>> contribution processes (unless the Guix co-maintainers have to step in
>> as a last resort) if all participants strive to build consensus, as
>> mentioned in info '(guix) Commit Access':
>>     It is expected from all contributors, and even more so from
>> committers,
>>     to help build consensus and make decisions based on consensus.  To learn
>>     what consensus decision making means and understand its finer details,
>>     you are encouraged to read
>>     <https://www.seedsforchange.org.uk/consensus>.
>> I thought I knew what consensus meant myself, but the above link
>> helped
>> me to re-frame a few things in a way that is more conducive to building
>> consensus.
>

[...]

> For example, the thread of the patch you sent at
> <https://issues.guix.gnu.org/51427> is a good example of this, pretty
> much everyone (except Ludo') agreed that the provided patch is good.

Let's avoid directly criticising ourselves and try to discuss what I
think has more value, which is coming to a better understanding of the
situation and how the perceived deadlock could be undone.  Consensus is
not a majority vote; all parties have to walk the extra mile to reach a
common ground.  I think the object there was from a semantic point of
view: we'd have a 'garbage collection' command (guix gc) which wouldn't
collect any garbage!  It's a valid objection, although its importance in
the narrow use case presented was not agreed by all parties.

A consensus-based outcome could be to add a new option to guix gc,
e.g. '--invalidate', which would be documented as "invalidate
(de-register from the Guix database) rather actually delete from the
store".  If that's still argued semantically unclear we could go with a
dedicated 'guix invalidate', although that seems overkill to me.

This is a bit more work than the 1 line change initially suggested, but
I think we can agree that'd be a more general/better solution.  Such is
the trade-off of consensus-based decision making (requires more
effort/slower moving but with a higher quality outcome).

-- 
Thanks,
Maxim


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-12  1:17   ` Maxim Cournoyer
  2023-06-12 10:10     ` Maxime Devos
@ 2023-06-12 15:08     ` Vagrant Cascadian
  2023-06-12 16:34       ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
  1 sibling, 1 reply; 11+ messages in thread
From: Vagrant Cascadian @ 2023-06-12 15:08 UTC (permalink / raw)
  To: Maxim Cournoyer, Maxime Devos; +Cc: Nicolas Graves, guix-devel

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

On 2023-06-11, Maxim Cournoyer wrote:
> Maxime Devos <maximedevos@telenet.be> writes:
>> Op 02-06-2023 om 20:02 schreef Nicolas Graves:
>>> A few months ago, Maxime Devos worked on a new rust-build-system to
>>> handle a few issues we were experiencing with cargo (see discussions on
>>> antioxidant in guix-devel).
>>> A month ago, we discussed about the possibility of the integration
>>> in
>>> core guix, and the required steps. Maxime and I had a different
>>> approach. Maxime highlighted the possibility to make a smooth transition
>>> but once that would require many gradual changes and deprecation. My
>>> approach was that since we'll have to eventually migrate all packages to
>>> rust-build-system, and since we can freeze all former rust packages in
>>> an archive channel, I would be clearer to make the transition at once.
>>> [...]
>>
>> Actually, I started out with the non-gradual approach, but that was
>> overruled by Ludo', IIRC.
>
> Did you perhaps meant to say that it was disagreed with, or at worst
> "blocked by"?  There should not be a notion of 'overruling' in our
> contribution processes (unless the Guix co-maintainers have to step in
> as a last resort) if all participants strive to build consensus, as
> mentioned in info '(guix) Commit Access':
>
>    It is expected from all contributors, and even more so from committers,
>    to help build consensus and make decisions based on consensus.  To learn
>    what consensus decision making means and understand its finer details,
>    you are encouraged to read
>    <https://www.seedsforchange.org.uk/consensus>.
>
> I thought I knew what consensus meant myself, but the above link helped
> me to re-frame a few things in a way that is more conducive to building
> consensus.

A possible reframing that might be relevent here too that is maybe not
captured in the seedsforchange link referenced...

In a consensus decision (formal or informal), it is often really
valuable to not get caught up in "so-and-so is blocking X, Y, Z", but
rather more "this issue so-and-so raised is blocking X, Y, Z" or even
"this issue is blocking X, Y, Z". It is a perhaps subtle distinction,
but an important one, as I think it can refocus on a problem-solving
approach rather than finger-pointing-and-blaming approach.

That said, I definitely get the impression the Guix community practices
a very informal ad-hoc form of consensus, which ... while very flexible,
misses many of the strongest benefits of consensus (notably, clarity of
when a decision is actually reached and the next steps to move forward
with it).

A quick attempt at condensing a (more) formal consensus decision making
process boils down to:

* describe a situation, issue, proposal, etc.
* clarify understanding of the above (this step unfortunately
  may get skipped as people are very eagre to...)
* raise concerns
* address concerns (as a distinct step from raising concerns)
(iterate and repeat above steps as necessary)
* call for a decision (all concerns ideally resolved or mostly so.. ?)
* record decision (noting outstanding concerns if any)

I am not suggesting that a more formal process is even appropriate to
guix patch review...

Obviously, with the asyncronous nature of, say, a mailing list
discussion, these things do not necessarily happen in a structured
sequential way, though possibly being aware of the "ideal" formal
process, people can informally attempt to approximate it.

I do want to point out that informal processes are more prone to falling
into difficult patterns (e.g. defaulting to hierarchy or other power
dynamics), at least with the social aspects... I think this is a
collaborative project, so everything kind of has a social component!

We all fall down sometimes or lapse into old habits now and then, but
even if there is no formalized clarity of process, it is helpful to at
least reach towards the spirit of consensus building...


live well,
  vagrant

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-12 15:08     ` rust-build-system from antioxidant Vagrant Cascadian
@ 2023-06-12 16:34       ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
  2023-06-16 13:53         ` Nicolas Graves via Development of GNU Guix and the GNU System distribution.
  0 siblings, 1 reply; 11+ messages in thread
From: Felix Lechner via Development of GNU Guix and the GNU System distribution. @ 2023-06-12 16:34 UTC (permalink / raw)
  To: Vagrant Cascadian
  Cc: Maxim Cournoyer, Maxime Devos, Nicolas Graves, guix-devel

Hi Vagrant,

On Mon, Jun 12, 2023 at 8:09 AM Vagrant Cascadian <vagrant@debian.org> wrote:
>
> everything kind of has a social component!

Thank you for pointing that out! Many technical discussions about
project governance claim high moral ground but remain incomplete.

Maxime possibly felt some righteous indignation because Maxim's
well-intended reference to consensus does not actually apply in Guix
that often. (I have to be careful to keep both your names in order.)
It would be ignorant to claim that there are no power structures.

Not all of them are official, but they are there. [1] Hierarchies are
human, and they are not always bad.

During the past year, I made some ambitious proposals that did not
resonate with the general public or any of the folks in power. (I am a
member of the general public.) Some committers told me privately that
nothing big happens without the maintainer collective.

Someone in the maintainer collective told me that nothing truly
important (like legal stuff) happens without Ludo'.

Of course, that expectation places an extraordinary burden on Ludo',
who already works very hard. I don't think he (or maybe "they") even
wants all that responsibility. Personally, I find Ludo' measured and
generous.

That being said, everyone makes mistakes. Sometimes, words are
misunderstood. At other times, the merit of an argument is overlooked.
Maybe that's what happened in the bug Maxime cited. Or maybe Maxime
made a mistake with that narrow, unfavorable and critical assessment.
Either way, it's important to have goodwill toward one another.

I know a little bit about how large groups can work together. For the
past nine years, I have been a minor city official in a bustling
community of 230,000 immigrants—mostly from India and China, with 158
languages spoken at home. The key is to keep solving the community's
problems and also, to solve other people's problems in addition to my
own.

In Jewish mysticism, there is an old story about a giant vessel that
once existed when the world was made. Unfortunately, it broke into a
gazillion pieces, and we each ended up with a little shard. We spend
the remainder of our lives looking for other pieces that fit.

Let's be proud of our large and diverse community. Let's focus on the
pieces that fit together. Thank you all for being here!

Kind regards
Felix

[1] https://guix.gnu.org/blog/2022/gnu-guix-maintainer-rotation/


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-12 13:05       ` Maxim Cournoyer
@ 2023-06-14 13:02         ` Maxime Devos
  0 siblings, 0 replies; 11+ messages in thread
From: Maxime Devos @ 2023-06-14 13:02 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: Nicolas Graves, guix-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 6736 bytes --]



Op 12-06-2023 om 15:05 schreef Maxim Cournoyer:
> Hi Maxime,
> 
> Maxime Devos <maximedevos@telenet.be> writes:
> 
>> Op 12-06-2023 om 03:17 schreef Maxim Cournoyer:
>> [...]
>> Yes.  Overruling is a form of blocking, and blocking by authority
>> (whether de facto or de jure) is overruling.
>>
>>> There should not be a notion of 'overruling' in our
>>> contribution processes (unless the Guix co-maintainers have to step in
>>> as a last resort) if all participants strive to build consensus, as
>>> mentioned in info '(guix) Commit Access':
>>>      It is expected from all contributors, and even more so from
>>> committers,
>>>      to help build consensus and make decisions based on consensus.  To learn
>>>      what consensus decision making means and understand its finer details,
>>>      you are encouraged to read
>>>      <https://www.seedsforchange.org.uk/consensus>.
>>> I thought I knew what consensus meant myself, but the above link
>>> helped
>>> me to re-frame a few things in a way that is more conducive to building
>>> consensus.
>>
> 
> [...]
> 
>> For example, the thread of the patch you sent at
>> <https://issues.guix.gnu.org/51427> is a good example of this, pretty
>> much everyone (except Ludo') agreed that the provided patch is good.
> 
> Let's avoid directly criticising ourselves and try to discuss what I
> think has more value, which is coming to a better understanding of the
> situation and how the perceived deadlock could be undone.
> Consensus is not a majority vote; all parties have to walk the extra mile
 >to reach a
> common ground.

This quote is taken out of context -- nowhere I stated or assumed that 
it was a majority vote -- (n - tiny)/n is higher than 50%, and I also 
demonstrated that some other criteria were met.

Please don't ignore the explanation I wrote below all that, let's avoid 
taking quotes out-of-context, and let's avoid ignoring the concerns I 
pointed out in my previous e-mail.

 > [...] try to discuss what I think has more value,
> which is coming to a better understanding of the situation, [...]

I did this in my previous e-mail.  You can bring new discussion from 
another POV if you want to, but why are you ignoring my discussion on 
this matter?

 > [...] all parties have to walk the extra mile to reach a common
 > ground. [...]

This sentence would have more weight if you explained somewhere how this 
wasn't the case in <https://issues.guix.gnu.org/51427>.

> I think the object there was from a semantic point of
> view: we'd have a 'garbage collection' command (guix gc) which wouldn't
> collect any garbage!  It's a valid objection, although its importance in
 > the narrow use case presented was not agreed by all parties.

Ludo' claimed that the resulting patch wouldn't collect garbage:

> I believe the effect is that ‘guix gc -D /gnu/store/…-disk-image’ would
> remove nothing: /gnu/store/.links would still contain a copy of that big
> disk image, so as a result, you’ve freed zero bytes.

On its own, this is a valid objection, but it is false -- it does 
collect some garbage -- it deletes the /gnu/store/ITEM.  This is 
implicitly referred to in:

 > https://issues.guix.gnu.org/51427#4
> [...]  Obviously there needs to be a way of __removing
> single items from the store__, [...]

 > zimoun wrote on 9 Nov 2021 19:10
> [...] Even if the phase is drastically speed up, it would be probably still
> too slow when using the option ’-D’ __remove only one <item>__; or just
> some. [...]

Yet, Ludo' seems to have missed this:

 > [Ludovic Courtès wrote on 17 Nov 2021 11:02]
 > [...]> No; like I wrote, it would have the effect of not deleting 
anything:
 > [...

So I have written it down explicitly:

 > https://issues.guix.gnu.org/51427#25
> Also, it _does_ collect garbage -- it collects the /gnu/store/... item, 
> it just doesn't collect _all_ the garbage (it doesn't collect the 
> individual files in the store item or the things in /gnu/store/.links).

There wasn't any response.

> A consensus-based outcome could be to add a new option to guix gc,
> e.g. '--invalidate', which would be documented as "invalidate
> (de-register from the Guix database) rather actually delete from the
> store".  If that's still argued semantically unclear we could go with a
> dedicated 'guix invalidate', although that seems overkill to me.

"guix gc -D" is already semantically clear -- it deletes a single 
/gnu/store/... item.  IIUC, the patch at 
<https://issues.guix.gnu.org/51427#1> fixes the bug where it also 
deletes more than that.

(IMO both deleting and not deleting the relevant links in 
/gnu/store/.links would be acceptable behaviors, as long as it doesn't 
do more than that.  Also IMO deleting more links is technically a bug, 
but harmless __as long as it's efficient.)

(IIUC, it also deregisters the store item, but that's needed for 
consistency of DB->file system, and deregistering can be considered a 
removal of DB entries, so not really a problem.)

> This is a bit more work than the 1 line change initially suggested, but
> I think we can agree that'd be a more general/better solution.

It's neither more general nor less general.  If you just deregister it 
from the Guix database, the directory /gnu/store/... exists (unlike 
"guix gc -D") so --invalidate is not more general than "guix gc -D".

If you do "guix gc -D", it will not only deregister the item, but also 
delete the item.  As the removal is not optional, this is not more 
general than "guix gc -D".

Also, I consider "guix gc -D" to be a better solution, because "guix gc 
--invalidate" only deletes entries from the database whereas "guix gc 
-D" also deletes the directory, so "guix gc -D" collects more garbage 
than "guix gc --invalidate".

> Such is
> the trade-off of consensus-based decision making (requires more
> effort/slower moving but with a higher quality outcome).

While it appears to be completely sufficient for the use cases mentioned 
in <https://issues.guix.gnu.org/51427#1>, I don't think this can be 
considered a higher quality outcome, see above.

However, IMO having both <https://issues.guix.gnu.org/51427#1> and 
"--invalidate" would be even better; being able to test what happens if 
a non-registered directory exists in /gnu/store (e.g. a substitution 
interrupted by a sudden power-off) might be convenient for testing 
(without actually having to abruptly shut down the computer) the 
behaviour of a hypothetical GNUnet equivalent of "guix publish" 
(assuming that it works by doing a scandir of the store etc.).

Best regards,
Maxime Devos.

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 929 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-12 16:34       ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
@ 2023-06-16 13:53         ` Nicolas Graves via Development of GNU Guix and the GNU System distribution.
  2023-06-17  0:51           ` Maxim Cournoyer
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Graves via Development of GNU Guix and the GNU System distribution. @ 2023-06-16 13:53 UTC (permalink / raw)
  To: Felix Lechner, Vagrant Cascadian
  Cc: Maxim Cournoyer, Maxime Devos, guix-devel


Hi all,

Thanks for this discussion that I didn't expected to happen ;)

I'll try and finish a version of the rust-build-system but I'd like to
know if there are reasons to not want a direct and complete rewrite of
all Rust packages before putting more time into this. My rationale is
that since we have channels, users won't really be affected in any
meaningful way because adding a "snapshot of cargo packages" in a
channel and then adding the channel is straightforward.

I've merged the rust-build-system and rust-workspace-build-system into a
single one, and made some UX improvements (a dozen patches on top of
Maxime's work).

If atomicity / readability of changes is the issue, I can try to cut the
packages rewrites into patches (although that would make more than 1k
patches total I think).

-- 
Best regards,
Nicolas Graves


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: rust-build-system from antioxidant
  2023-06-16 13:53         ` Nicolas Graves via Development of GNU Guix and the GNU System distribution.
@ 2023-06-17  0:51           ` Maxim Cournoyer
  0 siblings, 0 replies; 11+ messages in thread
From: Maxim Cournoyer @ 2023-06-17  0:51 UTC (permalink / raw)
  To: Nicolas Graves; +Cc: Felix Lechner, Vagrant Cascadian, Maxime Devos, guix-devel

Hi Nicolas,

Nicolas Graves <ngraves@ngraves.fr> writes:

> Hi all,
>
> Thanks for this discussion that I didn't expected to happen ;)
>
> I'll try and finish a version of the rust-build-system but I'd like to
> know if there are reasons to not want a direct and complete rewrite of
> all Rust packages before putting more time into this. My rationale is
> that since we have channels, users won't really be affected in any
> meaningful way because adding a "snapshot of cargo packages" in a
> channel and then adding the channel is straightforward.

Thank you!

My impression is that the Rust packaging in Guix is so problematic that
if a way would mean less work for you and motivate you to push this work
to the finish line it, that may well be the better way :-).

> I've merged the rust-build-system and rust-workspace-build-system into a
> single one, and made some UX improvements (a dozen patches on top of
> Maxime's work).
>
> If atomicity / readability of changes is the issue, I can try to cut the
> packages rewrites into patches (although that would make more than 1k
> patches total I think).

That would match our convention better, if it's not too difficult to
accomplish (is this going to be automated?  I've written some imperfect
but useful automatic rewriting tool in the past to remove the Python 2
packages [0].  Perhaps it could provide some ideas)

[0]  https://notabug.org/apteryx/guix-api-examples/src/master/purge-python2-packages.scm

-- 
Thanks,
Maxim


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Overruling and blocking
  2023-06-12 10:10     ` Maxime Devos
  2023-06-12 13:05       ` Maxim Cournoyer
@ 2023-07-02 20:12       ` Ludovic Courtès
  1 sibling, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2023-07-02 20:12 UTC (permalink / raw)
  To: Maxime Devos; +Cc: Maxim Cournoyer, Nicolas Graves, guix-devel

Hi!

Maxime Devos <maximedevos@telenet.be> skribis:

> Op 12-06-2023 om 03:17 schreef Maxim Cournoyer:

[...]

>>> Actually, I started out with the non-gradual approach, but that was
>>> overruled by Ludo', IIRC.
>> Did you perhaps meant to say that it was disagreed with, or at worst
>> "blocked by"?
>
> Yes.  Overruling is a form of blocking, and blocking by authority
> (whether de facto or de jure) is overruling.

[...]

> In my experience, Ludovic often doesn't actually practice that, though.
> For example, the thread of the patch you sent at
> <https://issues.guix.gnu.org/51427> is a good example of this, pretty
> much everyone (except Ludo') agreed that the provided patch is good.

I take note of your criticism (even if it’s a bit hard on me after all
these years working with people).

For the record, I do think that, willingly or not, I am (and some other
people too) in a position to encourage or discourage initiatives: by
expressing enthusiasm, skepticism, or not responding.  When I foresee
technical issues about proposals, I try to be explicit about what I
think those issues might be.

I’d be happy to read suggestions on how to improve on that.

Ludo’.


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-07-02 20:13 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-02 18:02 rust-build-system from antioxidant Nicolas Graves via Development of GNU Guix and the GNU System distribution.
2023-06-08 17:55 ` Maxime Devos
2023-06-12  1:17   ` Maxim Cournoyer
2023-06-12 10:10     ` Maxime Devos
2023-06-12 13:05       ` Maxim Cournoyer
2023-06-14 13:02         ` Maxime Devos
2023-07-02 20:12       ` Overruling and blocking Ludovic Courtès
2023-06-12 15:08     ` rust-build-system from antioxidant Vagrant Cascadian
2023-06-12 16:34       ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
2023-06-16 13:53         ` Nicolas Graves via Development of GNU Guix and the GNU System distribution.
2023-06-17  0:51           ` Maxim Cournoyer

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).