Hi folks,

On Tue, Oct 27, 2009 at 5:22 AM, William Stein <wst...@gmail.com> wrote:
>
> Hi,
>
> I wonder why everybody (*) making suggestions has never put together a
> single Sage release themselves, yet everybody who has done significant
> work putting together Sage releases, organizing the web page, mirror
> binaries, etc., has completely refrained from making any suggestions?

I have two excuses.

Lame excuse: I was busy preparing a draft of my Honours thesis.

Good excuse: I wanted to spend some time gathering my thoughts on the
issue of maintaining a conservative series of releases. Here are my
thoughts.

Let's imagine for the sake of discussion that we have two separate
releases. On the one hand, there is a conservative double point
release series like Sage 4.2.x which only have bug fixes and also bug
fixes that have been back ported from major releases. Such bug fixes
include fixing bugs in the Sage standard library, bug fixes in the
Sage standard documentation, updating standard packages but not
upgrading spkg's to upstream releases, etc. On the other hand, we have
a major single dot release like Sage 4.x which includes new features
in addition to bug fixes that have been back ported to the Sage 4.2.x
series. Furthermore, both the double dot point and major releases are
released more or less roughly at the same time. For something close to
what I'm talking about, refer to the current situation with Python in
which there is a maintenance release for Python 2.6.x, and at the same
time there is a major release (i.e. Python 3.x) that includes new
features and backward incompatible changes.

Now let's explore ramifications regarding human resources of having
two separate branches: a conservative branch, and a major branch. One
of the first questions that come to my mind is: Are there human
resources around to maintain two separate branches? And if so, how can
such resources be divided between the above two branches? Who are
willing to step up to the task of doing a maintenance release for the
Sage 4.2.x series? In order to understand the latter question, assume
for the sake of discussion that new features, backward incompatible
changes, bug fixes and other wild/crazy stuffs can go into the major
release. Do we need at least two release managers: one for the
conservative release, and one for the major release? On the issue of
release management, see the release management wiki page [1] for an
incomplete list of tasks involved in managing a release.

Other questions include: Who are available/willing to fix bugs in a
conservative release? Who are available/willing to back-port bug fixes
from a major release? Who are available/willing to test and review bug
fixes for a conservative release as well as for a major release? What
can we do to empower users to explore a bug, narrow down its cause(s),
fix the bug, and produce a patch? I don't claim to have answers to any
of the above questions.

Now let's explore the issue of infrastructure. We require a farm
consisting of different systems for testing and building Sage. This is
already in place in the form of the dozen Linux virtual machines
hosted on boxen.math, machines on the Sage network and SkyNet, and any
machines that people can get their hands on. From download statistics,
Windows users account for the majority of users of Sage. Of the people
who are using Sage under Windows XP, under Windows Vista, or Windows
7, how many of them are willing to help with developing Sage under
Windows? This can range from using Sage under Windows to testing Sage
and even producing patches. Similar questions can be raised for Mac OS
X. From my experience, people who use Sage under OS X have been
actively contributing to the OS X port of Sage. It is reported, and I
know from personal experience, that Sage 4.1.2 compiles and work OK on
Intel Mac OS X 10.4.11. People who use Sage on a Mac have been
reported to do so under Mac OS X 10.4.x, 10.5.x and 10.6.x in addition
to different CPU architectures (Intel, PowerPC, G4, G5). As for Linux,
there are reports that people have used or tried to compile Sage under
Arch Linux, Gentoo, SUSE 10.x, RHEL 5.3, and Slackware. There might be
other exotic Linux distributions that I have missed. Does the Sage
development infrastructure contain all such machines listed above?

Contrast the above to the actual state of the Sage infrastructure. The
Linux virtual machines on boxen.math at their current state consist of
the following Linux distributions in both 32- and 64-bit versions:
CentOS 5.3, Debian 5.0, Fedora 11, Mandriva 2009.1, openSUSE 11.1, and
Ubuntu 9.04. The machine bsd.math is a MacIntel running OS X 10.6.1.
The machine t2.math is a SPARC machine running Solaris 10. I've heard
that disk.math runs x86 OpenSolaris 10. The SkyNet cluster consists of
the following machines on which Sage is known to compile and run OK:

 * cicero: x86 Fedora 9
 * eno: x86_64 Fedora 9
 * lena: x86_64 RHEL Server 5.3
 * menas: x86_64 openSUSE 11.1

