On 11/27/2012 01:19 AM, Robert Bradshaw wrote:
This is somewhat a continuation of the "permutations...again" thread,
but I think the topic is much broader than that. Over time
contributing Sage has become increasingly bureaucratic with the goal
(I hope) of getting higher-quality more-stable code.
Raising the bar on Sage code quality creates this limbo area of code
that's good enough to be shared/built upon, but not good enough to be
included in Sage. The combinat folks seem to have realized this from
the beginning (hence the combinat queue) and this was also the
motivation for psage http://purple.sagemath.org/goals.html (see
especially "Change the development model") I don't see this changing
anytime soon.
On the other hand, it's very important that code like this not get
lost, and there is value added by taking code to the next level (e.g.
http://sagemath.blogspot.com/2011/12/when-using-sage-to-support-research.html
) If something like the salvus model
http://sagemath.blogspot.com/2011/11/is-time-ripe-for-httpsagenbcom.html
takes off, and I'm optimistic it will, that might open up
opportunities for others to do this work, or (more interestingly)
researchers to secure funding that allows them to put on their
developer hat as part of their day job rather than squeezing it in on
nights and weekends between teaching and research. (Of course it would
also be nice of the academic landscape shifts to give credit to these
worthwhile endeavors but that's not going to happen overnight.)
So, what can we do? We're looking to shake up the development model
next year, I think it'd be useful to see how to best leverage this
"alpha-quality" research code from Sage *and* provide an easy (or at
least no-harder-than-necessary) way to migrate such code into Sage
itself once it's ready (with incentives). What tools, models, and
conventions would be conducive to this? The intent seems to be to
support sage-combinat-like queues or patch overlays, but is this the
best model? (It works, but it seems to be a lot of overhead and has
its drawbacks.) Long-lived git branches? Independent forks in separate
namespaces (like psage)? A very stable sage-core with various
(optional?) overlays? (Would this allow for an even more "sound
software engineering practices" base without the tension to apply
unrealistically high bars everywhere? I've see good patches or even
bugfixes not go in for ages due to trivial documentation issues...
(being able to *easily* make trivial chances or build upon the work of
others will help here)) Decorators for "alpha-quality" methods that
don't exist in the "stable" model? Any other ideas?
- Robert
I think the Sage community could quickly expand and there could be tens,
if not hundreds, of git development branches once the switch to git
occurs. It would be quite hard to keep track of all the different
branches and the individual modifications that people have in their
forks. I looked up scipy right now, and that itself has over 500
watchers and 200 forks. The situation is the same for matplotlib, and
almost the same for mathjax. It would be nice to see how those
communities cope with such a huge number of forks and development branches.
What I describe below is one way I think we could have access to the
many individual patches and "alpha-quality" code people might have.
To encourage people to contribute back high-quality version of their
research projects into Sage, one thing that could be done is to enable a
wikipage where the developers can mention or list their current
project/unpolished code. The hope is that such a model will help the
person get feedback for his/her code and the person can get encouraged
to eventually submit it to trac and include it with Sage. It often
happens with me that I get a bit more motivation to finish/polish my
work once someone asks me for it - the feedback helps me know that the
code might be useful for someone else too! I wonder if other people here
have faced similar situations.
The wiki page could be similar to the one used in
http://godashboard.appspot.com/ (that's not a wiki page though). There,
a lot of projects are listed; though I am not sure how it is maintained.
The positive aspect of having a wiki page is that any developer who has
been given access to it can edit it and list his/her project or code.
This could also help to consolidate all the different and separate
development that goes on in psage and combinat, into one place where you
can access all those links and sub-projects (I wasn't even aware of
psage for instance).
A big question is, of course, how can one get easy access to all these
development code. I don't have a solution for this.
About getting trivial patches merged in - I don't know how it can be
effected. One option is to use the online editing facility of github
itself, which has already been used a bit in the notebook development. I
don't know where the Sage library will be hosted though.
--
You received this message because you are subscribed to the Google Groups
"sage-devel" group.
To post to this group, send email to sage-devel@googlegroups.com.
To unsubscribe from this group, send email to
sage-devel+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel?hl=en.