unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Guix as a Guile package manager
@ 2016-01-09 10:35 Fabio Pesari
  2016-01-09 13:05 ` Amirouche Boubekki
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Fabio Pesari @ 2016-01-09 10:35 UTC (permalink / raw)
  To: guix-devel, guile-devel

Package managers have been immensely successful in increasing the
popularity of programming languages - think about Perl's CPAN or Ruby's
Gem. But Guile doesn't a package manager, and that in my opinion slows
down its adoption.

The Guix repos distribute a lot of useful Guile libraries (like
guile-json or guile-opengl) which can't be found on most distro
repositories and it already provides Guile APIs and package management
capabilities...my question is, can Guix be forked into a full-blown
Guile package manager like gem from Ruby?

I know that an argument could be made that Guix can already be used in
this way, but there are many Scheme coders who don't need a system-wide
package manager and would rather use a program that can manage Guile
packages under a user root like ~/.guile and allow them to easily
distribute their packages (something like Python's virtualenvs would
also be useful).

Perhaps some of the Guix code can be moved to a library, so that both
the Guix and the Guile package manager binaries can reuse the same code.
Moving Guix' core to a library would also facilitate its inclusion in
things like PackageKit, as well as make it easier to create front-ends.

I'm not a package management expert so I'm not sure this idea is
feasible but I would really like Guile to become more
popular, and this I think would be a step in the right direction.

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

* Re: Guix as a Guile package manager
  2016-01-09 10:35 Guix as a Guile package manager Fabio Pesari
@ 2016-01-09 13:05 ` Amirouche Boubekki
  2016-01-09 14:06   ` Fabio Pesari
  2016-01-09 15:30 ` Thompson, David
  2016-01-09 20:42 ` Leo Famulari
  2 siblings, 1 reply; 10+ messages in thread
From: Amirouche Boubekki @ 2016-01-09 13:05 UTC (permalink / raw)
  To: Fabio Pesari
  Cc: guix-devel, guix-devel-bounces+amirouche=hypermove.net,
	guile-devel

Héllo,

On 2016-01-09 11:35, Fabio Pesari wrote:
> Package managers have been immensely successful in increasing the
> popularity of programming languages - think about Perl's CPAN or Ruby's
> Gem. But Guile doesn't a package manager, and that in my opinion slows
> down its adoption.

There is a package manager https://github.com/ijp/guildhall with a 
package
repository with automatic package publishing without review.

> The Guix repos distribute a lot of useful Guile libraries (like
> guile-json or guile-opengl) which can't be found on most distro
> repositories and it already provides Guile APIs and package management
> capabilities...

> my question is, can Guix be forked into a full-blown Guile package 
> manager
> like gem from Ruby?

I'm not a core developer, but I don't think it makes sens to fork. Most
if not all features of guix are required by language package manager.
This includes virtualenv since guix can do them via 'guix environment'.

I think what could/should/must be done is settle on guix being the 
package
manager of Guile *and* document how to create package recipes for pure 
and
non-pure guile non autotools modules. Maybe declare guix the optional 
official
package manager something like that..

> I know that an argument could be made that Guix can already be used in
> this way, but there are many Scheme coders who don't need a system-wide
> package manager

This is not an issue since IIRC you can install guix as a user. Not sure
what the status of this mode of operation is.

Also binary installation of guix is trivial, so it's not like something
that can forbid people using it. Having guix in other distros would be
of great help too.

> and would rather use a program that can manage Guile
> packages under a user root like ~/.guile and allow them to easily
> distribute their packages

Again there is guildhall even if it doesn't have the polish (nice web 
ui)
of pypi or cpan, it's said to work.

> (something like Python's virtualenvs would also be useful).

This is supported by guix.

> Perhaps some of the Guix code can be moved to a library, so that both
> the Guix and the Guile package manager binaries can reuse the same 
> code.
> Moving Guix' core to a library would also facilitate its inclusion in
> things like PackageKit, as well as make it easier to create front-ends.
> 
> I'm not a package management expert so I'm not sure this idea is
> feasible but I would really like Guile to become more
> popular, and this I think would be a step in the right direction.

To repeat myself, I think we need more guidance and incentive on how to
include guile modules that are not autotools ready. For my usecase and a
lot of other modules I don't think it makes sens to have autotools if 
you
have guix. People who happen to not want to use/install guix, can 
resolve
dependencies themself and I don't see how autotools help anyway.

Somewhat related: even if I never saw a package rejected in guix, I 
think
most contributors have some expectations regarding the quality of 
packages
included in guix *main* repository. Otherwise said, I don't mind pushing 
a
alpha software or snippet on pypi, but this is not the case with guix.

So maybe, it will be nice to have a guix repository dedicated to guile
modules where the expectations will much lower and where guilers
can freely share their small and not so small contributions.

Also, this will be a visible example of how to extend guix with third 
party
package repository which is a significant asset is some commercial 
situations.

-- 
Amirouche ~ amz3 ~ http://www.hypermove.net

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

* Re: Guix as a Guile package manager
  2016-01-09 13:05 ` Amirouche Boubekki
@ 2016-01-09 14:06   ` Fabio Pesari
  2016-01-09 14:35     ` Amirouche Boubekki
  0 siblings, 1 reply; 10+ messages in thread
From: Fabio Pesari @ 2016-01-09 14:06 UTC (permalink / raw)
  To: Amirouche Boubekki
  Cc: guix-devel, guix-devel-bounces+amirouche=hypermove.net,
	guile-devel

On 01/09/2016 02:05 PM, Amirouche Boubekki wrote:
> Héllo,

Hi!

> There is a package manager https://github.com/ijp/guildhall with a 
> package
> repository with automatic package publishing without review.

There are many package managers actually, and most of them were
abandoned by their maintainers and/or never gained any traction in the
community.

This one doesn't look like it's any different - last commit goes back to
June 22nd, 2015.

The reason CPAN, pip and gem are so successful is that they are bundled
with their language's interpreters and are officially maintained.

Asking users to install a separate package manager might work in some
cases (Leiningen, Composer) but it usually leads to fragmentation and
confusion (as it was the case with many Lisps, especially CLs).

> I'm not a core developer, but I don't think it makes sens to fork. Most
> if not all features of guix are required by language package manager.
> This includes virtualenv since guix can do them via 'guix environment'.

I called for a fork because having Guix as both a general-purpose
package manager and a Guile-specific package manager is very confusing
and doesn't follow the UNIX philosophy.

As I said before, there doesn't need to be any code duplication - Guix'
core can be abstracted into a library (e.g. guile-guix) and both Guix
and the Guile package manager can be implemented on top of it with a
minimal amount of code (since nearly all functionalities are implemented
in the library).

> I think what could/should/must be done is settle on guix being the 
> package
> manager of Guile *and* document how to create package recipes for pure 
> and
> non-pure guile non autotools modules. Maybe declare guix the optional 
> official
> package manager something like that..

That's still better than nothing, I suppose, so I'm not against it if
it's the only way to make it happen (at least in the short term).

> This is not an issue since IIRC you can install guix as a user. Not sure
> what the status of this mode of operation is.
> 
> Also binary installation of guix is trivial, so it's not like something
> that can forbid people using it. Having guix in other distros would be
> of great help too.

Yes, Guix should be in the official repos of other distros as soon as
possible. I understand that the devs are still working on Guix but
increasing the userbase (and the pool of potential testers) wouldn't hurt.

> Again there is guildhall even if it doesn't have the polish (nice web 
> ui)
> of pypi or cpan, it's said to work.

The lack of a web UI is a huge problem, and so is the fact that "it's
said to work".

The official repository server should also be hosted on GNU servers and
not by an independent developer like guildhall's:

http://shift-reset.com/doro/

how can I know for sure all those packages are 100% free?

User should be able to upload packages but each package should be
carefully reviewed (possibly by the community itself).

> Somewhat related: even if I never saw a package rejected in guix, I 
> think
> most contributors have some expectations regarding the quality of 
> packages
> included in guix *main* repository. Otherwise said, I don't mind pushing 
> a
> alpha software or snippet on pypi, but this is not the case with guix.
> 
> So maybe, it will be nice to have a guix repository dedicated to guile
> modules where the expectations will much lower and where guilers
> can freely share their small and not so small contributions.

I agree with you that users should be able to submit packages easily -
that's why I called for a fork, so that the standards for package
inclusion can be much lower (except for freedom, which is imperative)
and the Guile packages are by default separated from all other software.

This could also be achieved with a separate repo (like "guile-contrib"
or something along these lines) for Guix, sure, but I'd still like a
separate repo with a separate database and site, so that important
things like user ratings can be implemented independently from the other
Guix repos.

> Also, this will be a visible example of how to extend guix with third 
> party
> package repository which is a significant asset is some commercial 
> situations.

I'm not against the idea of third party package repositories (I see no
reason why this functionality should not be implemented) but Guix should
focus on having every decent quality free program in its repositories,
so that people are not encouraged to use third-party repos.

I find it self-defeating that in distros like Parabola (or upstream,
Arch), fully functional and semi-popular programs like OpenArena,
pngquant and yuicompressor can only be found in the user repository (the
AUR), which also distribute proprietary software.

If people are encouraged to include third-party repos, freedom goes out
of the window pretty easily, so the official repositories should be as
complete as possible (I know it's easier said than done, but it should
be much easier for Guix compared to other package managers).

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

* Re: Guix as a Guile package manager
  2016-01-09 14:06   ` Fabio Pesari
@ 2016-01-09 14:35     ` Amirouche Boubekki
  2016-01-09 15:29       ` Fabio Pesari
  0 siblings, 1 reply; 10+ messages in thread
From: Amirouche Boubekki @ 2016-01-09 14:35 UTC (permalink / raw)
  To: Fabio Pesari
  Cc: guix-devel, guix-devel-bounces+amirouche=hypermove.net,
	guile-devel

On 2016-01-09 15:06, Fabio Pesari wrote:
> On 01/09/2016 02:05 PM, Amirouche Boubekki wrote:
>> There is a package manager https://github.com/ijp/guildhall with a
>> package
>> repository with automatic package publishing without review.
> 
> Asking users to install a separate package manager might work in some
> cases (Leiningen, Composer) but it usually leads to fragmentation and
> confusion (as it was the case with many Lisps, especially CLs).
> 

That's one of the reason why I advocate for guix as package manager of 
guile.

>> I'm not a core developer, but I don't think it makes sens to fork. 
>> Most
>> if not all features of guix are required by language package manager.
>> This includes virtualenv since guix can do them via 'guix 
>> environment'.
> 
> I called for a fork because having Guix as both a general-purpose
> package manager and a Guile-specific package manager is very confusing
> and doesn't follow the UNIX philosophy.
> 

Can you explain what a Guile specific fork of guix will bring over guix?

> User should be able to upload packages but each package should be
> carefully reviewed (possibly by the community itself).

This is not how pypi works for instance.

>> Somewhat related: even if I never saw a package rejected in guix, I
>> think
>> most contributors have some expectations regarding the quality of
>> packages
>> included in guix *main* repository. Otherwise said, I don't mind 
>> pushing
>> a
>> alpha software or snippet on pypi, but this is not the case with guix.
>> 
>> So maybe, it will be nice to have a guix repository dedicated to guile
>> modules where the expectations will much lower and where guilers
>> can freely share their small and not so small contributions.
> 
> I agree with you that users should be able to submit packages easily -
> that's why I called for a fork, so that the standards for package
> inclusion can be much lower (except for freedom, which is imperative)
> and the Guile packages are by default separated from all other 
> software.
> 
> This could also be achieved with a separate repo (like "guile-contrib"
> or something along these lines) for Guix, sure, but I'd still like a
> separate repo with a separate database and site, so that important
> things like user ratings can be implemented independently from the 
> other
> Guix repos.
> 

I just checked the documentation [1] and it's possible to have third 
party
repositories but the policy is to not fork the effort and package guile
softwares in guix.

[1] 
https://www.gnu.org/software/guix/manual/guix.html#index-GUIX_005fPACKAGE_005fPATH

>> Also, this will be a visible example of how to extend guix with third
>> party
>> package repository which is a significant asset is some commercial
>> situations.
> 
> I'm not against the idea of third party package repositories (I see no
> reason why this functionality should not be implemented) but Guix 
> should
> focus on having every decent quality free program in its repositories,
> so that people are not encouraged to use third-party repos.
> 
> I find it self-defeating that in distros like Parabola (or upstream,
> Arch), fully functional and semi-popular programs like OpenArena,
> pngquant and yuicompressor can only be found in the user repository 
> (the
> AUR), which also distribute proprietary software.
> 
> If people are encouraged to include third-party repos, freedom goes out
> of the window pretty easily, so the official repositories should be as
> complete as possible (I know it's easier said than done, but it should
> be much easier for Guix compared to other package managers).

My question is: what must do a guix fork that guix doesn't have already?

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

* Re: Guix as a Guile package manager
  2016-01-09 14:35     ` Amirouche Boubekki
@ 2016-01-09 15:29       ` Fabio Pesari
  2016-01-09 19:47         ` Ricardo Wurmus
  0 siblings, 1 reply; 10+ messages in thread
From: Fabio Pesari @ 2016-01-09 15:29 UTC (permalink / raw)
  To: Amirouche Boubekki
  Cc: guix-devel, guix-devel-bounces+amirouche=hypermove.net,
	guile-devel

On 01/09/2016 03:35 PM, Amirouche Boubekki wrote:
>
> Can you explain what a Guile specific fork of guix will bring over guix?

See the last part of this post.

>> User should be able to upload packages but each package should be
>> carefully reviewed (possibly by the community itself).
> 
> This is not how pypi works for instance.

But that doesn't mean Guix should follow suit. Implementing approval
like Savannah does is a bad idea, because packages get stuck there for
ages and there's a lot of centralized power, but putting packages in a
public queue which users can vote and allow packages to be reported for
being nonfree and let maintainers be moderators is a better idea.

> I just checked the documentation [1] and it's possible to have third 
> party
> repositories but the policy is to not fork the effort and package guile
> softwares in guix.
> 
> [1] 
> https://www.gnu.org/software/guix/manual/guix.html#index-GUIX_005fPACKAGE_005fPATH

Where's the bit about forking? The page is too long and I couldn't find it.

> My question is: what must do a guix fork that guix doesn't have already?

It's not about functionality, it's about purpose.

The "fork" is not really a fork, but rather a separate program which
uses the same core library as Guix (which I defined as guile-guix
earlier). In practical terms, it would use a different repo and have
different defaults tuned to Guile development rather than system
maintenance.

If the Guile devs decided to adopt Guix as it is right now as the
official package manager like Perl's CPAN or Ruby's Gem, they would have
to ship Guix with Guile, but that doesn't sound right in my opinion
because Guix has a much larger scope and different purpose than CPAN and
Gem and users could perceive this as adding bloat and/or a tool that is
largely unrelated to Guile development - much like bundling Emacs
because it has good Guile editing capabilities.

It would also make more sense to distribute Guix as a separate program
rather than require users to run a command like "pacman -S guile" to
install Guix, but the same does not apply to the Guile package manager
obviously because package management for Guile can be seen as part of
the Guile environment (like it is for Ruby, Perl, Python, Go, Chicken,
Racket, Emacs, etc.)

The way I see it:

* Guile ships with guile-guix (a library that implements much of Guix'
  package management capabilities, but not the Guix program) and a
  (very small) Guile package manager which depends on guile-guix

* Guix is distributed separately as a (very small) program which
  depends on guile-guix

Just to be clear, Guile does not depend on guile-guix, it just is a
library that is shipped along with Guile and on which the package
manager (also shipped with Guile) depends.

The only side effect from doing this is that Guile's size in bytes would
go up a bit, however it'd still be smaller than Python and it would gain
package management capabilities. If that is not acceptable,
I think that distributing the Guile package manager as a standalone
package (like npm or composer) would still be a good thing, but I'd make
it a separate program from Guix anyway for the reasons mentioned above.

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

* Re: Guix as a Guile package manager
  2016-01-09 10:35 Guix as a Guile package manager Fabio Pesari
  2016-01-09 13:05 ` Amirouche Boubekki
@ 2016-01-09 15:30 ` Thompson, David
  2016-01-09 16:00   ` Fabio Pesari
  2016-01-09 18:52   ` Ludovic Courtès
  2016-01-09 20:42 ` Leo Famulari
  2 siblings, 2 replies; 10+ messages in thread
From: Thompson, David @ 2016-01-09 15:30 UTC (permalink / raw)
  To: Fabio Pesari; +Cc: guix-devel, guile-devel

On Sat, Jan 9, 2016 at 5:35 AM, Fabio Pesari <fabiop@gnu.org> wrote:
> Package managers have been immensely successful in increasing the
> popularity of programming languages - think about Perl's CPAN or Ruby's
> Gem. But Guile doesn't a package manager, and that in my opinion slows
> down its adoption.

Many of us in the Guile community, including myself, are not very
interested in language-specific package managers because they are
problematic:

- They put burden on the user to make sure the right toolchain is
  available to build/install things (GCC and co.)

- They cannot describe the full dependency graph for things that
  aren't completely written in that language or use a foreign-function
  interface (for example, a Guile library that talks to a C library
  via the dynamic FFI, or one that uses the Guile C API)

- They encourage new users to conflate the build system with the
  package manager, leading to software that cannot be built without a
  network connection and a specific package manager.  Java software is
  notorious for this, as are Ruby and Python to a lesser degree.

That said, I see the desire to have a tool for easily sharing pure
Guile modules.

> The Guix repos distribute a lot of useful Guile libraries (like
> guile-json or guile-opengl) which can't be found on most distro
> repositories and it already provides Guile APIs and package management
> capabilities...my question is, can Guix be forked into a full-blown
> Guile package manager like gem from Ruby?

You can install Guix right now and use it to help you develop with
Guile, or any other language.  I use it for all of my Guile projects
and it works great.

> I know that an argument could be made that Guix can already be used in
> this way, but there are many Scheme coders who don't need a system-wide
> package manager and would rather use a program that can manage Guile
> packages under a user root like ~/.guile and allow them to easily
> distribute their packages (something like Python's virtualenvs would
> also be useful).

This is what the Guildhall[0] is for, but it needs some love.  I
really do not encourage the use of language-specific package managers
for the above-mentioned problems, but if you *really* want that,
contributing to the Guildhall seems to be the best thing to do.
People ask about it somewhat frequently, but so far no one has seemed
willing to roll up their sleeves and make it work for them.

> Perhaps some of the Guix code can be moved to a library, so that both
> the Guix and the Guile package manager binaries can reuse the same code.
> Moving Guix' core to a library would also facilitate its inclusion in
> things like PackageKit, as well as make it easier to create front-ends.

This would be a bad idea, because it creates a divide between the Guix
core and the rest of Guix, which would force us to make currently
internal APIs into external, public APIs and worry about backwards
compatibility and other issues.  Our development of Guix models that
of Linux.  In Linux, the kernel is maintained in conjuction with the
kernel modules, in the same source tree.  In Guix, the core modules
are maintained in conjunction with the user interfaces and package
recipes, in the same source tree.  Thus, if we change the packaging
API, or something else, we can update the relevant code in the source
tree and be done with it.  We don't have to worry about breaking
compatibility with an older version of libguix or something.  This was
a deliberate decision made to deal with problems that the Nix
community have when their version of Nix doesn't work with their
version of nixpkgs.

On the topic of PackageKit, it's been discussed in the past, but
PackageKit is incompatible with functional package managers because it
does not support important features like unprivileged package
management. [1]

> I'm not a package management expert so I'm not sure this idea is
> feasible but I would really like Guile to become more
> popular, and this I think would be a step in the right direction.

I don't think Guix is a good fit here, because there's simply no way
around the fact that Guix packages *must* contain the full dependency
graph for build-time and runtime dependencies.  There's no way that
you could use, say, the Guile or GCC from your host system because
doing so invalidates the entire purpose and design of Guix.  Thus, a
Debian user that tried to use a Guile-specific package manager based
on Guix would be surprised when it starts compiling its own glibc,
GCC, Guile, etc.  So, I don't see anything worth extracting from Guix
to use to build a Guile-specific package manager.

I encourage you to hack on Guildhall to make it more usable for your
needs.

Happy hacking,

- Dave

[0] https://github.com/ijp/guildhall
[1] https://lists.gnu.org/archive/html/bug-guix/2014-03/msg00018.html

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

* Re: Guix as a Guile package manager
  2016-01-09 15:30 ` Thompson, David
@ 2016-01-09 16:00   ` Fabio Pesari
  2016-01-09 18:52   ` Ludovic Courtès
  1 sibling, 0 replies; 10+ messages in thread
From: Fabio Pesari @ 2016-01-09 16:00 UTC (permalink / raw)
  To: Thompson, David; +Cc: guix-devel, guile-devel

On 01/09/2016 04:30 PM, Thompson, David wrote:
>
> I don't think Guix is a good fit here, because there's simply no way
> around the fact that Guix packages *must* contain the full dependency
> graph for build-time and runtime dependencies.  There's no way that
> you could use, say, the Guile or GCC from your host system because
> doing so invalidates the entire purpose and design of Guix.  Thus, a
> Debian user that tried to use a Guile-specific package manager based
> on Guix would be surprised when it starts compiling its own glibc,
> GCC, Guile, etc.  So, I don't see anything worth extracting from Guix
> to use to build a Guile-specific package manager.

Hello David,

and thank you for your answer!

As a simple user, I didn't know enough about the finer points of Guix in
this context so I really appreciate your answer. I thought some of Guix'
package management functionalities could be worked into a less specific
program but if it can't be done, it can't be done!

> I encourage you to hack on Guildhall to make it more usable for your
> needs.

I've seen people work on dozens of package managers over the years and
honestly, I don't feel like working on one unless it's officially part
of the language or it already has mainstream adoption.

It's a Catch 22, I know, but those projects all amount to re-inventing
the wheel and trying to solve the same problems over and over again
until they get abandoned because nobody uses them (like it happened with
Guildhall, last updated in June).

I know Guile was designed as an extension language so it is excused from
not having a package manager, but with the latest developments and Guix
in particular I thought the language was heading in a more
general-purpose direction and that's why I posted this proposal.

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

* Re: Guix as a Guile package manager
  2016-01-09 15:30 ` Thompson, David
  2016-01-09 16:00   ` Fabio Pesari
@ 2016-01-09 18:52   ` Ludovic Courtès
  1 sibling, 0 replies; 10+ messages in thread
From: Ludovic Courtès @ 2016-01-09 18:52 UTC (permalink / raw)
  To: Thompson, David; +Cc: guix-devel, Fabio Pesari, guile-devel

"Thompson, David" <dthompson2@worcester.edu> skribis:

> Many of us in the Guile community, including myself, are not very
> interested in language-specific package managers because they are
> problematic:
>
> - They put burden on the user to make sure the right toolchain is
>   available to build/install things (GCC and co.)
>
> - They cannot describe the full dependency graph for things that
>   aren't completely written in that language or use a foreign-function
>   interface (for example, a Guile library that talks to a C library
>   via the dynamic FFI, or one that uses the Guile C API)
>
> - They encourage new users to conflate the build system with the
>   package manager, leading to software that cannot be built without a
>   network connection and a specific package manager.  Java software is
>   notorious for this, as are Ruby and Python to a lesser degree.
>
> That said, I see the desire to have a tool for easily sharing pure
> Guile modules.

To complement this, I would say that, despite these limitations, there’s
probably room for Guildhall because it addresses the needs of
non-GNU/Linux users and GNU/Linux users who cannot run Guix for some
reason.

That said, we already have a number of Guile packages in Guix, and I
would love to see more of them.  The fact that Guix can make it easy to
work not only with pure Scheme libraries but also with things like the
Guile-GNOME stack makes it a very good option.

Thanks,
Ludo’.

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

* Re: Guix as a Guile package manager
  2016-01-09 15:29       ` Fabio Pesari
