> That would be a huge value to me. As a high school teacher, the
> features of GeoGebra almost completely fill the void of "things I wish
> sage could do". The notebook widgets for Mathematica style
> demonstrations would fill quite a bit of the same void, but GeoGebra
> is already robust and has a ton of functionality.
>
> I love sage, but the high school definition of "exploration" generally
> means grabbing things and moving them around and seeing what happens.
> That is hard to accomplish in sage and it is what interactive geometry
> software like GeoGebra was designed to do. Sage is great for my
> calculus and statistics classes, but it falls short in Precalculus and
> Geometry where a much more tactile grab approach works well. If I
> could send data freely back and forth between the two I could create
> much more powerful concept demonstrations across the board in my
> class.
>
> The fact that GeoGebra can be driven by text commands and embedded as
> a java applet makes interfacing it with a system like sage seem
> possible. I am very excited about this possibility because for me it
> would "complete" sage's functionality.
Jason Grout did some research on GeoGebra and found these examples:
>1. Approximating an integral with sums:
http://www.geogebra.org/en/examples/integral/loweruppersum.html
>
>2. Trying to intercept an object in 3d by only adjusting direction,
>altitude, and velocity of a projectile:
http://www.dean.usma.edu/math/people/Peterson/geogebra/parametric3d-ballistic.html
>I think this helps students realize how difficult the problem is to
do by guessing and checking!
>
>Lots more english examples are at
http://www.geogebra.org/en/wiki/index.php/English
My question is, do the core Sage developers think that adding GeoGebra
to Sage is a good idea or a bad idea?
Ted
I don't know if I'd call myself a core developer or not but GeoGebra
does not seem to be entirely GPL'd. It appears that the documentation
isn't GPL'd nor is the "installer" and the language files. Language
files I guess
count as data, so maybe those are okay to distribute in a GPL'd program, but
that is a guess. Is it possible to create a functional optional
geogebra package which strips
out the non-GPL'd stuff?
>
> Ted
>
> >
>
I guess one issue needs to be addressed: the "freeness" of Geogebra. It
appeared that the source files were GPL, but the translations were not
GPL-compatible. I was a bit confused. Ted, do you understand how we
could include it or what we would have to do to be able to include it,
license-wise?
As for the purpose, I see Geogebra as being something like the Jmol
applet Sage includes. The sage backend could set up a Geogebra initial
setup and then the enduser could manipulate things in Geogebra, much
like the end user can now rotate a 3d graph. However (initially, at
least), there would be no communication back to Sage from Geogebra.
We could use some of the Sympy geometry things that have been developed
as part of a summer of code project to set up an initial Geogebra
situation, if I understand things correctly.
Jason
> I guess one issue needs to be addressed: the "freeness" of Geogebra. It
> appeared that the source files were GPL, but the translations were not
> GPL-compatible. I was a bit confused. Ted, do you understand how we
> could include it or what we would have to do to be able to include it,
> license-wise?
For the record, the license is at:
http://www.geogebra.org/download/license.txt
Jason
I think there is a brewing tension between education and
research amongst developers involved with the Sage project.
More on that in a moment.
I cannot speak for all the core Sage developers, but I think I have some
idea what some of them think and care about. My impression
is that many of them are involved in Sage because they want to create
software that they can use for attacking cutting edge research
problems in their research area. This is true of me: I started
Sage -- original called "Software for Arithmetic
Geometry Experimentation" -- to have a very powerful open software
environment for computing with modular forms, abelian varieties,
elliptic curves, and L-functions.
I am quite happy that Sage has become
much more general, addressing a huge range of mathematics, since
this expands the range of good developers and also increasing the
range of tools math researchers can bring to bare on attacking
a problem results in better research. For example, the solutions
to many problems in number theory involve
an incredible range of techniques in different areas of mathematics.
I'm fairly certain that many of the people who have put in insane
hours during the last few years making Sage what is it now (e.g.,
Mike Hansen, David Roed, Robert Bradshaw, David Harvey, Robert
Miller, Emily Kirkman, Martin Albrecht, Michael Abshoff,
etc.) have a similar perspective.
On the other hand, I teach high school students for a while every
summer (in SIMUW), as do other people like David Roe, and
of course I teach undergraduate classes... This is why I put
so much effort into co-authoring things like
the Sage notebook, which exist mainly to make the functionality of
Sage more accessible to a wider range of people.
So, I think there is a brewing tension between education and
research amongst developers involved with the Sage project
(and in my case in my own mind). Some observations:
1. The research part of the Sage project is thriving
and getting sufficient funding independent of any
connection with educational applications of Sage.
It very very healthy right now.
2. There is a lot of potential benefit to education
in having a tool like Sage, since Mathematica is
quite expensive, closed, etc. It's good for humanity
for Sage to be genuinely useful in an educational
context.
3. People working on Sage for research have
very limited time, and it can be frustrating being
regularly asked to do things by the education
community that not only have nothing to do with
research, but are even sometimes at odds with it.
4. It is vitally important for the Sage project to be both
well organized and have a clear sense of direction,
purpose and goals.
It might be a good idea if the people
who are really interested in Sage being a great
tool for *education*, would consider doing the
following:
(a) setting up a mailing list called
sage-edu
for development discussions related to
Sage in education. I realize that we
just got rid of sage-newbie, but that was for
a different reason -- because people were posting
sage-support questions there and not getting
responses.
(b) Gather together
the best education-related tools in some sort
of organized package. This could start with
Geogebra. I don't know. The key
thing is that there is no expectation at all that
the people into Sage mainly for research do
much of anything related to this project. I hope
one outcome of this project would be an spkg
that when installed would make available lots
of cool extra stuff, and of course I would be very
supportive about server space, posting of spkg's
etc. And when this gets some momentum and
quality behind it this spkg would be included
standard in Sage.
Basically I'm suggesting that everyone interested
in making Sage the ultimate educational tool
get organized, figure out who really wants to put
in an insane amount of effort on this sort of thing,
and put together a bunch of cool tools. Stop thinking
you have to convince a bunch of us research-focused
people to do the work or that your ideas are good -- you
don't -- your ideas are good; it's just that if we put a lot
of time into them we won't have time for our research.
Make an spkg that will be trivial to install into
Sage and extend its functionality. There is
definitely sufficient interest in something like this
for education, there is great potential for funding,
and potential for having a major positive impact on
society. Thus I think people will emerge who will
want to take up this challenge. I just thing it's better
if it can happen for a while unconstrained by the
rules or prejudices of the "Sage Research" side
of this project.
In summary, please put a huge amount of effort into
getting organized and putting together something polished
and great, so I can later effortless assimilate it :-).
-- William
Done: http://groups.google.com/group/sage-edu
Anyone who wants to share moderation duties, please
let me know.
> Basically I'm suggesting that everyone interested
> in making Sage the ultimate educational tool
> get organized, figure out who really wants to put
> in an insane amount of effort on this sort of thing,
> and put together a bunch of cool tools.
For now I have the following two questions about this solution:
1) Which group takes ownership of the notebook, sage-edu or sage-devel?
2) Would sage-devel be willing to expose a standard API that can be
used to access the Sage calculation engine?
Ted
Here is a description of the API Mathematica provides for reference:
http://www.outbacksoftware.com/mathematica/mathlink-jlink.html
Ted
It would be my opinion that this is already started actually:
sage: mathml(1)
<mn>1</mn>
sage: mathml(pi)
<mi>π</mi>
sage: R.<x>=QQ[]
sage: mathml(x^2+1)
MATHML version of the string x^2 + 1
Regretably, the last output indicates that we have a long way to go. However,
I think that developing the mathml output would be an excellent addition.
For instance, MapleTA uses mathml and their authoring would be wonderfully
augmented by a strong back-end for producing mathml.
I don't have much hands-on experience with SOAP, but I thought that the whole
point was to be able to fling xml around the internet -- it should be trivial
to have an xml header with sage mathml input/output inside of it. That seems
to be the type of interface you desire. You might need to write a little bit
of python wrapper to catch the SOAP input and massage it into sage, but such
things would be well worth the time. I'm also assuming that all standard
languages (java, python) have libraries for this sort of thing.
Personally, I'm hoping that mathml is eventually well supported enough in all
the browsers that we could do away with jsmath and just spit out mathml and
have the browser render it in lovely style. I think this should end up to be
a much better solution because I believe that mathml should be more universal
and precise than tex is. However, I think this is a much longer term goal
than either of the above things.
--
Joel
> sage-devel - the idea is that sage-edu rolls up a number of nice
> (initially optional) spkgs that get merged into Sage as they mature.
> The same applies to any extra code written by sage-edu. sage-edu
> should function as a test bed for various bits and pieces of code like
> the interactive widgets, which the research people have little
> interest in. I doubt "you guys" want to do your own releases, so sage-
> edu works as upstream, somewhat like currently the sage-combinat
> people do.
It is my opinion that sage-edu should be a separate entity from
sage-devel and that the main connection between the code that sage-edu
creates/distributes and the Sage computation engine should be through
a well-designed API similar to what Mathematica has:
http://www.outbacksoftware.com/mathematica/mathlink-jlink.html
Since Sage takes inspiration from Mathematica in so many other areas,
my thought is that using mathlink as a starting point for what a Sage
API should look like would make sense too.
Now to spkgs. As the person who created the JMOL-src package, I don't
want to have the 3rd party applets that sage-edu makes available to be
forced to be distributed in source code form. Beyond this, sage-edu
might eventually make dozens of education-oriented applets available
and, if sage-devel does not want to deal with an education-oriented
applet like GeoGebra, I don't see why it would have any interest in
including education-oriented applets in Sage at all.
If sage-edu is a separate entity from sage-devel, it will also need to
have its own source code repository and releases.
> > 2) Would sage-devel be willing to expose a standard API that can be
> > used to access the Sage calculation engine?
>
> I doubt that is really needed. If somebody wants to implement some
> mathml abstraction layer (as Joel suggested below) that would be fine,
What is needed is something like Mathematica's mathlink, not a mathml
layer. Sage needs an API like this for the same reason that
Mathematica needs one.
> but while in the past William has thought about splitting off the
> notebook as its own project I am not seeing that happening any time
> soon.
Why not? The notebook's developers have stated multiple times that
they would much rather do math-oriented development instead of work on
the notebook. In the mean time, the current number of notebook
tickets has reached 70.
Ted
Creating a viable free open source alternative to
Magma, Maple, Mathematica, and Matlab
> > Since Sage takes inspiration from Mathematica in so many other areas,
> > my thought is that using mathlink as a starting point for what a Sage
> > API should look like would make sense too.
>
> I think that API is just ludicrously heavy and way to complicated.
> Sage development has always been guided by KISS and the above diagram
> is far from that ideal.
I see webMathematica being used all over the web so to me the
Mathematica API appears to be performing its job beautifully :-)
> Well, in the end there ought to be only one distribution - there is no
> point in forking the codebase.
How can code that only talks to Sage through an API be used to fork Sage?
> In the very end I need to quote Linus: Talk is cheap, show me the
> code. As long as this is all planning and hand waving I see little
> benefit from having this discussion.
But Michael, I *have* submitted code, quite a bit of it...
I started participating in Sage about a year ago and at that time I
prioritized the list of areas I could contribute in. At the top of
the list was Sage's documentation because it was a mess (actually it
still is, you guys *really* need to fix that) and that is when I began
work on the Newbies book. As the Newbies book started to become
useful, I decided to experiment with having an external language
communicate with the Sage computation engine and I devoted a
significant amount of effort into creating SAGEIDE:
http://sage.math.washington.edu/home/tkosan/sageide/
I was very excited when I actually got it to work but when I posted it
for evaluation, only one developer bothered to look at it.
"Wow", I thought, "tha's strange, the Sage developers are usually so
eager to evaluate new Sage-related things people make. Maybe I am
just too new to Sage and need to prove myself more."
Time passed and I saw that people were really wanting Sage to have 3D
capabilities, but the "Java3D in the browser" approach was not working
too well (I told people that using Java3D in the browser was a bad
idea, but nobody listened). So I put a bunch more effort into adding
Java3D to SAGEIDE and it worked beautifully! However, when I posted
it for people to look at, there was still almost no response...
Then I talked myself into thinking that Sage developers only got
excited about code that was either added to the Sage computation
engine or to the notebook (despite the fact that they had no problems
looking at all kinds of python and AJAX-based applications that people
would periodically find on the Net). "Okay", I thought, "I'm
flexible, I'll adapt." I didn't have the mathematics background to
contribute code to the computation engine (I still don't) so I started
studying the notebook code (which was extremely painful, BTW, because
it has almost no documentation).
My first step was to get my mind around python better, learn
JavaScript from scratch, and start digging into the notebook code. I
decided that my first contribution to the notebook would be to figure
out a good way to allow Java applets to communicate with both the
client and server part of it. Yet again, I was very excited when I
got it working and by this time I had even learned enough to create a
spkg and a trac ticket for it:
http://trac.sagemath.org/sage_trac/ticket/1510
I thought that surely by now I had paid enough dues to merit some
attention from the core Sage developers (especially after volunteering
to create the JMOL-src package on short notice over Christmas because
it was needed ASAP. Robert will confirm that this was not a trivial
task).
But not one of you guys has bothered to look at the work I did, even
after repeated requests to do so since it was submitted over 2 months
ago...
By this time I could not hide from the fact that the reason you guys
were not looking at my submissions was because they were all written
in *Java*. This became amply clear in the Wiris email.
Show you the code? I've been trying to show you code for months now,
but I can't force you to look at it :-)
> As you mentioned yourself there
> is plenty of work in trac to do. So far nobody else has jumped in on
> your side and volunteer his or her free time and energy to make things
> happen.
Do you think that I was the only person who noticed the way I was
being treated by you guys? Did it ever occur to you that a
significant number of the people on "my side" learned to use Sage by
reading the Newbies book and thought "if Ted gets treated this way
when he tries to make a contribution, how are they going to treat me?"
Also, it is kind of strange to complain that people don't jump in and
help work through the trac tickets while at the same time expending
almost no effort to write good documentation which clearly explains
Sage's architecture, theory of operation, code organization system,
etc. You guys keep promising to come through with stuff like this,
but it never happens. The way things are now people are forced to
needlessly waste much of their limited time and energy just trying to
understand these fundamental things :-)
Switching to everyone now...
The reason I decided to join the Sage project was because I thought
Sage could be an excellent way for students to learn mathematics. Its
not my fault that the number of students and teachers using Java
applet-based mathematics software in the world completely dwarfs the
user base of any other mathematics software (a fact that seems to
elude most of you). These teachers and students *love* Java because
of how it has enriched their lives and it seemed obvious to me that
the best way to reach out to these users was to take the software they
already loved and make it even better with Sage.
I can see now that this is not going to happen for the simple fact
that too many of the core Sage developers have an unreasonable dislike
for Java. What you guys don't seem to realize, however, is that all
of the negative posts you have made about Java over the past year have
effectively given Sage the "kiss of death" as far as its use in high
school and early college education is concerned.
Java applets dominate the educational mathematics software space and
the developers who created these applets own this space. Over time
these developers will probably learn about Sage and come take a look
at it because it has capabilities they don't currently have. But the
first thing they are going to do when they get here is to search for
the word "Java" in the email lists (I did), read all of the silly (and
often mean) things you guys have said about Java over the past year,
leave, and then tell all of their developer friends and users to avoid
Sage.
The same thing will also happen if any Java-centric company comes to
take a peek at Sage (such as Sun, IBM, etc.) or companies which have a
bunch of Java developers (like Google:
http://www.google.com/support/jobs/bin/search.py?lr=lang_en&type=f&query=java&Action.Search=Search)
Anyway...
I am going to take some time off from Sage and go help out the
GeoGebra community for a while. The 100,000 users they have over
there that need support is a pull that is too strong for me to resist
at this point :-)
There is no need to respond to this email because I will also be
unsubscribing from sage-devel and sage-support for a while too.
Over time the Newbies book will become out of sync with Sage and so
someone will either need to maintain it or remove it.
On a lighter note, I don't have any hard feelings for anyone here. In
a recent email to David Joyner I indicated that the Sage development
team was amazing and I still hold that view :-)
Ted