Hacker News new | comments | ask | show | jobs | submit login
William Stein on the struggle for open source funding in pure mathematics [pdf] (ams.org)
84 points by adenadel 9 months ago | hide | past | web | favorite | 17 comments

I still can't believe that they decided that the best use of their money to fund "open source" was just to give everyone Magma licenses. I hope they reconsider that choice some day.

Also, what is Fateman's problem? His constant negativity is really grating. I used to experience it when I was more involved with Maxima. I don't know if he thinks his cynicism is helpful or not, but all it ever did was make me unhappy.

I'm an engineering student an I can say with property that, although I don't know much about Sage, a good symbolic math project (in particular Open Source) is sorely needed. It would be far from a curiosity. Most students use Matlab/Octave where I study, and all it does is allow for numeric computation. We've had huge advances in computing and it's been long since numerical integration was our best aid! More math heavy engineering subjects will often encounter large symbolic manipulations needed to arrive at some result, and common sense is that there's no good tool to help with that. Common sense is there is some limited symbolic manipulation in some HP calculators, and Wolfram Alpha, although it often refuses to work once you start playing with larger expressions.

I also know that some fields like ANNs (AI) research rely heavily on automatic symbolic differentiation, although I'm not sure the tools they use.

Check out SymPy:

    >>> x, a, b, c = symbols('x a b c')
    >>> solve(a*x**2+b*x+c, x)     # solve(expr_eqal_to_zero, var)
    [ (-b + sqrt(-4*a*c + b**2))/(2*a),
      (-b - sqrt(-4*a*c + b**2))/(2*a)  ]

More info: https://minireference.com/static/tutorials/sympy_tutorial.pd...

I will, thank you vm :)

A personal anecdote, yesterday I was thinking about using Maxima versus R (using rstudio) for a three session of 1.5 hours (total 4.5 hours) to cover statistics and probability. Using dice = sample(1:6,100,rep=T) and table(dice) you hit a wall, there isn't an intuitive way to extract the counts, and you need something like as.data.frame(table(dice))$freq, which I don't like. Maxima use ":" for assignment, R can use "=" or "<-". I would like to see "<-" as a general symbol for assignment and using "=" in maxima and R for other uses like equations and default parameters. I prefer seq(1,10) or 1:10 to makelist(i,i,1,10). What I am trying to communicate is that all those open source projects use different syntaxes and that is not a good design for users. Mathematica wins in this field because it unifies the syntax. But Maxima and R are both inspired by Lisp, and Julia has also some macro capabilities. If someone is able to unify the syntax it would be great. We have data.frames and data.tables and non standard evaluation and a lot of concepts that to be useful must be framed in a common context, otherwise we are doomed to a babel tower, or in more practical terms, users are going to choose propietary software because it is designed to make them productive. Python with numpy and pandas is another option but for 4.5 hours I prefer the simplicity of lm(y ~ x) to create a linear model model to other options. I don't know if a smooth transition can be established between a simple language (rich context) and a general one.