There are also two IA64 machines on SkyNet, one running openSUSE and
the other running RHEL. SkyNet also has a number of Solaris machines.
At the moment, Sage is known to fail to compile on either of the
Itanium machines as well as on the Solaris machines (I might be wrong
here). William Stein also has access to the latest version of Red Hat,
namely the machine rosemary.math, which runs x86_64 RHEL Server 5.4.

For release management, it's a good idea for a release manager to have
access to machines that make up the Sage development infrastructure.
In addition to that, a release manager also needs to have access to
Windows machines (XP, Vista, Win7) together with Cygwin and/or the
latest version of MSVC. This might or might not be necessary,
depending on your point of view. However, since the Cygwin port is
nearly complete (minus some failures), one also needs to test a
release of Sage on Cygwin. As for MSVC, I'm not optimistic about
anyone having access to the latest version of that expensive
development environment. There have also been discussions about
porting Sage to AIX and HP-UX. But how many people in the Sage
community have access to either of those platforms? David Kirkby has
access to an AIX machine and he has tested some patches/packages on
it. I recently sent a request to OpenAIX for a free account on an AIX
machine, but have so far received no reply. David Kirkby said that the
person in charge of OpenAIX is on vacation.

Notwithstanding issues of human resources and development
infrastructure, how are we going to sort out the issue of mirroring
out two separate releases at the same time? Say that we have two
versions: a conservative version with only bug fixes, and a major
version with new features and backward incompatibilities. Furthermore,
both are released at the same time. Are we going to mirror out both
releases? If so, what changes need to be made to web sites, and web
sites of mirrors around the world, so that people won't be confused
about information presented on web sites? For a whole year during 2008
or so, Harald Schilly was the only person who maintained the Sage web
site. Python has two different releases: a bug fixes release for
2.6.x, and a new features release in the form of 3.x. Can we mimic how
the Python web masters structure their web sites, in particular the
download page [2] and the documentation page [3]?

If people want to upgrade, they have the choice of upgrading to the
bug fixes only release, or upgrade to the major release. At the
moment, I understand that any of these two tasks can be accomplished
in two ways. Download the relevant source or binary tarballs by going
to the relevant download pages; or do an upgrade with "./sage
-upgrade". However, note that the current behaviour of "./sage
-upgrade" is to download updates from a mirror. How can mirrors and/or
the upgrade script be restructured in such a way so that if you want
to upgrade from Sage 4.2 to 4.2.1 you don't end up with 4.3? At the
moment, this is not an issue because only one repository is mirrored
out. If we are to maintain a conservative release in addition to a
major release, I think it would require maintaining two separate
repositories that need to be somehow kept separate on each mirror,
including on the master server.

By now, I guess you are tired of me rambling on about human resources
this and development infrastructure that. And you ask yourself, "Is
this guy going to do anything about maintaining a conservative
release? Or is he just making a lot of hot air?" So to put my money
(err... my free-time-away-from-work) where my mouth is, I propose to
take the Sage 4.2 release and maintain a bug fixes only Sage 4.2.x
series. I want to experiment with maintaining the Sage 4.2.x series
for at most six months and would step up to be a release manager for
that bug fixes only series. After six months, I would drop maintenance
of that series and would take on the major release current at that
time and continue on maintaining a bug fixes only series of that major
release. My aim is to cater to people who don't want to upgrade to
major changes/features and the latest and greatest, but are happy to
upgrade to bug fixes only releases. While doing a maintenance release
of Sage 4.2, people should use for development whatever alpha or rc
versions of Sage that Mike Hansen releases.

Sage is a volunteer project whose success is due to its user base, the
untiring commitment of its growing development community, as well as
the countless hours of volunteer time its community has devoted to it.
I consider it a privilege to volunteer my time to be release manager
of the Sage 4.2.x bug fixes series. Any serious objections why I
shouldn't maintain the Sage 4.2.x series for at most six months?


[1] http://wiki.sagemath.org/release

[2] http://www.python.org/download/

[3] http://www.python.org/doc/

-- 
Regards
Minh Van Nguyen

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to