unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Finding versions of packages (was: [outreachy] Walk through the Git history)
@ 2020-12-12 22:08 Ryan Prior
  2020-12-14 10:38 ` Finding versions of packages Ludovic Courtès
  2020-12-14 12:31 ` Finding versions of packages (was: [outreachy] Walk through the Git history) zimoun
  0 siblings, 2 replies; 7+ messages in thread
From: Ryan Prior @ 2020-12-12 22:08 UTC (permalink / raw)
  To: Development of GNU Guix and the GNU System distribution

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

Hi there! I've been following the "guix git" discourse with interest
because I know a lot of people who care about pinning packages to
specific versions and selecting specific versions of software to
install. This constituency currently relies heavily on systems like rvm,
nvm, and conda to manage the available versions of libraries and
runtimes they care about.

The proposal to add a "guix git" command to help find old versions of
packages seems unnecessarily indirect to me. Certainly you can learn
interesting things about the history of Guix packages using the git
log,  but that doesn't address the questions "which versions of this
software are available and how to I use them" except via an abstraction
that depends on the operator's tacit knowledge, including what "git" is
and how to read git commits. We can do better.

I propose a different approach: the "guix versions" subcommand provides
direct answers to practical user questions.
- What package versions are available?
- How do I use them?
- Which versions are known to be vulnerable?
- Which have available substitutes?

For example, the command "guix versions esbuild" can provide this
output:
name: esbuild version: 0.8.21 guix-hash: eee3af86c7 name: esbuild
version: 0.8.19 guix-hash: 6374a25357 name: esbuild version: 0.8.16
guix-hash: 8c3caf9c5d vulnerabilities: cve-2020-1337, cve-2019-1024
...and so on.

Then, to make the output directly actionable, we extend Guix to accept
recfile manifests following the same structure, such that given the
following file "packages.rec:"
name: esbuild version: 0.8.19 guix-hash: 6374a25357 name: python-
html5lib version: 1.1 guix-hash: 6374a25357
…we can use those exact packages using "guix environment -m
packages.rec", or find which of those packages have substitutes using
"guix weather -m packages.rec"

I make this proposal because I perceive the following advantages:
- It makes no the assumption that the operator knows what git is, cares
about the internal git structure of Guix, wants to read git commits, or
wants to master the details of the internal "inferiors" mechanism we use
to provide this functionality.
- It answers directly the operator's practical questions rather than
providing oblique advice which depend upon the operator's tacit
knowledge.
- The user can act immediately upon the output of the command to create
a manifest that represents the software they want to use.

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

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

end of thread, other threads:[~2020-12-18 15:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-12 22:08 Finding versions of packages (was: [outreachy] Walk through the Git history) Ryan Prior
2020-12-14 10:38 ` Finding versions of packages Ludovic Courtès
2020-12-14 12:41   ` zimoun
2020-12-15 11:16     ` Ludovic Courtès
2020-12-15 13:03       ` zimoun
2020-12-18 15:21         ` Ludovic Courtès
2020-12-14 12:31 ` Finding versions of packages (was: [outreachy] Walk through the Git history) zimoun

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