On Thu, Apr 14, 2016 at 3:21 PM, Jeroen Demeyer <jdeme...@cage.ugent.be> wrote: > A really important point (which so far hasn't been addressed) is how to deal > with breakages of affiliated packages. I see two ways:
These are good questions. > 1. If I make a change to some core package, it is my responsibility to > ensure that no affiliated package breaks. > > 2. It is the responsibility of the affiliated package to fix breakages. Those are the most obvious but there are other ways. A variant on #2 is that it's the responsibility of the affiliated package's maintainer to perform integration testing of their package and report issues that result from upstream changes. But whose responsibility it is to "fix breakages" may depend on the particular issue. I agree with the overall premise though. > I think both of the above have problems: > > With 1, the author of the core package might not have access to the > affiliated package: how do you force your affiliated package to accept a > needed change? This is the current situation with Sage and SageNB. > > With 2, breakages will need to fixed after the fact (after the change to the > core package has been merged already), leading to occasional breakages for > end users. This is the current situation with Sage optional packages. I agree, mostly. Both of these *are* problems. Astropy doesn't do #1--that is, there is nothing that tests Astropy core changes against all affiliated packages (rather, the affiliated packages run their own tests against the latest Astropy core--the inverse). I think there has been some discussion of adding affiliated package tests to Astropy's main contiguous integration matrix and I think that would be a good idea. It would also enable better integration testing between affiliated packages (some already do this--for example APLpy [1] depends on WCSAxes [2]--both are Astropy affiliated packages and use (different) functionality from the Astropy core library. Implementing #1 would seem to require addressing problem #1. However, this needs to be addressed either way--if some changes are made in the core package that break affiliated packages then the affiliated package *may* have to be updated regardless of how the breakage was discovered. If truly nobody can maintain an affiliated package anymore it might die. And that's a problem since it might mean loss of functionality for users, but it's a less bad problem then having unmaintained code sloshing around in the main package (and if a package goes unmaintained it probably didn't have many, if any users beyond its original author anyways). It should be pinned to require the last versions of its dependencies that it did work with so that it can be easily installed in a virtualenv if absolutely needed, and then be sent out to pasture. Problem #2 does result specifically from requiring affiliated packages to do their own integration testing. That's why having more integration testing for the core package would be good too. This is rarely a huge showstopper though. These issues are almost always caught in development and don't affect anyone but the affiliated package author, and usually not for long, as their package will normally still work with the latest stable version. In *some* cases the development versions of an affiliated package will depend on the development version of the core package, but in most of those cases the affiliated package author is working closely with whoever is working on the dependent features in the core package (or often are the same person(s)). Finally, in the rare cases where a release gets out that breaks integration it can be addressed quickly by a patch release. Currently Sage doesn't do patch releases, but it should. Especially if there is a move toward increased modularization. But that's more a separate issue. Erik [1] https://aplpy.github.io/ [2] http://wcsaxes.readthedocs.org/en/latest/ -- 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 post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.