On Thu, Mar 8, 2012 at 2:16 AM, Harald Schilly <[email protected]> wrote:
> On Thu, Mar 8, 2012 at 11:09, Daniel Krenn <[email protected]> wrote:
>> How should a project proposal look like? I've read the FAQ of GSOC,
>> there is written something about that, but maybe we have a common way
>> to do it for Sage-projects.
>
> Hi, about a week ago I wrote you emails with more details. Basically,
> it's a few sentences about the project with some general context, an
> estimate of the level of difficulty (does it involve one or more
> languages, how hard is the associated mathematics, etc.) a mentor and
> a possible backup mentor and a list of prerequisites of certain
> skills. Please write to me directly, so that we can discuss this
> further if necessary.
>

Harald,

Are you taking charge of making sure Sage applies as a mentor
organization?  I want to make sure this doesn't accidentally slip
through the cracks!  We have to finish our application within 26 hours
of right *now*:

 "Org Application Deadline:
March 09 at 23:00 UTC
1 day, 2 hours remaining"

I've revised my list of projects.  I took only those that don't
require very advanced mathematical knowledge, and expanded my write-up
of them to answer the questions you mentioned.   Here's the revised
project list:

 * Write and deploy a version the Sage notebook on Google App Engine
and Amazon EC2 (etc.): https://github.com/williamstein/simplesage_gae

GENERAL CONTEXT: This is one strategy for making http://sagenb.org
scale to millions of users.  Currently http://sagenb.org gets hammered
(there are 84168 users and it is running on a single computer in the
basement of the math building!).  Rewriting the notebook for GAE+EC2
may make Sage available to a much wider range of people.  This is a
top priority project for me (William Stein) for April-July, with some
personal NSF funding (for my salary), but I could use help!

PREREQUISITES: Python, Javascript, Jinja2 templates, jQuery, web
application programming, Google App Engine, Amazon EC2 (or other cloud
hosting), very basic use of Sage.  No advanced mathematics knowledge
is needed.

MENTOR: William Stein

BACKUP MENTOR: Jason Grout

 * Implement 3d graphics built on the three.js javascript library and
WebGL: http://trac.sagemath.org/sage_trac/ticket/12402

GENERAL CONTEXT: Currently, Sage by default uses JMOL
(http://jmol.sourceforge.net/) to display 3d graphics.  This is a weak
link for Sage, because Jmol is a very complicated Java applet, so on
many platforms it crashes web browsers, won't run at all, is unstable,
etc. For example, Jmol doesn't work at all on iPhones and iPads, and
probably never will. Moreover, selecting objects and manipulating them
is very hard, as is evidenced by nobody ever having succeeded in doing
so for Sage, despite much demand.  The future of 3d for the web is
WebGL, which has some support by modern browsers and hardware.  The
three.js is a Javascript library that allows one to describe a 3d
scene and interact with it purely from Javascript.  Moreover, the
scene can be rendered in any browser that supports HTML5's canvas2d,
which is essentially all modern browsers, though it will render more
quickly when WebGL is available.  The goal of this project is to do a
complete reimplement of 3d rendering for Sage using three.js, which
fully replicates all functionality that Jmol offered, so that three.js
can instead be the default.

PREREQUISITES: Javascript.  Python.  Foundations of 3d computer
graphics.  Familiarity with 3d plotting in Sage.  Calculus.  No
advanced mathematics knowledge is needed.

MENTOR: William Stein

BACKUP MENTOR: Jason Grout


 * Finish creating and deploying a C library interface to GAP:
http://trac.sagemath.org/sage_trac/ticket/6391

GENERAL CONTEXT: GAP (http://www.gap-system.org/) is a free open
source system for computational discrete algebra, with extensive
support for computational group theory.  It has its own command line
interpreter interface.  It would be extremely valuable if GAP also had
a C library interface.  Volker Braun and William Stein have written a
proof of concept C library interface to GAP, but it is not ready for
production use, since it does not behave well when certain errors
occur, is based on an old version of GAP, etc.  The goal of this
project would be to create a high quality complete C library interface
to GAP, based on the existing work done in this direction.  This would
drastically speed up certain parts of Sage that currently communicate
with GAP via a pseudo-tty interace.  The C library interface would
also be contributed back to the GAP project, making GAP (independent
of Sage) easier to embed in C programs, which would make it much more
generally useful than it currently is.  (Martin Albrecht did something
similar to this for Singular, and contributed it back; it is one of
the most important improvements to Singular in years.)

PREREQUISITES: Expert knowledge of the C programming language, and a
little bit of assembler.  Medium knowledge of Python and Cython.  Some
background in how interpreted programming languages are
implemented. No advanced mathematics knowledge is needed.

MENTOR: William Stein

BACKUP MENTOR: Volker Braun, Martin Albrecht


 * Greatly improve the pseudo-tty interfaces between Sage and the big
Ma's: Mathematica, Maple, and Matlab.

GENERAL CONTEXT: A unique feature of Sage is that it is able to
communicate with essentially every other math software system out
there, and some of that communication is fairly sophisticated,
optimized, and debugged.  However, the interfaces between Sage and the
most popular commercial mathematics software systems -- Mathematica,
Maple, and Matlab -- could all benefit from substantial additional
work.  They are buggy on certain platforms, don't deal well in some
cases with large outputs, don't draw plots well, etc.  Currently, the
interfaces are all pseudo-tty based, but it may be possible in some
cases to create alternative interaces (with exactly the same API) that
use proprietary socket-based protocols, e.g., MathLink
(http://www.wolfram.com/solutions/mathlink/) for Mathematica.  Now
that the API of the Sage interfaces is very stable (after 7 years!),
the goal of this project is to investigate and implement the best
possible ways of implementing this API for each commercial math
software system.

PREREQUISITES: Very good knowledge of Python.

MENTOR: William Stein

BACKUP MENTOR: Mike Hansen


 * Make it so Python cache's module import locations on startup, thus
greatly improving startup time for large Python modules.
http://trac.sagemath.org/sage_trac/ticket/11729

GENERAL CONTEXT: When people type "sage" to start Sage, it often takes
a long time for Sage to startup.  This is incredibly annoying.  The
main reason for this is that Python uses the stat system call to get
basic information about files well over 50,000 times every single time
Sage starts.  This information is expensive to compute, and almost
never changes.  Thus it should be cached.  Volker Braun has written a
proof of concept patch that does such caching, but work remains.  The
goal of this project would be to finish that patch and get it included
in Sage.  Moreover, the project should go further and look at how to
make that caching approach generic so it could be used by other
projects outside Sage. This could have the potential impact of making
"Python + scientific library" startup time better for millions of
people.

PREREQUISITES: Very good knowledge of Python and C.

MENTOR: William Stein

BACKUP MENTOR: Volker Braun

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

Reply via email to