On 04/14/2016 09:21 AM, Jeroen Demeyer 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:
> 
> 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.
> 

It would be have to be (2), and that would be the distinction between an
affiliated package (one that depends on Sage) and one that gets added to
Sage itself. Both should still be an option: people get less upset if
they make a choice and it bites them in the ass than they would get if
you forced the same choice (that they would have made anyway) on them.

Breakages will still occur, but they can be managed. If it becomes
possible to package Sage without all of third-party software, then it
becomes possible for the people who depend on Sage to depend on a
particular version (and enforce that with pip, or a package manager, or
whatever). That's not possible now because Sage hasn't been packaged
most places. Then all we need is a little discipline to not break things
too badly between releases.

To do that, we have to figure out what the "public API" is, and how much
we're allowed to change it. Major versions (e.g. sage-6.x to sage-7.x)
should be "anything goes." With the current versioning scheme, minor
releases should be things like build-system changes, method additions,
bug fixes, and dependency updates. (This needs more careful thought than
I've given it.) The release manager would have to decide which is which,
and maintain two separate branches. The current "develop" branch
corresponds to "the next major release", and we would need a new branch
for "the next minor release" containing only those tickets that don't
break the public API.

Nobody can write code depending on a library that is guaranteed to work
forever with all versions of that library. But "anything can change at
any time" isn't much of a promise to those people. Having a more
semantic versioning scheme will make things a lot less painful. And the
option to commit straight into Sage itself is there for the people who
are willing to give up some control for stability.


-- 
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.

Reply via email to