unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Add "guix update" command
  2016-01-23 16:36   ` [PATCH 1/1] gnu: transmission-gtk: Add icon dependencies Ludovic Courtès
@ 2016-01-23 18:11     ` Fabian Harfert
  2016-01-23 18:28       ` Friedrich Herbst
  2016-01-23 19:37       ` Thompson, David
  0 siblings, 2 replies; 6+ messages in thread
From: Fabian Harfert @ 2016-01-23 18:11 UTC (permalink / raw)
  To: guix-devel

Hello,

on IRC I already mentioned that, but there wasn't much resonance: I
think for the purposes of non-developers the behavior of the "guix
pull" command is too complicated.

Normal users don't need a development version of the package manager,
when they just want to get the newest package definitions to update
their installed software. So it would be much easier and faster if
there was a separate repository just containing the most recent package
definitions.

I propose to add a new command line option - e.g. "guix update" -
fetching these latest package definitions and not doing anything else.
They could be contained by a package whose definition is downloaded,
for example "guix-packages".

To avoid compatibility issues when there's a new release of Guix itself
this package must be versioned equal to the Guix version numbers. I'm
thinking of the following:

  The user is running Guix 1.2.1 and has installed the package
  guix-packages-1.2.1-4 containing the package definitions. Now he runs
  "guix update" and fetches guix-packages-1.2.1-5 with the new package
  definitions including the new Guix release 1.2.2. He now updates Guix
  to this version which has the new guix-packages-1.2.2-0 as an input.
  When he runs "guix update" again, guix-packages-1.2.2-1 is installed,
  which contains package definitions that make use of some new features.

This would just be for the time between the Guix releases. I think we
don't need support for older versions of Guix except from keeping the
last guix-packages package, but we could also do some security
or minor updates to the older package definitions which would provide
users the possibility to use GuixSD as a stable distribution like
Debian.

Another advantage of the separation between Guix itself and the package
definitions is that it's easy to provide an own or foreign
guix-packages package which would promote the decentralization of Guix.

Initially I thought of doing the same for service definitions except
from the basic ones. But I think that version compatibility problems
would occur more often because service definitions are at a lower level
than the package definitions. In addition the notorious normal users
won't change so much of their service definitions.

Fabian

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

* Add "guix update" command
@ 2016-01-23 18:20 Fabian Harfert
  2016-01-23 19:27 ` Christopher Allan Webber
  0 siblings, 1 reply; 6+ messages in thread
From: Fabian Harfert @ 2016-01-23 18:20 UTC (permalink / raw)
  To: guix-devel

Hello,

on IRC I already mentioned that, but there wasn't much resonance: I
think for the purposes of non-developers the behavior of the "guix
pull" command is too complicated.

Normal users don't need a development version of the package manager,
when they just want to get the newest package definitions to update
their installed software. So it would be much easier and faster if
there was a separate repository just containing the most recent package
definitions.

I propose to add a new command line option - e.g. "guix update" -
fetching these latest package definitions and not doing anything else.
They could be contained by a package whose definition is downloaded,
for example "guix-packages".

To avoid compatibility issues when there's a new release of Guix itself
this package must be versioned equal to the Guix version numbers. I'm
thinking of the following:

  The user is running Guix 1.2.1 and has installed the package
  guix-packages-1.2.1-4 containing the package definitions. Now he runs
  "guix update" and fetches guix-packages-1.2.1-5 with the new package
  definitions including the new Guix release 1.2.2. He now updates Guix
  to this version which has the new guix-packages-1.2.2-0 as an input.
  When he runs "guix update" again, guix-packages-1.2.2-1 is installed,
  which contains package definitions that make use of some new features.

This would just be for the time between the Guix releases. I think we
don't need support for older versions of Guix except from keeping the
last guix-packages package, but we could also do some security
or minor updates to the older package definitions which would provide
users the possibility to use GuixSD as a stable distribution like
Debian.

Another advantage of the separation between Guix itself and the package
definitions is that it's easy to provide an own or foreign
guix-packages package which would promote the decentralization of Guix.

Initially I thought of doing the same for service definitions except
from the basic ones. But I think that version compatibility problems
would occur more often because service definitions are at a lower level
than the package definitions. In addition the notorious normal users
won't change so much of their service definitions.

Fabian


I don't know why this E-Mail is shown as a reply to the transmission
patch, so I send it again, sorry.

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

* Re: Add "guix update" command
  2016-01-23 18:11     ` Add "guix update" command Fabian Harfert
