Hi,

Cayetano Santos <csant...@inventati.org> writes:

>>ven. 08 août 2025 at 10:56, Maxim Cournoyer <maxim.courno...@gmail.com> wrote:
>
>>> To facilitate the upcoming maintenance of this (increasingly complex)
>>> ecosystem, I think we should probably try to organise these packages. At
>>> a minimum, we might:
>>>
>>> - UxlFoundation (uxlfoundation.org)
>>
>> I'm not sure I like naming modules by the organization producing the
>> packages -- it sounds a bit like advertising at the level of the Guix
>> API :-). Which we've been happy to do with GNU packages but less so with
>> other packages.
>
> Let’s call it oneapi (uxlfoundation is the github org).
>
>> I personally prefer the current state where things sorted by
>> areas/topographically; this is what we've historically done and it makes
>> for a nicer API in my opinion: (gnu packages electronics) is a good
>> example of a recent one that fit that.
>
> Sometimes sorting feels like random. Electronics.scm is a good example:
> we have electronics packages in "engineering" (and somewhere else) which
> is a drop-in container; "fpga" concerns more than fpgas, and should be
> merged with "electronics" ... This is not a big deal, as it concerns
> mainly leaf packages. With closely related packages, I’m afraid this
> keeps new contributors away.

I think we agree that topographically sorting packages makes sense; that
doesn't mean the current sorting is perfect, there are many places it
could be improved, and what you are proposing makes sense. The '(gnu
packages electronics)' one was introduced recently so it's expected to
find electronics packages somewhere else still.

> Regarding oneapi: we have onednn in machine-learning.scm; onetbb under ...
> tbb.scm. We even have sycl (adaptivecpp) under ... sycl.scm. Onedal,
> oneccl, onemath (all part of uxlfoundation), where should they go ?

If they all do very different tasks, it makes sense to be that they are
grouped with packages that do similar tasks rather than the organization
producing the packages. That said, if we already have many unique
per-package modules for packages from that org, then I agree having a
'oneapi' module to group them together would be nicer.

[...]

> To me, this is error prone. Random contributors need to know about a lot
> of  modules, packages and have a rather good global overview about how
> all things are organised and dependencies among packages.

It's a bit more complicated, but I think it's still worthwhile in most
cases (maybe not the one at hand though).  The Apache project probably
has a few hundreds of packages, it wouldn't make much organizational
sense to put group them all under (gnu packages apache), even less for a
(gnu packages gnu) package for GNU packages :-).

> For example: llvm-for-rocm (in llvm.scm) is based (now) on llvm-19;
> adaptivecpp (in sycl.scm) uses rocm-opencl-runtime (in roc.scm),
> spirv-headers (in vulkan.scm) ... and clang/llvm-15. All of that is
> related to each other. Spreading related packages in different modules
> complicates things, unless you’re already familiar with the whole
> organization. A random contributor might feel overwhelmed,chances to do
> it wrong are considerable.

I disagree that simply having inter-modules dependencies is a
(problematic) source of complexity. It's normal and expected in
Guix. Most of the time you can focus on the leaf package without caring
about the transitive dependencies much.

> My proposal goes  with keeping all rocm related under rocm.scm; all
> vulkan related under vulkan.scm, etc.

That proposal makes sense to me.

> And all uxlfoundation related packages under oneapi.scm. This reduces
> the spread and eases contributing, IMO.

I don't know if it'd ease contributing, but a oneapi modules sounds
better than a few disparate per-package modules for packages from that
family/project.

-- 
Thanks,
Maxim

Reply via email to