unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
To: Pierre Neidhardt <mail@ambrevar.xyz>
Cc: guix-devel <guix-devel@gnu.org>, guix-blog@gnu.org
Subject: Re: Blog: Guix packaging tutorial
Date: Sat, 29 Sep 2018 23:18:38 +0200	[thread overview]
Message-ID: <87zhw02ea9.fsf@mdc-berlin.de> (raw)
In-Reply-To: <87mus6iypf.fsf@ambrevar.xyz>


Hi Pierre,

thank you for writing this draft!  This is a good start.  Below are some
comments about the beginning and some general thoughts about the idea of
a tutorial.

> I'm not satisfied with the advanced example: I took ~mg~ because it has a lot of
> typical customization (snippets, inputs, arguments) but it does not have
> - in-input sources
> - %build-inputs
> - propagated-inputs
>
> I've made up a "my-mg" package but it relies on made-up inputs, so it won't
> build.
> Better suggestions anyone?

I wonder if a complicated example like that really has a place in a
tutorial.  To me it seems a bit scary.  I image people who are used to
Conda to browse the tutorial and recoil in horror at seeing a
complicated example with all sorts of customizations.

Here some more comments:

> Want to rebuild everything from source for a specific
>   architecture?  Pass the ~#:system "YOUR-ARCH"~ argument to the list of
>   packages.

People would rather use the “--system” option on the command line
instead of overwriting the arguments field, I think, so maybe that’s not
a good example.

> =GNU hello= is a dummy project that serves as an idiomatic example for
> packaging.  If uses the GNU build chain (~./configure && make && make install~).

s/If uses/It uses/

I would also replace “build chain” with “build system”.

> - source :: The ~origin~ record gather all the information required for a
>             source.  Among which:

How about: “This field contains a description of the source code origin.
The ~origin~ record contains these fields:” ?

> abstracts away the famous ~./configure && make && make
> install~ shell invocations: If the package can be built just
> those commands, then Guix can often handle the complete
> packaging process automatically. […]

“be built [+with] just those commands”.

What do you mean by “packaging process”?  What does Guix “handle” here?
I think it is less confusing to remove the sentence after the colon.

> - synopsis :: It should be a concise and explicit summary of what the package
>               does.  Many projects homepage already provide a synopsis, it's
>               fine to re-use it.

I’d remove “and explicit”.  I’d also remove the “Many projects
homepage..” sentence as we often tweak synopses to remove advertising
statements or to turn funny taglines into more informative, descriptive
statements.  You could also say “For many packages a tagline from the
project’s home page can be used as the synopsis.”

> dummy "my-hello", a copycat of the above declaration.

s/copycat/copy/

“copycat” is an imitator, not an imitation.

> Indeed, Guix refuses to build anything if the source fails to verify
> the checksum.

It isn’t clear here who verifies what.  The checksum and the source are
both passive in this situation, but the sentence makes it seem like the
source is active.  How about “if the given checksum does not match the
computed checksum of the source code”?

> To compute the correct checksum of the package declaration, we need to download the
> source, compute the sha256 checksum and convert it to base32.

To avoid the duplication of “compute” let’s replace the first instance
with “obtain”.

> Thankfully Guix can automate this task for us, all we need is to
> provide the URI:

There should be a comma after the first word; I’d replace the comma
before “all” with a semicolon.

> update you =my-hello= declaration accordingly.

s/you/your/

> your desire to write more and more complex packages will grow

s/will grow/grows/

> returns an anonymous function, which can in turn be called over an argument:

Maybe better: “can in turn be applied to an argument:”

> Thus it enables us with fine-grained control over what is evaluated and what is not.

s/enables/provides/

FWIW, I think that maybe we should avoid quasi-quotation in the
tutorial, or at least at this point.  It could be a little overwhelming
to be introduced to so many new concepts at once before seeing how they
might be useful.

Maybe this could be interleaved and motivated by packaging features.
For example, at the very beginning we define a package and then evaluate
it at the end so that we can use it with “guix package -f”.  Maybe it
would be better to avoid defining things and using the plain “package”
form.