@ 2016-01-23 18:28       ` Friedrich Herbst
  2016-01-23 19:37       ` Thompson, David
  1 sibling, 0 replies; 6+ messages in thread
From: Friedrich Herbst @ 2016-01-23 18:28 UTC (permalink / raw)
  To: guix-devel

Excuse me, that doesn't belong to the transmission thread.

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

* Re: Add "guix update" command
  2016-01-23 18:20 Add "guix update" command Fabian Harfert
@ 2016-01-23 19:27 ` Christopher Allan Webber
  0 siblings, 0 replies; 6+ messages in thread
From: Christopher Allan Webber @ 2016-01-23 19:27 UTC (permalink / raw)
  To: Fabian Harfert; +Cc: guix-devel

Fabian Harfert writes:

> Hello,
>
> on IRC I already mentioned that, but there wasn't much resonance: I
> think for the purposes of non-developers the behavior of the "guix
> pull" command is too complicated.
>
> Normal users don't need a development version of the package manager,
> when they just want to get the newest package definitions to update
> their installed software. So it would be much easier and faster if
> there was a separate repository just containing the most recent package
> definitions.
>
> I propose to add a new command line option - e.g. "guix update" -
> fetching these latest package definitions and not doing anything else.
> They could be contained by a package whose definition is downloaded,
> for example "guix-packages".
>
> To avoid compatibility issues when there's a new release of Guix itself
> this package must be versioned equal to the Guix version numbers. I'm
> thinking of the following:
>
>   The user is running Guix 1.2.1 and has installed the package
>   guix-packages-1.2.1-4 containing the package definitions. Now he runs
>   "guix update" and fetches guix-packages-1.2.1-5 with the new package
>   definitions including the new Guix release 1.2.2. He now updates Guix
>   to this version which has the new guix-packages-1.2.2-0 as an input.
>   When he runs "guix update" again, guix-packages-1.2.2-1 is installed,
>   which contains package definitions that make use of some new features.
>
> This would just be for the time between the Guix releases. I think we
> don't need support for older versions of Guix except from keeping the
> last guix-packages package, but we could also do some security
> or minor updates to the older package definitions which would provide
> users the possibility to use GuixSD as a stable distribution like
> Debian.
>
> Another advantage of the separation between Guix itself and the package
> definitions is that it's easy to provide an own or foreign
> guix-packages package which would promote the decentralization of Guix.

I'm not really for this.  It would require a lot of careful planning.
Additionally, right now the packages depend on Guix code generally, so
as Guix evolves its internal APIs, packages shipped with it can depend
on that.  That seems valuable for the "core" set of packages.

I'm afraid we'd lose this if we'd take the above suggested route.

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

* Re: Add "guix update" command
  2016-01-23 18:11     ` Add "guix update" command Fabian Harfert
  2016-01-23 18:28       ` Friedrich Herbst
@ 2016-01-23 19:37       ` Thompson, David
  2016-01-23 21:35         ` Ludovic Courtès
  1 sibling, 1 reply; 6+ messages in thread
From: Thompson, David @ 2016-01-23 19:37 UTC (permalink / raw)
  To: Fabian Harfert; +Cc: guix-devel

Hi Fabian,

This isn't the first time I've seen such a proposal, and while I
appreciate the viewpoint, I don't think this would be a good decision
for Guix and I'm fairly sure that the other developers agree.  See
below for further explanation.

On Sat, Jan 23, 2016 at 1:11 PM, Fabian Harfert <fhmgufs@web.de> wrote:
> Hello,
>
> on IRC I already mentioned that, but there wasn't much resonance: I
> think for the purposes of non-developers the behavior of the "guix
> pull" command is too complicated.
>
> Normal users don't need a development version of the package manager,
> when they just want to get the newest package definitions to update
> their installed software. So it would be much easier and faster if
> there was a separate repository just containing the most recent package
> definitions.

In Guix, we purposely do not distinguish between a user and a
developer because we believe there is no distinction.  We think the
perceived line between user and developer should be blurred.  Everyone
should be enabled to hack on Guix, and introducing things that
differentiate developers from "regular users" is counter-productive to
our goal.

> I propose to add a new command line option - e.g. "guix update" -
> fetching these latest package definitions and not doing anything else.
> They could be contained by a package whose definition is downloaded,
> for example "guix-packages".
>
> To avoid compatibility issues when there's a new release of Guix itself
> this package must be versioned equal to the Guix version numbers. I'm
> thinking of the following:
>
>   The user is running Guix 1.2.1 and has installed the package
>   guix-packages-1.2.1-4 containing the package definitions. Now he runs
>   "guix update" and fetches guix-packages-1.2.1-5 with the new package
>   definitions including the new Guix release 1.2.2. He now updates Guix
>   to this version which has the new guix-packages-1.2.2-0 as an input.
>   When he runs "guix update" again, guix-packages-1.2.2-1 is installed,
>   which contains package definitions that make use of some new features.

This additional complexity is one of the reasons why packages are not
maintained separately from everything else.  We know exactly what the
outcome of such a scheme would look like because this is what Nix
does.  Nix, the package manager, exists separately from nixpkgs, which
contains all the package recipes.  This was deliberately avoided when
the Guix project was started to avoid compatibility issues.

By maintaining the packages separately from Guix itself, we must turn
internal APIs into external APIs and become very concerned with
backwards compatibility.  We follow an approach similar to Linux.  In
Linux, kernel modules are maintained in the same source tree as the
kernel itself.  The reason for this is it allows the kernel developers
to introduce changes to internal APIs and update *all* of the modules
affected, together.  This greatly simplifies maintenance and the
ability to improve the software without introducing compatibility
issues.  Being able to break internal APIs when needed is something we
simply could not afford to give up, at least not at this stage in
Guix's development.

Another reason is simply practical.  Having patch sets that span
multiple repositories is cumbersome.  I know this all too well because
I work at a company that has a lot of repository proliferation.  It's
not uncommon for a new feature to span 3 Git repos, and keep
everything in order is a pain.

> This would just be for the time between the Guix releases. I think we
> don't need support for older versions of Guix except from keeping the
> last guix-packages package, but we could also do some security
> or minor updates to the older package definitions which would provide
> users the possibility to use GuixSD as a stable distribution like
> Debian.

A stable version of Guix would be nothing more (or less) than a branch
in Git that received only critical security updates.

> Another advantage of the separation between Guix itself and the package
> definitions is that it's easy to provide an own or foreign
> guix-packages package which would promote the decentralization of Guix.

This point is moot because it's already easy to include other package
recipes via the GUIX_PACKAGE_PATH environment variable.  See:
https://gnu.org/software/guix/manual/html_node/Package-Modules.html#Package-Modules

> Initially I thought of doing the same for service definitions except
> from the basic ones. But I think that version compatibility problems
> would occur more often because service definitions are at a lower level
> than the package definitions. In addition the notorious normal users
> won't change so much of their service definitions.

Services are at a higher level, actually.  Services often use package
objects in the g-expressions that define the service configuration.
This is a good example of why Guix is a unified whole, and separating
packages from the rest would only leads to strange incompatibility
problems.

Hope this helps!

- Dave

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

* Re: Add "guix update" command
  2016-01-23 19:37       ` Thompson, David
