On Mon, Feb 12, 2024 at 6:02 PM Matthias Koeppe <matthiaskoe...@gmail.com> wrote: > > On Monday, February 12, 2024 at 3:18:05 AM UTC-8 Dima Pasechnik wrote: > > > Pinning packages to a set of tested working versions is a standard practice, and as a matter of fact part of best practices to achieve stability in various deployment situations, reproducibility, etc. > > > > In the Python world, such pinning is done using requirements.txt, Pipfile.lock, and environment.yml files. > > In the Sage distribution, we pin using package-version.txt and tiny requirements.txt files. > > as well as install-requires.txt and spkg-configure.m4 - they also in > some cases pin versions, strictly,or not. > > > These files serve a different purpose. They declare acceptable version ranges.
requirements.txt might as well specify the range, and this is used too e.g. build/pkgs/phitigra/requirements.txt has phitigra>=0.2.6 So this is all blurred and confusing > In pure Python packages, this exists as well, as you know. > It is done in pyproject.toml "dependencies" (previously setup.cfg/py "install-requires"). > > Talking about these here is a distraction that does not serve the discussion of this topic. > > Now, at last, tell us what makes Sage so special that we must vendor > sphinx and jupyter [...] > > > Note that I have not expressed much of an opinion yet on your proposal. > We'll get there. > > But as I have pointed out several times previously, you are using the word "vendoring" in a polemic and idiosyncratic way, which does not serve the discussion. More below. > > > A question to ask is what tooling is available to update the version pins, and what the cost of using the tools is. For a typical upgrade, by improving our tooling, we have reduced the work to just typing "./sage -package update-latest sphinx --commit". In the Sphinx upgrade, https://github.com/sagemath/sage/pull/37129/files (needs review), I ended up updating 25 packages, so I had to use a command like this 25 times. It's repetitive, maybe it takes 20 minutes total, but it's not remotely something that I would use the phrase "Sage has shot itself in the foot" for. > > The whole thing of a zillion vendored packages [...] > > > 1. Sage does not "vendor". What is in build/pkgs is _metadata_. It's just text. Sage _pins_ versions of packages, so there is information on the version. of course, I never said that metadata is vendoring, it's certainly not, and this is a deviation from the topic. > > 2. Also the large Sage source tarball does not "vendor". It is a shipment of a distribution. Distributions don't "vendor". It's the job of a distribution to ship its components. This is not correct. Sage is not a distribution, and I am using the verb as described here: https://en.wiktionary.org/wiki/vendor#Verb *vendor* (third-person singular simple present *vendors*, present participle *vendoring*, simple past and past participle *vendored*) 1. (transitive <https://en.wiktionary.org/wiki/Appendix:Glossary#transitive>, software engineering <https://en.wiktionary.org/wiki/software_engineering>) To bundle third-party <https://en.wiktionary.org/wiki/third-party> dependencies <https://en.wiktionary.org/wiki/dependencies> with the source code <https://en.wiktionary.org/wiki/source_code> for one's own program. * I distributed my application with a vendored copy of Perl so that it wouldn't use the system copies of Perl where it is installed.* 1. (transitive <https://en.wiktionary.org/wiki/Appendix:Glossary#transitive>, software engineering <https://en.wiktionary.org/wiki/software_engineering>) As the software vendor, to bundle one's own, possibly modified version of dependencies <https://en.wiktionary.org/wiki/dependencies> with a standard program. *Strawberry Perl contains vendored copies of some CPAN modules, designed to allow them to run on Windows.* According to this definition, everything in upstream/ is vendored (except our own packages, like configure.) > > -- > You received this message because you are subscribed to the Google Groups "sage-devel" group. > To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/e2fd4a63-c029-4c1a-92eb-4a81c3ac6a16n%40googlegroups.com . -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CAAWYfq1U%3DjrpU3Yn4K%2BX9kpm7p%3DENgLqch2z%2BH3ABPaK8fBU6g%40mail.gmail.com.