On Wed, Jul 18, 2018 at 12:13 AM Volker Braun <vbraun.n...@gmail.com> wrote:

There's at least a few things I should say here.

> I do appreciate your hard work in making Cygwin work. But IMHO thats a rather 
> high-risk upgrade with little reward. Nobody stops you from merging that 
> ticket when building cygwin binaries.
> And realistically we don't have anyone developing on Cygwin only at this 
> point.

This isn't a development-related bug it's a runtime bug; so I don't
understand your comment "realistically we don't have anyone developing
on Cygwin only at this point".  And it's a pretty serious bug IMO
because it can cause the Sage process to simply *exit* with no error
message and an error code of zero; granted this only happens in some
extreme stack corruption scenarios, such as a stack overflow or
possibly some other situations.  In most software, especially plain
Python software, that is not something we would have to worry about.
However, for something like Sage and much of the mathematics software
it wraps this is not as far-fetched a scenario, it's a very painful
result to debug.

All that said, your claim that this is a "high-risk" upgrade is also
highly specious.  This is upgrading Cysignals from 1.7.1 to 1.7.2 [1]
which contains a couple bug fixes, the most significant of which (in
terms of patch size) impacts Cygwin only.  So I'm not sure what
information you're going on when you call something "high risk".  I
also think it's worth emphasizing that this bug is a regression: It
did not happen in the previous Sage release.

Also going back to "developing on Cygwin" it depends on what you mean
by "developing".  Everyone who uses Sage is "developing" on some
level.  Are you saying there are no Sage users on Windows?

> [ ]   I want to delay all other tickets by 1-2 weeks so that this one Cygwin 
> bug can be fixed.

This is again specious, and needlessly disparaging and antagonistic.
I don't believe if takes 2 weeks to run CI tests--we are in the
process of disproving that in #24655 [2] and related work (and if it
does take that long that's a process problem, not something you can
use as a cudgel).

I hate to sound like a broken record (having to write this phrase yet
again is itself repetitive), but there are things we could do
differently that would save yourself, me, and others a lot of sense of
antagonism every time you're trying to come out with a release.  How
can you claim that a release would be "delayed by 1-2 weeks" when
there is no agreed upon and published release schedule?

The purpose of having a release schedule is, among other things, the
way to avoid these kinds of struggles.  This would not be so important
on a smaller-project developed by only one or two people.  But for a
project consisting of a large community of developers--most of whom
also have other priorities and are not always actively working on Sage
(even me!)--this kind of communication is absolutely necessary in
order to give people a chance to plan and react.  It's quite
normal--common even--to have someone working an issue that they
absolutely plan to have ready for an upcoming release, but need to set
aside temporarily over other priorities, with intention to finish
before the release.  But if they have no idea when that release is
going to happen, how can they plan accordingly?  Sure, it can occur
that a major new feature, or a controversial bug fix simply won't be
ready in time for a release, and that's tough luck.  But you vastly
increase the likelihood of that happening when people don't know when
the release is going to be and can't plan ahead for that.  Take that
scenario times N and it gets that much worse.*

Currently, the only obvious indication that a release is imminent is
that you unilaterally decide to tag something a "release candidate".
When is that going to happen?  After there's been a "beta9"?  Is there
ever a "beta10"?  "beta11"?  The tag history seems to indicate there
could be.  This time the "release candidate" came after "beta8".
Sometimes it comes after "beta6".  I know there is usually some logic
behind this, such as an upcoming Sage days, but you can't expect
everyone to know that, or to read your mind--I'll come back to that
though.

After the "release candidate 0" point, there is also no communication
as to exactly how soon after you tag that "release candidate" you plan
to make the final release.  You would think there would be some
communication of that at least on sage-devel, the primary channel for
Sage developers to communicate with each other and make decisions
about the direction of the project.  Instead it just sort of "happens"
as though it were a force of nature.

By contrast: Looking at the past releases (informally; I haven't
precisely quantized this) it seems there's a new release roughly every
three to five months.  So let's say we plan to come out with a release
once every four months, which is easy to keep track of.  It would be
good even to pin exact dates well in advance: This does not mean those
exact dates must be kept--there are not specific market forces holding
us to them. Various factors can affect them such as holidays,
availability of the principal actors, serious blocker issues, etc.
It's okay to slip a couple days to a couple weeks if need be,
especially if this is communicated as much in advance if possible.
But having some dates planned out well in advance still helps
at-a-glance planning and decision making.  There is also nothing
preventing the occasional faster, intermediate release when
appropriate (such as if there is a SageDays coming up for which some
new features are desirable).  Again, this still needs to be
communicated in advance.

With a scheduled (but flexible) target release date in place, one then
has a basis for setting policies such as cut-off points for disruptive
changes in the release branch.  Somewhere between 2 weeks to a month a
head of time, depending on how often release blockers are found during
development.  Maybe three weeks is good enough.  Knowing that this
cutoff point is coming also gives the development community time to
cooperatively triage issues (by actually using milestones!) in order
to better come up with a list of issues that can reasonably be
accomplished by the next release.  If done, even a little bit, this
helps the release manager by reducing the number of issues we need to
consider for planning a release.  A triaging process also allows for
debate/discussion over the relative importance of an issue further in
advance, so it doesn't have to be as much of a panicked "last minute"
fight.  If there's a question about availability of continuous
integration workers, this can also be mitigated (if it isn't already)
by giving build priority to changes targeted for a soon-upcoming
release.  This can be done based on various issue metadata.

This may sound idealized, and it is--this will never be perfect--but
at least having a process that is documented and agreed upon makes a
lot more possible with significantly less stress and antagonism
involved.  It gives everyone time to have their needs addressed (and
does not guarantee that their needs will be met, but at least properly
addressed), and leaves less ambiguity and unilateralism about the
decision-making process.

If setting a release "schedule" is somehow too impractical, there
should at the very least be a process for preparing a release, which
includes the aforementioned "grace period", triaging that precedes or
coincides with the grace period, and above all else *communication*
about the release plan.

As someone with politically anarchist leanings I appreciate the
anarchic structure of the Sage development community (and open source
in general).  But that doesn't work well if there aren't
democratically agreed-upon and documented processes.  It also doesn't
work well if the development cycle is entirely decided (if even with
good reasons) by one person who doesn't communicate their plans or
reasoning in a public venue.  That just feels more like chaos than
anarchy to me.

Thanks,
E


* Case in point: As I wrote previously, I made this fix back in April,
but tabled getting the fix directly into Sage since I thought it would
be no big deal to make a Cysignals release and update Sage's
dependency on it; at the time we determined it was a low-risk,
low-effort issue that could be handled before the next
release--whenever that might be...  Given that "release candidate" is
the only direct evidence that a release is imminent, I took it upon
myself to e-mail you directly to ensure that the release could account
for some otherwise ready work that needed to be included.  That should
at least indicate that it was "important enough".  Instead that was
summarily ignored, which is mysterious at best.

[1] https://github.com/sagemath/cysignals/compare/1.7.1...1.7.2
[2] https://trac.sagemath.org/ticket/24655

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