On Wed, Oct 20, 2010 at 10:24 PM, William Stein <wst...@gmail.com> wrote: > On Wed, Oct 20, 2010 at 9:33 PM, Robert Bradshaw > <rober...@math.washington.edu> wrote: >> On Wed, Oct 20, 2010 at 5:10 AM, Johan S. R. Nielsen >> <j.s.r.niel...@mat.dtu.dk> wrote: >>> I think that Burcin's suggestion is excellent. Development of Sage >>> should definitely move towards more structure, documentation, testing >>> and other software engineering practices, but as for any Open Source- >>> project, these things should come naturally as the project grows and >>> matures; as has already happened with Sage a lot, it seems (for a >>> relative new-comer like me). To require too much too soon would kill >>> the joy of working on the project and thus kill the project itself. >> >> +1 I have definitely seen that the level of bureaucracy has going up, >> especially in the last year or two, has turned off a lot of potential >> and even former developers. > > Another +1. The level of bureaucracy has gone up so much in the last > year that it has very seriously turned off me.
+1, and me too. > >> The focus on software engineering and >> testing can certainly be good for quality (though that's not an >> immediate or certain implication), but the problem is that too much >> emphasis on it has a significant chilling effect on contributions. The >> lag time between hacking out some code and getting it in is way too >> high these days discourages contribution and sucks up a lot of >> development time and energy with endless rebases and waiting. > > +1 > > It kills a large portion of potential contributions of code for > advanced research, perhaps 80% or more. I've talked to sooooo many > people about this in the last few months... Yup. > >> And >> though we all want to produce bug-free code, holding that up as the >> primary objetive (as opposed to producing useful code) I think >> dissuades people from submitting or refereeing code. > > Also, anybody who has significant experience with software engineering > knows that producing bug-free code is a recipe for producing almost no > code. Agreed. > > I was talking to somebody today who works on Microsoft Windows > (actually implementing the OS there), and who has also written a lot > of code for Sage (at a "research level" -- advanced number theory > stuff). He said internally at Microsoft code gets into the system, > and out getting used by a lot of people (internally) much more quickly > than with Sage. Instead of the very "all or nothing" model that we > tend to have, they have many levels of review that code goes through. > Sage would benefit from something similar. That's basically what > http://purple.sagemath.org/ is about: a way to get code out there and > distributed, used, etc., but without all the bureaucracy. As an > example, I'll sit down this coming Tuesday with Sal Baig, and get his > and Chris Hall's library for computing with elliptic curves over > function fields into PSAGE, and have it be in the next release. > That's code that isn't stable yet and is mainly for research. For a > year they have been trying to get it into Sage, but it just isn't > happening, since they care and know much more about *using* the code > for research purposes, than about how to make a proper > makefile/autoconf setup, so it builds fine on Solaris and OS X 10.4. > > I think PSAGE will show that the increasingly bureaucratic and > plodding way in which code gets into Sage isn't necessarily bad, in > the same sense that Debian can be very plodding and bureaucratic, but > it still provides a good foundation for many other much more svelte > and useful Linux distributions. > >> I'm not sure I have a solution, but one thing that keeps coming to >> mind is that Sage is trying to span several audiences with different >> goals and criteria, and perhaps the various audiences would be best >> met by a stable vs. unstable model like Debian. Purple sage is an >> extreem move in this direction (more like Debian experimental)--I can >> certainly see the attraction and value, but I just hope it doesn't >> become an incompatible fork. > > A difference from debian experimental is that PSAGE starts by removing > over 20 standard packages from Sage. In fact, so far, that is > essentially *all* that PSAGE is. Also, my intention is that most > Python code in PSAGE go into a different Python module than the "sage" > one. > >>> Burcin's suggestion seem to fit this curve pretty well at this time. >>> New developers and bugfixers -- with little overview of the monster >>> that is Sage -- would feel more confident in reporting and fixing bugs >>> if there was a feeling that there was someone (or a group of someones) >>> with overview and structure. If some enthusiastic veterans could be >>> found and agree on the exact model of this, I think it would improve >>> bug-tracking and -fixing in a number of ways: >>> - overview of bugs, their severity and class (by cleaning up, >>> removing duplicates, collating related tracs, and reclassifying) >>> - better classification of bugs by everyone else (by monkey-see- >>> monkey-do) >>> - better overview over bugs to fix before releases (by better >>> overview over all bugs) >>> - shorter pickup-time between a trac has been filed (possibly by >>> someone not interested in fixing it) and someone is looking at it >>> - assurance that a veteran has looked at the trac, accepted it, and >>> maybe even given an approving nod after positive review >>> - and all of this gives more confidence to developer-rookies >>> I think the system should entirely superseed the automatic-owner >>> system that is currently in Sage. Software-speaking, this would >>> provide an abstract interface between the tracs and those responsible >>> for it, which makes it more flexible to have either one, several or >>> many owners of a trac or class of tracs. >>> >>> Personally, I like the one-week-at-a-time suggestion (though several >>> people should be on duty each week perhaps) sounds best. However, it's >>> easy for me to say, as I don't think I have the required experience to >>> undertake this duty ("You are not bug-ninja materiAL, SOLDIER! Drop >>> down and give me a recursive function generating the Fibonacci >>> sequence!"). When and if the time comes, I would be happiest with a >>> one-week-at-a-time schedule, though. >>> >>>> Burcin wrote: >>>> Perhaps we should come up with a locking mechanism, to prevent two >>>> different people from trying to sort the same issue at the same time, >>>> but it feels like too much organization at the beginning. >>> Maybe there would not need to be a locking-mechanism to begin with, >>> but surely a mechanism so that a bug-wrangler could see that no other >>> bug-wrangler has already looked at this new trac. >> >> I agree that a big part of the problem is that it's hard to get a big >> picture of all the bugs being worked on. The idea of a weekly >> "bug-wrangler" is an interesting one. I have a simpler proposal (which >> may be insufficient, but would complement a bug-wrangler's role and is >> much easier to implement). >> >> First, have the initial status of tickets be some pre-new stage. >> (Something like "unclassified".) This woud make it so you don't have >> to be an expert to classify a bug. Volunteers could go and look at all >> unclassified tickets and file them appropriately (severity, defect vs. >> enhancement, component, duplicate, etc.) Of course, there could be a >> rotating bug-wrangler, but if it was easy enough for a "veteran" to >> hop on and categorize a bunch of them in one sitting this might not >> even be necessary. > > This is perhaps already provided by: > > http://spreadsheets.google.com/viewform?key=pCwvGVwSMxTzT6E2xNdo5fA > > Harald Schilly could probably set things up so more people can wrangle the > bugs > that come in through that page. > >> Second, rather than have the default milestone be the next release, >> have some default future milestone. > > There's no default milestone. See for yourself: > > http://trac.sagemath.org/sage_trac/newticket > > It being the next release is merely a social convention... That said, > of course you mean "instead of whatever is done now..." > >>Only tickets that are actively >> being worked on get put on the current release. This would make it >> much easier to see what's being worked on (or at least cared about) >> and what to expect in the next release. Sufficiently important items >> (blockers) would also get added here. > > Couldn't something like that be accomplished with a trac report > showing the 50 "most active" tickets? Sort of like how > http://ask.sagemath.org/questions/ by default shows the 50 most > active questions, and http://mathoverflow.net/ shows the top 50 or so > most active questions? > >> Thirdly, I think the list of components could be cleaned up. > > For the last year people kept asking to add new trac components (I > know, because I had to add them). There used to only be a handful. > > Just out of curiosity, is trac still the best system to use for > managing what we're managing? You work at Google and they have their > own free http://code.google.com/ thing, which provides similar > capabilities to trac, but with integrated code review, the possibility > to delete comments (w00t!), etc., native support for Mercurial (which > trac barely supports, preferring SVN), easy forking, etc. I have so > far little experience with code.google.com, but I'm sort of curious > how good it is. I set it up for PSAGE here > http://code.google.com/p/purplesage/ since I didn't want to have to > manage a whole trac, hg repo, etc., yet again. > >> All of these would help us get a better picture of the overall state >> of Sage. Finally, we need more automation. Refereeing code shouldn't >> have to involve downloading and applying patches and running all >> tests--that should all be done automatically (with failing tickets >> bounced right away, or at least in a 24-48 hour window). We should >> have a notebook server with sessions of Sage with various tickets >> already applied for quick refereeing (or a CLI interface on, say, >> boxen for those who prefer that--"telnet/ssh >> 10921.sage.math.washington.edu" would be cool, opening you immediately >> into a jailed sage session). I'll plug >> http://trac.sagemath.org/sage_trac/ticket/9967 which is a requirement >> for this and I just recently started to write a per-ticket build bot. >> This would help close the gap and lag between writing code and getting >> it into Sage, and I think that having such a small gap was one of the >> key ingredients in letting Sage explode like it did. > > +1 You hit the nail on the head. The small gap absolutely *was* the > reason. I missed so many key things in (social and other) life > during the first 1.5 years of Sage in order to make the next releases, > because I knew how absolutely critical it was putting together new > releases in order to draw in developers and keep the momentum going. > Making a release 1 day earlier, literally made a huge difference > during that time. Many developers who got involved then, because of > the fast cycle, have since stopped working on Sage. Now the release > cycle is about 2 months between releases. You can see here (look at > the dates) what it used to be: http://sagemath.org/src-old/ > > Again, I'm not necessarily claiming Sage itself needs to move that > quickly again. This is very difficult technically due to the larger > number of platforms supported, the larger test suite, codebase, etc. > But something does need to change, or some of the truly brilliant > computational mathematics researchers (like Mark Watkins, say) will be > unlikely to be drawn in again. For me, PSAGE will accomplish this > goal, while allowing me to continue to benefit from the incredibly > valuable high quality work that so many people are doing on making > Sage a solid, well tested, cross-platform system. > > -- William > > -- > William Stein > Professor of Mathematics > University of Washington > http://wstein.org > > -- > 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 > -- 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