Bill Stein is a genius programmer, and Sage is quite the accomplishment. I wish he was more Chern, less Yau. I go to talks where people credit Sage where I know decades of Singular effort were responsible. (I coauthored a similar system; this is a life's work one is dismissing.) Sage was just the envelope, until he could replace the content, in this case unlikely to happen. I wish he was more interested in fixing this sort of user confusion. Draw your own conclusions.

I'm really sorry if some people credit Sage without properly crediting everything Sage depends on. We've gone out of our way to make the architecture of Sage clear. E.g., look at the description of Sage on our website: "SageMath is a free open-source mathematics software system licensed under the GPL. It builds on top of many existing open-source packages: NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R and many more. Access their combined power through a common, Python-based language or directly via interfaces or wrappers." The "and many more" is a link to each component of Sage. I also often tried in talks to always define sage as: (1) a distribution of open source math software, and (2) a Python library that ties them together. Given the mostly volunteer nature of the project, many Sage developers are mostly concerned with creating software to support their research (which they then want to get back to), instead of worrying about the very important social points that you bring up.

Users pick full-featured, easy-to-use proprietary software over narrow-use OSS software with awkward UX all day. Stein had a grand vision to make the many OSS math tools actually preferable. I was in the room for a couple early Sage hackathons and the purpose seemed right on.

Sounds like the old "linux isn't linux, it's gnu/linux/x/firefox" debate.

If people use sage to get the work done, they are using sage. I don't see intel wanting recognition for every scientific paper ever written on their chips.

The problem is that projects like Singular depend on listing papers that have been written with them to get funding and attract contributions. These represent a very significant amount of work. Sage doesn't handle a lot of stuff directly: anything more then basic arithmetic often goes to a specialized package.

It is not true anymore that "anything more than basic arithmetic goes to a specialized package" (it used to be true back in 2005). The Sage library itself is nearly a million lines of code and is very deep after contributions by over 500 people during 14 years--it's far more than "basic arithmetic".

I know scientists are terrible at PR, but why not say:

"Used as foundational block of the Sage library, used in the following papers: [...]" then list every paper that used sage. No one can't prove that Singular wasn't called at least once in the writing of that paper.

Then sage gets more recognition, singular gets way more recognition and the suits in admin are happy.

I can't talk about sage, but the Python world in general gives undue credit to some public faces.

There are work horses and show horses ...

Are you obliquely trying to say that Stein is plagiarizing others' work by not giving proper credit to the authors of components of Sage?

This is mainly about my struggle for open source funding in pure mathematics.

Ok, since we have authorial authority for it, we'll put that in the title above.

The thing that open source lacks is a funding source. Is someone here in a position to know people who have money and want to change the world?

Consider the idea of "open source accounting". Here's the idea in more detail and how to facilitate it.

Open source needs the ability to apply for, receive, and manage grant funds. The management is key. With grant funds a lot of open source software can afford to devote more resources to higher quality output.

Find someone with money who wants to change the software world.

Form a non-profit organization to manage grant funds.

Set up an office with, say 3, accountants. With overhead, I estimate it at about 1/3 Million per accountant, so 1 million per year.

Get the money source to allocate, say 10 million, in "seed funding". This would be broken into 200 50k grants or even more smaller grants.

Contact open source firms, like Red Hat, Canonical (Ubuntu), the Open Source foundation, etc. Get them to advertise the grant organization and kick in some of the 10Mil funding. That way the "seed" funder does not have to actually show up with the full amount.

Sponsor a "Useless-S-Grant" conference where people who attend bring their projects, their grant applications, and report results. Set up a USG journal to record reports. Let conference attendies vote on which grants should be funded.

Require projects to have realistic criteria, such as a commitment to develop some coordinated work (e.g. a Jupyter interface), or a new facility (move their software to an app), reduce their bug list by half, etc. That is, grant funding needs a REALISTIC grant proposal with known criteria.

Require projects to have a github account. In fact, get Github to be one of the sponsoring organizations. Or sourceforge, or GNU.

Require projects to submit progress reports and give an end-of-grant year talk at the Useless conference.

Have companies give grants (aka pay for, with accounting) for fixing specific issues with an open source project. They might, for example, want the project port to their platform, include a specific feature, or fix a specific bug.

Limit, track, and require receipts for all funds in motion. Handle things like tax reporting. Limit grants to pay for conference attendence, travel, hardware, cloud costs, but NOT salary. But allocate "minimum grants" (e.g. $500 / $1000) to registered students (similar to Google's Summer of Code grants).

Put pressure on large companies (IBM uses Linux in its Z-series, for example) that use open source to support the Useless organization.

Find someone who understands the open source money landscape for advice. I recommend William Stein of the SAGE project. We have had several discussions about money. He left a University position to try to save his project once he could not get grants anymore.

The net effect is that open source software would have a well-known funding source. Projects with grants get publicity which means more people will want to associate with them. Real progress can be tracked and measured.

I am not connected to anyone who knows anything about accounting, setting up a non-profit, or anyone who knows anyone who could pony up 10 million dollars for the glory of it. You might.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact