Hi,

>making this work requires transforming emacs-whatever to replace the
>input.

Yeah, but that's what you have to do with anything else in guix.

You just need to invoke

  guix ... --with-input=mpg123=someother

or use options->transformation in a guix home scm file for the same
effect.  It does replace any transitive dependencies with that
name, too.

(For comparison, I currently have 20 such options->transformations
calls--7 of those for emacs packages)

>Another example is emacs-plantuml-mode, which has plantuml as an
>input, which has icedtea as an input -- meaning an install of the
>Emacs package comes with a whole Java runtime.

Well, if it doesn't work without then that is exactly how it's
supposed to be.

That Java runtime will be deduplicated anyway, though.

It's also just a *specific* plantuml version that is supported by
emacs-plantuml (since they communicate, they have to use a common
protocol).

And plantuml depends on the Java version that it was tested with.

And different openjdk major versions ARE (slightly) incompatible,
for example.

So openjdk *absolutely* should be a regular input of plantuml, and
plantuml should be automatically wrapped so it does use that.

For the same reason, plantuml should be a regular input of
emacs-plantuml.

>c) Don’t set them at all, and use the same $PATH late binding as  is
>typical of other Emacs setups.  This would mean that  installing Emacs
>packages wouldn’t Just Work, and users would  have to install the
>inferiors (and know what packages those are  in) themselves.

In the end it depends on what kind of program the other program is.

If it's an implementation detail (something conceptually inside the
black box of the emacs-* package) then it should be a regular input.
It should NOT be taken from PATH or in any other way late bound then.
If we did late bind it that would just cause compatibility and
usability problems.

But if it's just a loose optional program that would conceptually
be outside the black box of the emacs-* package and be in its own box,
then it should just be picked up from PATH--or in an ideal world it
would be activated via a dbus service in the first place, with an
official interface (!!).

Those are fundamentally different things in system design.  It's not
specific to emacs or anything.

The disk space stuff would be better solved by parametrized packages.
But that kind of dependency combinatorics would have fallout. It would
cause packages not to build--see Gentoo USE flags and what happens
when you use those (breakage... so much breakage)--and you would have a
(exponentially) bigger amount of substitutes.

I say that even though I'm low key bothered by the large amount
of disk space that guix needs for stuff that I will never use.
But there are tradeoffs.
Optimizing for disk space would open another can of worms
(combinatorial explosion).  As it is, I just buy a way bigger drive
than I would need for my data, for an extra $40.

And if I wanted programs to invoke random executables I happen to
have lying around, I could just use Debian.  I was there--and it's
not reliable to have this kind of global namespace in the wild west
that is the free software ecosystem (this kind of thing creates a
massive amount of inofficial interfaces--guess how long those are
stable if none of the involved people know that the interfaces
exist).

Reply via email to