@ 2016-01-09 19:47         ` Ricardo Wurmus
  0 siblings, 0 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2016-01-09 19:47 UTC (permalink / raw)
  To: Fabio Pesari; +Cc: guix-devel, guile-devel, Amirouche Boubekki


Fabio Pesari <fabiop@gnu.org> writes:

> The way I see it:
>
> * Guile ships with guile-guix (a library that implements much of Guix'
>   package management capabilities, but not the Guix program) and a
>   (very small) Guile package manager which depends on guile-guix

The package management capabilities provided by Guix only make sense in
the world of functional package management where the complete graph of
dependencies is captured, all the way down to bootstrap libraries.

If you take away functional package management (e.g. because it’s
inconvenient in a simple language-specific package manager), you won’t
need the guix-daemon anymore, nor do you need to talk to it anymore, nor
do you need to actually be able to represent the complete graph of
inputs ... and you end up throwing away pretty much everything that Guix
provides.

> * Guix is distributed separately as a (very small) program which
>   depends on guile-guix

The commands provided by Guix are tiny Guile scripts that use the bulk
of Guix as a library.  In a sense “guile-guix” already exists: it’s
called Guix :)  But it’s the wrong library for a language-specific
package manager.

~~ Ricardo

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

* Re: Guix as a Guile package manager
  2016-01-09 10:35 Guix as a Guile package manager Fabio Pesari
  2016-01-09 13:05 ` Amirouche Boubekki
  2016-01-09 15:30 ` Thompson, David
@ 2016-01-09 20:42 ` Leo Famulari
  2 siblings, 0 replies; 10+ messages in thread
From: Leo Famulari @ 2016-01-09 20:42 UTC (permalink / raw)
  To: Fabio Pesari; +Cc: guix-devel, guile-devel

On Sat, Jan 09, 2016 at 11:35:13AM +0100, Fabio Pesari wrote:
> Package managers have been immensely successful in increasing the
> popularity of programming languages - think about Perl's CPAN or Ruby's
> Gem. But Guile doesn't a package manager, and that in my opinion slows
> down its adoption.
> 
> The Guix repos distribute a lot of useful Guile libraries (like
> guile-json or guile-opengl) which can't be found on most distro
> repositories and it already provides Guile APIs and package management
> capabilities...my question is, can Guix be forked into a full-blown
> Guile package manager like gem from Ruby?
> 
> I know that an argument could be made that Guix can already be used in
> this way, but there are many Scheme coders who don't need a system-wide
> package manager and would rather use a program that can manage Guile
> packages under a user root like ~/.guile and allow them to easily
> distribute their packages (something like Python's virtualenvs would
> also be useful).
> 
> Perhaps some of the Guix code can be moved to a library, so that both
> the Guix and the Guile package manager binaries can reuse the same code.
> Moving Guix' core to a library would also facilitate its inclusion in
> things like PackageKit, as well as make it easier to create front-ends.

I think the main problem with this idea is that the whole point of Guix
/ Nix is to manage the entire dependency graph — from the package you
are trying to install and use all the way down the tar used to unpack
the sources, the GCC used to compile everything, etc.

There is not much point in using Guix to only manage the very top-level
of the graph (the Guile modules you'd want to install) because by not
managing the entire graph from top to bottom, the Guix system would just
break as the unmanaged dependencies are changed the OS's package manager
or the user.

There really isn't anything left when you try to split up Guix in the
way you are requesting.

> 
> I'm not a package management expert so I'm not sure this idea is
> feasible but I would really like Guile to become more
> popular, and this I think would be a step in the right direction.
> 

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

end of thread, other threads:[~2016-01-09 20:42 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-09 10:35 Guix as a Guile package manager Fabio Pesari
2016-01-09 13:05 ` Amirouche Boubekki
2016-01-09 14:06   ` Fabio Pesari
2016-01-09 14:35     ` Amirouche Boubekki
2016-01-09 15:29       ` Fabio Pesari
2016-01-09 19:47         ` Ricardo Wurmus
2016-01-09 15:30 ` Thompson, David
2016-01-09 16:00   ` Fabio Pesari
2016-01-09 18:52   ` Ludovic Courtès
2016-01-09 20:42 ` Leo Famulari

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