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.