unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: indieterminacy@libre.brussels
To: Liliana Marie Prikler <liliana.prikler@gmail.com>
Cc: guix-devel@gnu.org
Subject: Re: Convention for new “guix style“?
Date: Wed, 22 Dec 2021 22:17:42 +0100	[thread overview]
Message-ID: <87lf0cpcan.fsf@qiuy04.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <23734860fbd9ee8f96b6878aadde0b2a5fe74b69.camel@gmail.com>

I wonder if there has been any progress made by Arun Isaac with his program, Semantically meaningful S-expression diff

https://archive.fosdem.org/2021/schedule/event/sexpressiondiff/

```
Traditional diff implementations, such as GNU Diff, treat files as a
flat list of lines. A tree-diff algorithm that can produce minimal and
semantically meaningful output is a surprisingly more difficult and
complex problem. In fact, for unordered trees, the problem is NP-hard.
```


Jonathan

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> Hi,
>
> Am Mittwoch, dem 22.12.2021 um 14:05 +0100 schrieb zimoun:
>> [...]
>> --8<---------------cut here---------------start------------->8---
>>     (inputs
>>      (list libx11 libiberty ;needed for objdump support
>>            zlib))                       ;also needed for objdump
>> support
>> --8<---------------cut here---------------end--------------->8---
>> 
>> when the comments apply to only one line as it was:
>> 
>> --8<---------------cut here---------------start------------->8---
>>      `(("libx11" ,libx11)
>>        ("libiberty" ,libiberty)               ;needed for objdump
>> support
>>        ("zlib" ,zlib)))                       ;also needed for
>> objdump support
>> --8<---------------cut here---------------end--------------->8---
>> 
>> Other said, this looks better:
>> 
>> --8<---------------cut here---------------start------------->8---
>>     (inputs
>>      (list libx11
>>            libiberty ;needed for objdump support
>>            zlib))    ;also needed for objdump support
>> --8<---------------cut here---------------end--------------->8---
>> 
>> Obviously, we could come up a rule depending on comments, numbers of
>> inputs, length, etc.  It was not the case with the old style when
>> nothing prevented us to do it.  Because one item per line is, IMHO,
>> easier to maintain.
> For me personally, this illustrates two things.  First, the weakness of
> line comments over preceding line comments ad second the verbosity of
> old input style.  You could easily write 
>   (list libiberty zlib) ; for objdump
> in the new style, which you couldn't before.  Therefore, I wouldn't
> mandate a "one line per input" restriction, as the only reason it was
> ever imposed was a historical limitation.
>
>> Consider the case,
>> 
>>     (inputs
>>      (list bar foo1 foo2 foo3 foo3 foo4))
>> 
>> then another ’baz’ inputs is added, do we end with,
>> 
>>     (inputs
>>      (list bar foo1 foo2 foo3 foo3 foo4
>>            baz))
>> 
>> to minimize and ease reading the diff, or do we end with,
>> 
>>     (inputs
>>      (list bar
>>            baz
>>            foo1
>>            foo2
>>            foo3
>>            foo3
>>            foo4))
>> 
>> ?  And the converse is also true, consider the case just above and
>> what
>> happens if foo1, foo2 and foo3 are removed.
>> 
>> One item per line solves all these boring cosmetic questions.
>> 
>> Therefore, I propose to always have only one item per line.  To be
>> concrete, for one item:
>> 
>>   (inputs
>>    (list foo))
>> 
>> or not
>> 
>>   (inputs (list foo))
>> 
>> And for more than one item:
>> 
>>   (inputs
>>    (list foo
>>          bar))
>> 
>> This would avoid “cosmetic” changes when adding/removing inputs
>> and/or comments.
> In my personal opinion, everything else being equal, changes to
> inputs/native-inputs/propagated-inputs should (almost) always be seen
> as changes to the field, as would be documented in the ChangeLog.
>
> I think the usual scheme coding guidelines also apply well to inputs,
> e.g. inline short stuff, but don't do funky things when the lines grow
> unnecessarily long.
>
> Now I am putting aside the issue of tooling here, because I think that
> humans ought to be able to look at the diff and see that something's
> wrong and correct it, but as others point out an "I don't touch
> comments" approach would be very fine by me.
>
> Cheers



  reply	other threads:[~2021-12-22 21:24 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-22 13:05 Convention for new “guix style“? zimoun
2021-12-22 14:10 ` Jelle Licht
2021-12-22 15:52   ` zimoun
2021-12-22 19:24     ` André A. Gomes
2021-12-22 17:23 ` Vagrant Cascadian
2021-12-22 17:48   ` Andreas Enge
2021-12-22 21:18 ` Liliana Marie Prikler
2021-12-22 21:17   ` indieterminacy [this message]
2021-12-23 10:13     ` Ricardo Wurmus
2021-12-22 21:56   ` zimoun
2022-01-03 15:02 ` Ludovic Courtès
2022-01-03 16:23   ` zimoun
2022-01-03 19:48     ` Leo Famulari
2022-01-03 19:51       ` Leo Famulari
2022-01-03 20:05         ` zimoun
2022-01-05 19:16           ` Leo Famulari

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=87lf0cpcan.fsf@qiuy04.i-did-not-set--mail-host-address--so-tickle-me \
    --to=indieterminacy@libre.brussels \
    --cc=guix-devel@gnu.org \
    --cc=liliana.prikler@gmail.com \
    /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).