On Sat, Mar 01, 2025 at 04:12:54PM +0100, dan...@friendly-machines.com wrote:
> But the python project is *actually* building on an earlier python
> version's source code, inheriting its legacy (among which is its
> source code and its way of building things).

Yes, it makes sense to use inheritance here on a conceptual level, but
practically I find it too complicated.

> What are the downsides?  What did you experience?

For anyone just reading along, and not experienced with our Python
packages, I'll point out that we use inheritance to package multiple
versions of Python and some related package tooling: The fully-featured
Python 2 is the "base package", and different versions of Python 2 and 3
inherit from it and change it.

The current state of syntactic dependency:

python-2.7 <--- python-3.10 <--- python-minimal
        \                 \ <--- python-debug
         |                 \ <--- wrap-python3 (procedure, not a regular 
package)
         |                  \ <--- python-sans-pip
         |                                       \ <--- python-toolchain
         \ <--- python2-minimal
python-3.12

Python 3.12 stands alone! I didn't know / remember that. In the past,
this would have inherited from python-3.10.

In my opinion, when using inheritance for complex packages like Python,
it becomes unecessarily difficult to understand the package definitions
of all the versions and make changes that only affect particular
versions. It also becomes more difficult to remove the "older" versions
like Python 2, which is something we have been working towards for years
now.

To be clear, I've worked on our set of inherited Python packages many
times. I can do it. It's not too hard. But it's harder than it should
be, in my opinion. And I want to make this stuff as easy as working on
non-inherited packages, to help grow the number of contributors that are
comfortable and eager to work on these important packages.

There's a similar situation with our Go packages.

> If it's only guix's implementation details that prevent it
> from working, let's change those so it's less annoying.

I agree, the problem is with the implementation, and also with the
simplistic tooling (Vim with paredit) that I've chosen to use. Since
inheritance is purely syntactic, improved tooling could make this much
easier, and maybe it already has for some of us :)

I don't mean to speak with authority on this subject. My recommendation
is just a recommendation.

Reply via email to