@ 2016-01-23 21:35         ` Ludovic Courtès
  0 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2016-01-23 21:35 UTC (permalink / raw)
  To: Thompson, David; +Cc: guix-devel

Hi!

I very much agree with what David wrote.

Note that NixOS has been merged into Nixpkgs several months ago
precisely for the reasons David gave.

That Nix remains separate from Nixpkgs/NixOS can be problematic because
as new features of Nix language get used in Nixpkgs,
backward-compatibility is broken (and adding features to the language is
not uncommon since Nix is an external DSL that becomes less and less DS,
as is often the case with DSLs ;-)).

Ludo’.

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

end of thread, other threads:[~2016-01-24 17:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-23 18:20 Add "guix update" command Fabian Harfert
2016-01-23 19:27 ` Christopher Allan Webber
  -- strict thread matches above, loose matches on Subject: below --
2015-09-16 15:45 [PATCH] Add cufflinks Ricardo Wurmus
2015-09-16 17:10 ` Ludovic Courtès
2016-01-23 16:36   ` [PATCH 1/1] gnu: transmission-gtk: Add icon dependencies Ludovic Courtès
2016-01-23 18:11     ` Add "guix update" command Fabian Harfert
2016-01-23 18:28       ` Friedrich Herbst
2016-01-23 19:37       ` Thompson, David
2016-01-23 21:35         ` Ludovic Courtès

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