Definitions could then be introduced later.

What do you think?

(I need to go now, but if you want I can comment on the next sections
tomorrow.)

--
Ricardo

  parent reply	other threads:[~2018-09-29 21:18 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-13 10:50 Blog: Guix packaging tutorial Pierre Neidhardt
2018-09-13 11:16 ` Pjotr Prins
2018-09-13 11:53 ` Ricardo Wurmus
2018-09-13 12:04   ` Pjotr Prins
2018-09-13 19:11 ` Andreas Enge
2018-09-14 11:07   ` Pierre Neidhardt
2018-09-14 11:33     ` Pjotr Prins
2018-09-24 17:00       ` Pierre Neidhardt
2018-09-24 17:37         ` Pierre Neidhardt
2018-09-27 13:43           ` Ludovic Courtès
2018-09-27 17:34             ` Pierre Neidhardt
2018-09-29 16:28               ` Ludovic Courtès
2018-09-29 21:18           ` Ricardo Wurmus [this message]
2018-09-30 19:01             ` Pierre Neidhardt
2018-09-30 19:44               ` Ludovic Courtès
2018-09-30 21:14                 ` Pierre Neidhardt
2018-10-02 12:12                   ` Ludovic Courtès
2018-10-02 16:02                     ` Pierre Neidhardt
2018-10-02 19:46                       ` Ricardo Wurmus
2018-10-03  8:10                         ` Pierre Neidhardt
2018-10-03 18:16                           ` Pierre Neidhardt
2018-10-08 12:20                             ` Ludovic Courtès
2018-10-08 15:18                             ` Ricardo Wurmus
2018-10-08 18:41                               ` Pierre Neidhardt
2018-10-08 19:06                                 ` Pierre Neidhardt
2018-10-08 19:59                                 ` Ricardo Wurmus
2018-10-08 22:09                                   ` Pierre Neidhardt
2018-10-08 22:33                                     ` Pierre Neidhardt
2018-10-08 23:45                                       ` Pierre Neidhardt
2018-10-10 11:56                                         ` Ludovic Courtès
2018-10-10 13:20                                           ` George Clemmer
2018-10-10 13:31                                             ` Pierre Neidhardt
2018-10-10 14:13                                               ` Ricardo Wurmus
2018-10-10 14:00                                         ` Guix packaging tutorial is on-line! Ludovic Courtès
2018-10-10 14:12                                           ` Pierre Neidhardt
2018-10-10 15:07                                             ` Ricardo Wurmus
2018-10-10 16:09                                               ` Pierre Neidhardt
2018-10-11 13:41                                             ` Ludovic Courtès
2018-10-11 16:34                                               ` Pierre Neidhardt
2018-10-11 16:51                                                 ` Pierre Neidhardt
2018-10-15 12:02                                                   ` Ludovic Courtès
2018-10-15 12:39                                                     ` Pierre Neidhardt
2018-10-20 19:58                                         ` Blog: Guix packaging tutorial Divan
2018-10-21 10:30                                           ` Pierre Neidhardt
2018-10-21 11:21                                             ` Pierre Neidhardt
2018-10-22 20:40                                               ` Divan Santana
2018-10-22 21:11                                                 ` Pierre Neidhardt
2018-09-26 10:20         ` Ludovic Courtès
2018-09-26 10:28           ` Pierre Neidhardt
2018-09-27 11:56             ` Ludovic Courtès
  -- strict thread matches above, loose matches on Subject: below --
2018-10-08 22:54 Benjamin Slade
2018-10-08 23:05 ` Pierre Neidhardt
2018-10-09  0:04   ` Benjamin Slade
2018-10-10  9:02     ` Ludovic Courtès
2018-10-11  1:38       ` Benjamin Slade
2018-10-11  9:37         ` Gábor Boskovits
2018-10-11 13:39         ` Ludovic Courtès
2018-10-12  1:05           ` Benjamin Slade

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=87zhw02ea9.fsf@mdc-berlin.de \
    --to=ricardo.wurmus@mdc-berlin.de \
    --cc=guix-blog@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=mail@ambrevar.xyz \
    /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).