Maintenance of library packages in topical teams?
Heisan, this topic came up during my submission of python-mmllib to the Python devel project [1]. But, in fact, it seems to be a quite general discussion, so I am raising it here to get a general picture. As a side note, my current endeavour is exploring the maintenance, especially team maintenance and mentoring approaches, of packages in openSUSE, in comparison to how it is handled in Debian. I am a Debian Developer and therefore quite used to the workflows and basic approaches over there. The general question I'd like to discuss is where libraries for development in various languages should be maintained. There are development teams for all major languages, and these seem, to some extent, to maintain development libraries as well. Then, looking at MMLlib as an example, this package can be seen in two ways: * it is a library that can be used for various kinds of programs written in Python, among which are games, educational toys, and multimedia applications * it is not _really_ generic, as it is somewhat specialized in not only, but probably mostly the fields mentioned above So, in *theory*, MMLlib is a generic library that can be used by whoever thinks they need it in their program, but in practice, it will be mostly useful for the mentioned fields. Matej therefore proposed it be moved to another team, with the Education devel project in mind (because education is the field where I, also being the upstream maintainer, developed it). I, i ncontrast, are still in favour of having all sorts of Python libraries maintained in a language team. Let me summarize what I think are the arguments for the two approaches: a) Maintaining all development libraries in a single language project - high maintenance load for a single team - large collection of packages in a single, probably not too well namespaced bunch + simplified auto-maintenance and batch changes + better control over adherence to library packaging guidelines b) Maintaining specialised libraries in topical projects - less control over adherence to library packaging guidelines - not clear which topic fits the best (see example above) sometimes + less maintenance burden for a single team Closely related to this question is the question whether development libraries should go into the distribution at all. More recently, I found the stance of the Go language team on that [2]. In conclusion, this is "we do not want a large collection of development packages in the distribution, only those needed to build and run leaf binaries". Taht implies that developers who use openSUSE for their work are told to use non-openSUSE sources instead, and install development libraries from the repositories provided by their language ecosystem, and that we make a clear distinction: * packages in openSUSE are for end users * developers use their language ecosystem tools Generally, I am in favour of providing all tools, including libraries, for everyone in a distribution, but that's a very "Debian" view of things. In practice, it shows that for Python development, virtual environments managed with poetry or whtever, and installing packages from PyPI, is far better suited. So I am somewhat moving into that direction. But then again, I find it questionnable that the Go language team should be responsible for maintaining any binary leaf packages. Why is teh Go devel project responsible for maintaining, say, hugo [3], and not a devel project tailored at website topics? All in all, I think my favourite pattern would be somethign like this: * maintain binary leaf packages in a topical team * maintain libraries in a language team, independent of topic * do not accept libraries that are not dependencies of leaf packages I am aware that there is no "one size fits all" solution, but hopefully, others can contribute valuable views on that topic ☺. Ha det bra, Nik [1] https://build.opensuse.org/request/show/1103110?notification_id=42200225 [2] https://en.opensuse.org/openSUSE:Packaging_Go#Not_all_packages_will_be_accep... [3] https://build.opensuse.org/package/show/openSUSE:Factory/hugo
On 8/21/23 20:31, Dominik George via openSUSE Factory wrote:
Heisan,
this topic came up during my submission of python-mmllib to the Python devel project [1]. But, in fact, it seems to be a quite general discussion, so I am raising it here to get a general picture.
As a side note, my current endeavour is exploring the maintenance, especially team maintenance and mentoring approaches, of packages in openSUSE, in comparison to how it is handled in Debian. I am a Debian Developer and therefore quite used to the workflows and basic approaches over there.
The general question I'd like to discuss is where libraries for development in various languages should be maintained. There are development teams for all major languages, and these seem, to some extent, to maintain development libraries as well.
Then, looking at MMLlib as an example, this package can be seen in two ways:
* it is a library that can be used for various kinds of programs written in Python, among which are games, educational toys, and multimedia applications * it is not _really_ generic, as it is somewhat specialized in not only, but probably mostly the fields mentioned above
So, in *theory*, MMLlib is a generic library that can be used by whoever thinks they need it in their program, but in practice, it will be mostly useful for the mentioned fields.
Matej therefore proposed it be moved to another team, with the Education devel project in mind (because education is the field where I, also being the upstream maintainer, developed it).
I, i ncontrast, are still in favour of having all sorts of Python libraries maintained in a language team. Let me summarize what I think are the arguments for the two approaches:
a) Maintaining all development libraries in a single language project
- high maintenance load for a single team - large collection of packages in a single, probably not too well namespaced bunch + simplified auto-maintenance and batch changes + better control over adherence to library packaging guidelines
b) Maintaining specialised libraries in topical projects
- less control over adherence to library packaging guidelines - not clear which topic fits the best (see example above) sometimes + less maintenance burden for a single team
Probably the main advantage for having a package that is only really used by one set of applications be it games or multimedia etc is when that package is updated and sent to the devel project you can already verify if that package is going to break some of the applications that use it as they all sit in the same devel repo. multimedia:libs for example has python bindings for alsa and gst because that's where most of the applications that use those libraries live. Similarly games has the python libraries for SDL2 and pygame among other thngs. Then another semi related case is I keep the efl widget toolkit bindings python-efl with the efl libraries. You can probably equally find examples in devel:languages:python that could also be elsewhere. But 2000 packages in a single devel repo is alot to manage so for me if something makes sense in another devel repo the existing size of the repo is atleast a reason to ask these questions. But if a library is being used by packages in 3-4 other devel repo's then devel:languages:python might really be the best place.
Closely related to this question is the question whether development libraries should go into the distribution at all. More recently, I found the stance of the Go language team on that [2]. In conclusion, this is "we do not want a large collection of development packages in the distribution, only those needed to build and run leaf binaries". Taht implies that developers who use openSUSE for their work are told to use non-openSUSE sources instead, and install development libraries from the repositories provided by their language ecosystem, and that we make a clear distinction:
* packages in openSUSE are for end users * developers use their language ecosystem tools
Generally, I am in favour of providing all tools, including libraries, for everyone in a distribution, but that's a very "Debian" view of things. In practice, it shows that for Python development, virtual environments managed with poetry or whtever, and installing packages from PyPI, is far better suited. So I am somewhat moving into that direction.
But then again, I find it questionnable that the Go language team should be responsible for maintaining any binary leaf packages. Why is teh Go devel project responsible for maintaining, say, hugo [3], and not a devel project tailored at website topics?
The general approach of openSUSE is that if someone feels that a python library is useful enough for that person to put the effort into contributing it and maintaining it in a openSUSE distro then that's good enough reason to include it. SUSE Tends to only include libraries that are needed by the applications it ships so generally anything else that currently exists in openSUSE is going to fit the someone thought it was useful category. Personally I've occasionally contributed python libraries because I have a script or tool that needs them and enough of the other dependencies already exist in openSUSE that its easier to just package the one or two other libraries then go to the hassle of setting up pip. -- Simon Lees (Simotek) http://simotek.net Emergency Update Team keybase.io/simotek SUSE Linux Adelaide Australia, UTC+10:30 GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B
On Mon Aug 21, 2023 at 1:01 PM CEST, Dominik George wrote:
As a side note, my current endeavour is exploring the maintenance, especially team maintenance and mentoring approaches, of packages in openSUSE, in comparison to how it is handled in Debian. I am a Debian Developer and therefore quite used to the workflows and basic approaches over there.
There are many reasons why the situation in openSUSE is different than in Debian (I don’t want to get into details, because it would be long), so your habits and behaviour learned there doesn’t transfer well to here. And I have absolutely nothing against Debian (I used it for many years, and I have stoped only when I was employed in a Linux company), but the situation is very different.
The general question I'd like to discuss is where libraries for development in various languages should be maintained. There are development teams for all major languages, and these seem, to some extent, to maintain development libraries as well.
Then, looking at MMLlib as an example, this package can be seen in two ways:
* it is a library that can be used for various kinds of programs written in Python, among which are games, educational toys, and multimedia applications * it is not _really_ generic, as it is somewhat specialized in not only, but probably mostly the fields mentioned above
It is slightly less complicated than that. We have 2237 packages just in d:l:p (plus hundreds of packages in subprojects of d:l:p). Even though a group of SUSE employees are working on them, it is just too much and we try continually to pass packages to better hands, when we find them. Also, given this number, we can effectively work only with pure Python problems, and we don’t have much time and mental capacity to be knowedgeable enough in some more specialised areas. So, for example, even though there are some Python packages in the Gnome/Glib universe, I have tried very hard to push all Gnome/Glib related packages to the Gnome development team. The same goes to Python packages connecting to some specialized hardware, or for example, do you know that both Breezy (originally Bazaar) and Mercurial are written in Python? Or python-kubernetes. All this has been moved elsewhere (we used to have many MORE packages in d:l:p, this is after substantial trimming down). Not only we are overloaded with our packages, but also I really cannot do the justice to the maintenance of packages which all about something else than just Python (see examples above). So, when I see a package which looks it would fit better into the Education project, I suggested to be moved there. Of course, if it is a general package, it can go to d:l:p, but I tried. Best, Matěj -- https://matej.ceplovi.cz/blog/, @mcepl@floss.social GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8 No matter what happens in the kitchen, never apologize. -- Julia Child
Hello Matej, Am Mittwoch, 30. August 2023, 18:48:51 BST schrieb Matěj Cepl:
Not only we are overloaded with our packages, ....
Once again my proposal - rework the script that generates the weekly mails about python packages to be maintained, and add the maintainer to each package. Or even better, send summary per maintainer. I really dont fancy to scroll through hundreds of lines to check if there is a package with an update pending.... My 2c Axel
On Thu Aug 31, 2023 at 12:19 PM CEST, Axel Braun wrote:
Once again my proposal - rework the script that generates the weekly mails about python packages to be maintained, and add the maintainer to each package. Or even better, send summary per maintainer.
I really dont fancy to scroll through hundreds of lines to check if there is a package with an update pending....
Patches welcome! https://gitlab.com/mcepl/suse_cron_scripts (systemd-timer is not used, too much bother with lingering, cron Just Works™). Best, Matěj -- https://matej.ceplovi.cz/blog/, @mcepl@floss.social GPG Finger: 3C76 A027 CA45 AD70 98B5 BC1D 7920 5802 880B C9D8 There is only one happiness here below: peace of mind and a heart free of guilt. Greatness is dangerous and glory an empty game. It gives only empty shadows; it takes so much away! -- Franz Grillparzer: Der Traum ein Leben
participants (4)
-
Axel Braun
-
Dominik George
-
Matěj Cepl
-
Simon Lees