"You should realize at the outset that while knowing about the internals of
Mathematica may be of intellectual interest, it is usually much less
important in practice than you might at first suppose. Indeed, in almost all
practical uses of Mathematica, issues about how Mathematica works inside
turn out to be largely irrelevant. Particularly in more advanced
applications of Mathematica, it may sometimes seem worthwhile to try to
analyze internal algorithms in order to predict which way of doing a given
computation will be the most efficient. But most often the analyses will
not be worthwhile. For the internals of Mathematica are quite
For comparison, if you want to audit the Sage Math algorithms that your research depends upon, all you need to do is fire up a text editor (or browse their github). And you won't find any statement in the Sage Math docs telling you not to bother because you're too dumb to understand what you're reading anyway.
In math, how you came by the results you came by is always relevant. Don't tell mathematicians they don't need to know that. It's their job to know that.
and honestly, it seems like diving into sage may not be as trivial as you make it sound. is it not a massive glue of many different languages and implementations?
He (and his group) developed CHOLMOD and UMFPACK and other sparse solvers used everywhere. Basically, when you type A/b in Matlab, it calls his code.
It was an incredibly challenging task going from sort-of/kind-of being able to solve linear systems to where we are today. Hardly anybody thinks about it. Again, you just type A/b, even when A is poorly conditioned. You can write a crappy solver in less than 100 lines of code, but if you read his papers, building a rock-solid solver was a very difficult task.
Unfortunately this kind of work is important, but pretty thankless.
But in this case, and in the context of the OP, it was Davis's oversight and possibly tangible sacrifices (I don't know the details of his career) that made it possible.
Each time we use some numerical methods and it Just Works, we should mumble a tiny prayer of thanks to folks like these, and the writers of BLAS, LAPACK, ARPACK, and many others that provide the backbone of an incredible amount of work.
Prof Doug Lea at Oswego is another unsung hero who has done a ton for programming and particularly parallel programming. A big chunk of java's std library is copyright Josh Bloch and Doug Lea. In particular, Prof Lea built jsr166.
His personal payout would be very tiny (if any at all), after U of F's take and money his lab gets. But at least its some funding to keep his lab going.
x = A\b gives the solution to Ax=b, and x=b/A gives the solution to xA=b. But when would you type A/b ?
Mathematicians who write software are no more likely to be "truly making the world better" than those who prove theorems and teach hundreds or thousands of students every year.
I'm not saying anything about Stein here. He's a rare mathematician: strong on theory and practice, a passionate advocate for his causes, and a respected teacher. But there is a danger of missing the real point here -- most good things don't get funded or recognized. This has gone on for centuries. The funding situation now in the US (for both theory and practice) is better than it has been almost everywhere for almost all time.
Sports has been the undoing of US education in schools  earlier and now it seems even in higher ed.
The sooner they get rid of sports from educational institutes the better for them.
Also, The Atlantic is not a reliable source. It prints garbage like this:
"Football at Premont cost about $1,300 a player. Math, by contrast, cost just $618 a student."
even though everyone at the school takes math, very few play football, and not everyone involved in football is a player.
Atlantic may or may not be a reliable source. What about this? A coach is given a whooping $7,004,000 salary.
Michigan head coach Jim Harbaugh is in his first year with the Wolverines and sits behind Saban with a $7,004,000 total pay. 
On the wider scale, extracurriculars only affect share-of-students rather than increase the total number of students, so such programs have a globally negative ROI. But each individual university is making a rational decision.
 I'm assuming there's a negligible percentage of students that would avoid college entirely if no or very few colleges had football programs. It's safe to ignore football scholarships, because you still have the option of giving the students free money, which is cheaper than giving them free money and also running a football program.
 I'm also assuming the football program itself doesn't generate enough revenue to offset its costs, and only affects enrollment. I honestly don't know if they make enough money in tickets and trinkets to offset the debt service for a stadium, salaries for coaches, free tuition for students, etc. If the ROI is positive(or even negative, but with a positive cap rate), then it might be rational economically to continue them.
How can this be true in the case of a mathematician who writes something that many/most of the others use?
Open source basic infrastructure -- everything from Sage to OpenSSL -- suffers from a market failure.
We rely on these foundational projects for billions of dollars a year in commerce, but they often get minimal funding and are supported by semi-broke volunteers working in anonymity.
* GPG is maintained by one guy, who was about to give up before a few people threw coins in his tip jar after this story a year ago: https://news.ycombinator.com/item?id=9003791
* OpenSSL was comically underfunded and underappreciated until Heartbleed happened and people remembered how much it matters
Stein's story is powerful and shows how neither traditional companies nor universities help here. In the world of math software:
* The companies created a bunch of closed-source walled gardens (Mathematica, Matlab, etc).
* The universities were unwilling to support free and open tools. They gave tenure and support only for authors of research papers, not tools, no matter how useful or widely deployed.
Even the guy who made NumPy and SciPy didn't get recognition for it---wtf.
I think that these new, independent organizations with rich patrons can fill in the gap. Organizations like YC Research, Project Zero, and Canonical.
We need more of them.
Academia values mindless papers over actual results.
I'd prefer it if the granting agencies supported this sort of software infrastructure directly, but, lacking that, a company is a way to hire people to tackle some of the weaknesses of Sage, whether they be in its core functionality or its UI.
Anyway, my point is that even if you're in a niche, if you are the clear expert in that niche (say if you created the framework, or in your case, the software), then a book may be one worthwhile component of a monetization strategy. If you can sell a $30 book to 4000 people, you can earn some decent money. (The royalties on a $30 book on Leanpub are $26.50, so multiplying by 4000 results in over $100K.)
It appears this talk was given in the context of the Benjamin Pierce Centennial Conference:
May you have fair winds and following seas.
Also I'd like to wish you luck with your endeavors!
Back in 2011 or so, as a young undergrad, I latched onto sage and used it for an undergrad research project. My BS was from a tiny university (one year, I was the only Physics major in the school)..and I tried to turn all my friends and profs onto sage, being small meant there was no dept. standard, so I tried to impress it on the dept. (3 people really) but they stuck with mathematica because sage didn't even have an easy to use ode solver! For pete's sake... I understand that sage is a niche project for the math community, but if that's the case, that's the only place you'll find funding and devs from.
This is often said here amongst the startup nerds: make sure you have an audience willing to pay. Hey, many of us in the "more applied community" would love to have a FOSS tool that rivals mathematica, we exist! But it needs to do things well, or at least well enough that in linear combination with the fact that it is open source, the overall goodness vector for the project's value has a timelike norm. Then, we'd clamor for it, you get downloads, and one day, the funders will go, "hey, that's good shit right there, I better be a part of it!"
They don't need to do things for others, or for others' interest. But then, no one should be surprised when such efforts don't get funding. I mean, doing something niche implies that less people will be interested which implies that less people will fund it, right? It's almost a direct consequence of choosing to serve a niche.
Perhaps I can help in making that happen. And so might other people reading this thread!
among other things, SageMath reconciled the confusing namespace soup that is scientific python (numpy, scipy, and matplotlib--three brilliant libraries with partial overlap in functionality and in package names) which SageMath gathered (along with other libraries like SymPy) and put them under a single rubric, 'SageMath'--one (large) install and you have all of scientific python.
SageMath also included a notebook
seems not such a big deal now with Anaconda and Jupyter notebook, but in 2007 it certainly was.
I mean, yes. But, also no.
You do not know me, but you have been an inpiration to me. I came across several of your books during a year of post-bac study. They spoke to me, especially "Algebraic Number Theory,
a Computational Approach". They also steered me toward your home page, and your work on Sage Math. I thought to myself, "yes. yes!"
Though I'm not punk as fuck, I'm definitely a 'walk to your own drum beat' believer, and a skateboarding professor that heads an open source project taking on Mathematica would make an awesome lodestar. I was 32 when I quit a great job at a very well know Wall Street investment firm (back-office, not master-of-the-universe stuff, but definitely a good place to be) so that I could study nothing but math for a year. I should point out, my math grades up to this point were:
- D in my senior year in high school
- C in the only undergrad math course I had to take
So, everyone was like, "You're effin crazy, what the eff are you doing, you're making an effin bad decision..." Etc. Well, it was the best decision I ever made. Two weeks after leaving my job I was in a dorm room with an 18 year old football player (very, very awkward), but a year later I was a class or two away from a degree in math. My wife and I decided to add moving (again), wedding planning, and another thing to our life, so I didn't quite finish a degree. I received a bunch of As and a few Bs. It was a miracle. (No, it was a lot of hard work, and having seen the light which is the beauty of mathematics).
I've thought many, many, many long hours about the issues of open source development and how it might be made sustainable. I've had to, as it relates intimately to the reason I left my job and went off on this new path. I've got a couple ideas that I believe are very realistically workable. In short, the first go I'll be making at one of these ideas is, software is developed by a community which then makes the source code open source but not compiled into programs, and with no beautify logos or easy to use UIs. They then copy right that code for a month and charge non-members a small (think Spotify) amount to have access to the compiled, bundled, UI'ified versions that are encrypted with a monthly key. Then, at the end of the month, that software is all marked as "old", put in the public domain, and the keys are "unlocked". If the software is useful, the price is right, and the user is not a programmer, then they'll hopefully pay $10 or $15 a month even though they could use last months software for free. Also like Spotify, paying this fee would gain a user access to all the communities software. The subscription fees will be allocated to programmers who will be paid to work on software per rata according to some weighted combo of votes from users and votes by community members. Community members are, of course, free to work on whatever they'd like to in addition to that. Community members receive a payout from the subscription, basically whatever subscription revenue there is minus that paid out for paid development (per previous mentioned mechanism) minus operating expenses. You can only have your software in that "repository" if you are a member, and you must buy in to be a member, sorta like a co-op.
So, that was a very sloppy explanation, but hopefully you get the general points. My main point however, is, please don't go corporate. Even companies like Patagonia, though it is a "B-Corportation" for the public benefit, are clearly driven by the bottom line. How else could one explain why they charge $35 for 40 different types of hats. We don't need 40 different types of hats. But, it drives their bottom line, so that's what we get (albeit, in addition to the great things they also do).
"You know what I hate about f*cking banking? It reduces people to numbers..." You know, the line from "The Big Short". It's not just banking. It's any venture that is driven by the profit motive. Pure and simple.
Profit motive => Reduce everything to numbers
Not right away. Not in a loud and crash fashion. Not one person. But systematically, insidiously, creeping, all together, a step at a time, with the flash of amazing marketing departments and the financial soundness of a well disciplined finance department. Whatever it is you think you're doing, will be metamorphosed into the fungible unit of exchange, like something out of a Kafka book, both absurd and meaningless, while at the same time horrifying.
This 'comment' is very sloppily written because it is being written with some urgency because, (god bless HN, where else will I get to randomly interact with Prof. Stein?) I sincerely believe that you have changed the center of gravity in the world and this is an impassioned plea to keep on keeping on when it comes to helping us that are building a future where (given that intellectual property will clearly make up the bulk of our wealth) the wealth is a well tended commons and not a well guarded garden.
(Speaking briefly to the "academic" angle of things. I understand a bit what the atmosphere is like. I'm going through a divorce at the moment, and my wife just successfully passed her major comps exam and is on her way to a Ph.D. from Johns Hopkins in their political theory department. I am very happy for her and wish her the best, but my point is that, I get the pressures in academia to prioritize certain things while other things, which should really be valued and promoted, are totally overlooked or even punished. But, the business world is not the answer.)
That is such a ridiculous constraint. Do they mean that, if I start selling tapped water for $100 a gallon, the government can not provide its citizens with an alternative? Obviously it both can and does in many important areas (water, education, electricity, roads and defence to name a few). The decision on whether government should be active in a market should be based on an analysis of the benefits it can bring to society – be it savings, innovation or equality of opportunity.
I think this would be a waste of academics. Commercial software is not expensive (mostly) because of some secret sauce. It's because delivering a functioning product requires lots of work that is thoroughly mundane and repeatable.
Analogously, one could employ chemists to bottle coca cola or metallurgists to package hammers but that would be just a waste of everyones assets.
Should government make it's own pencils? I don't think so.
Good products require lots of work that is hard to be intrinsically motivated of.
I am not suggesting that the government should be involved in making pencils. But I do think funding independent development of open tools for research, education and other government-funded work is a good idea.
To support my claim, compare the cost of healthcare in the US, where the government relies on the industry to keep medical products and services cheap, with the price in countries where the government provides its citizens with an alternative.
Mathematics, Maple, Axiom, Maxima and other programs are large, multi-person, multi-year, multi-million dollar efforts with contributions by PhD-level researchers.
Axiom, I estimate, has about 300 person-years, over many years at IBM Research, with an estimated cost of 42 million dollars. People who invented new areas of computational mathematics were primary contributors. IBM sold Axiom and it was a commercial competitor to MMA and Maple. It is now open source (due to the good graces of the Numerical Algorithms Group, NAG)
Magnus, which I was also involved in, is much smaller and very specialized. It was originally developed by government grants but development fell off once that ended. Magnus was developed at City College of New York.
Based on that experience I feel that computational mathematics development requires company backing to develop any well-maintained and well-documented system.
The downside is that companies tend to die in less than 15 years:
"The average lifespan of a company listed in the S&P 500 index of leading US companies has decreased by more than 50 years in the last century, from 67 years in the 1920s to just 15 years today, according to Professor Richard Foster from Yale University."
and that's for LARGE companies. Small companies die quicker.
So what happens to computational mathematics when Wolfram Research (Mathematica) or Cybernet Systems (Maple), etc. dies? Does your MA* research die? Is there suddenly a huge black hole in the middle of computational mathematics? Can you no longer reproduce your results?
Mathematica won't be open sourced when WR fails because software is now considered a company asset. Even if it was open sourced, my contacts tell me that the internals are not well documented. Computational mathematics is REALLY hard to reverse engineer.
Somehow we need to make it possible to maintain, modify, and extend existing systems. This requires a few things, in my opinion.
We need academic (and grant funded) programs that specifically target computational mathematics. The goal is to develop a stream of people who have the necessary background, not to develop a new system.
We need to deeply DOCUMENT the ALGORITHMS so they can be reproduced in any of the existing systems. Theory is fine but programming involves design tradeoffs, such as a choice of representation, available functions, test suites, boundary conditions, reference results, etc. There are a dozen equations for things like the gamma function but some are better than others for implementation.
We need government focus. Computational Mathematics is vital and is fundamental research. We need a "summer of mathematics" workshop that involves all of the players presenting a reasonably unified approach. OpenDreamKit in Europe is doing something big about it now. The U.S. should step up and participate in some official capacity. Computational mathematics benefits everyone and should be an international effort.
I hope that SageMath can bring these things into focus and lead us to a better place.
Last I heard, they switched back to MATLAB. Having taught MATLAB, I wouldn't wish that on anyone. But if SageMathCloud had been around, it would have been a good option.
I may not have time to do a lot but i am gonna join in and help as much as possible. Documentation, bug fixes, whatever. This project deserves it imo
I have some thoughts regarding the comment on Slide15 (making Sage good for some applications): I see that python and Jupyter are very popular for machine learning and allied computations. Can SAGE leverage this to provide a service that a large audience would happily pay for -- and then use that to bootstrap a full fledged mathematical software? (Also, on that note, is there any coherence between the leaders of Sage and Jupyter?)
Basic interface with no requirement to log in, mentioned elsewhere in this discussion. Probably best for 'calculator' mode tryouts.
Academia totally sucks in this deeply ingrained ivory-tower mindset that metes out rewards/tenure/grants based on outdated performance metrics.
(Excuse the vitriol, former academic here.)
However, I felt there would be more innovation around the programming language itself (think decorators, generators, futures, compilers, and coroutines). The boundary region between "applied-math-programming" and general purpose computing requires a lot of sometimes tedious work. Having a general purpose computing language would mean that more people would be available for that work.
Even now, one of the principal challenges of NumPy which is the foundation of the Python scientific stack is that it combines applied math (fft, linear algebra, polynomials) with computer-science (type systems, data-structures, and multiple-dispatch functionals). Maintaining all of that with one group of people is difficult.
If we could re-factor the NumPy code base into 1) a data-declaration type system --- i.e. look at datashape.pydata.org which is a generalization of dtype, 2) a multiple-dispatch generic function system (the ufuncs) and then 3) a container object. These could all be maintained by separate groups (and even #1 and #2 could be pulled into the Python language itself). See the libdynd project for a reference example of what it could look like.
Then NumPy could be maintained as a set of math libraries on top of that.
Then, it would be relatively straightforward to build the octave DSL on top of the Python computing stack and we would be able to share work.
Julia is gaining marketshare and mindshare among grad student not just due to its speed, but because it is a more fun and intuitive environment in which to code mathy stuff.
These people will in turn filter into industry and if not them, then atleast their code.
Also macros. As Julia gains more utility for run of the mill data science, Its Dplyr like DSL abilities will be very attractive.
Do you see this type system and generic function library as useful for general purpose programming as well? How would that play with mypy and type hints?
Will you need to release these modules under the GPL?
The point is that, it should not cost significant continual effort to package SageMath for Debian: if SageMath was following good engineering practises, then Tim Abbott's work would still function today, even taking into account necessarily but normal and minimal maintenance costs that Debian volunteers (including myself) would be happy to do for Sage.
The challenge of packaging Sage was primarily around packaging its dozens of dependencies (some of which I had to talk to the authors to fix their licensing terms) and making sure that an up-to-date version of those dependencies was available in Debian. It took about a month of my time to package Sage well for Debian (at the time I maintained over 100 Debian packages for MIT, so I was quite efficient at this).
What killed my Debian packaging effort was that Sage was very large and my package was submitted to the NEW queue (where Debian does copyright review) when all the reviewers were busy with managing a release freeze. So it took more than 6 months for Debian's FTP masters to fully review it, and by the time they did, I had moved from being a grad student to the CTO of Ksplice. It probably would have been just week or two's work for me to update Sage across those 6 months, but running a startup is a lot of work, and I never found the time to do that work :(.
Overall, my opinion is that Sage is well-engineered and not difficult to package given its scale (it has a fantastic test suite, so it was very easy to check if the package worked, and it was easy to get them to merge changes to improve the tooling). The problem is that it's a large project, with a large number of diverse dependencies, new versions of which aren't always backwards-compatible upgrades. If you talk to the folks who package other large projects for Debian, I'd be surprised if you find any that don't involve significant maintenance work.
It would be great if you do pay someone to work on this, but please also keep in mind my points about continual costs. To reduce these, Sage upstream (you) does have to change some of its practises.
This is also being worked on and there's progress being made.
I'm still pushing to completely separate Sage-the-library from Sage-the-distribution. There's been a little pushback but nothing that can't be overcome with basic configuration management practices.
Although my personal work is more focused on Windows support for the time being, this is definitely on the docket. We had a workshop about two months ago in France focused specifically on packaging Sage, and there are some excellent folks from LogiLab who are making serious progress on the Debian packing. I hope to circle back around to that myself after I've made more progress on Windows.
The main barrier at the moment, is that sage patches many dependencies. It is better to upstream those patches, not only because it's good engineering practise, but also because it's unlikely that Debian policy (in practise: the admin, infrastructure, and security teams) would allow us to include (e.g.) a duplicate maxima-with-sage-patches in Debian, just to satisfy Sage.
OTOH if you "just want to" create .debs, the task is much easier. But then there's no chance of it entering Debian officially.
My counter argument is that we want to expand Sage's user base beyond a small core of researchers, and improve its usability as a Mathematica replacement for students and some scientists who are less interested in things like bleeding edge combinatorics research (they might be but not necessarily the majority). As a Mathematica replacement Sage isn't there yet, but it's good to get a head start on making easier to package and install, as part of that effort. Like for me, if it can solve some differential equations for me and do some integrals I don't care if the version I got through apt is a couple years old.
As for the upstream issues part of the problem there is that some of the upstream dependencies of Sage refuse to accept patches needed for them to integrate with Sage. That's a long story. I think the best approach there, which has already been tried in past approaches to patching for Debian, is to maintain Sage-specific forks of that software that include the necessary patches (IMO they should also be swappable with the originals via update-alternatives if possible). As far as I know there's nothingf legally preventing that, but more the effort involved in maintaining a fork and a package for that fork.
In the long term, I think, it would make sense to completely replace and rewrite some of the code that these external dependencies are used for. But in many cases there's an enormous amount of work involved, and that would only be possible with significant funding. And quite possibly not worth the effort compared to other ways that effort could be spent.
> Debian moves to slowly [..] My counter argument is that we want to expand Sage's user base [..]
Beyond that - "too slowly" applies only for "Debian stable"; and users that are OK with less stability can use "Debian testing". Usually this is quite bug-free; things only enter testing if it's been in "Debian unstable" bug-free for 5-10 days.
It's also much easier to get your software into Ubuntu, if it's already available in Debian testing/unstable - and that would likely expand your user base quite a lot.
> some of the upstream dependencies of Sage refuse to accept patches [..] [we could] maintain Sage-specific forks of that software [..] swappable with the originals via update-alternatives if possible [..] [or] completely replace and rewrite [it] [..]
Yeah, the situation is complicated. We could try different approaches for each dependency too, and perhaps some of them will change their mind. Debian does (on purpose) make it quite high-cost to maintain forked packages, in the sense that we would have to argue our way through many layers of admins of different systems, to incentivise us to get patches accepted upstream.
When you have time, could you write up the details of the situation on your end? Something similar to the wiki page I posted earlier - or you could also just edit that directly, if you wish.
I have another perspective though; I knew Allan Steel (Magma guy) as an undergrad at Sydney University. He is an extraordinarily smart person and humble and genial as well.
Everyone should be thankful to him and the University of Sydney for having the wisdom to fund the development of Magma.
He's looking for ways to make safe and open source software dominate. And there needs to be a lot of growth for that to happen.
TL;DR: Researcher A finds things he wants improved in Magma (closed source) but can't. Researcher B tries to write improved FOSS implementation, but lost his job, likely in part by spending too much time writing said code and not doing other things like writing papers. Researcher A moves on and has a successful academic career. Moral: writing FOSS can cost you your academic job; it's safer to find something else to do.
What will be the source of revenue? Dual-license? Support?
1) A lot of companies have policies against using software that they cannot buy support contract for (regardless of the quality of the support)
2) if there is an individual/small buzz reasonable option, a lot of companies and people like to pay for it as a way to given financial support.
Those large multiuser plans probably come out of grants, departmental budgets, etc. So they're likely not all that sensitive to price. Pretend you were still in academia, and had found online some great cloud-hosted software you wanted to use in a course, would it change your / your department's decision about purchasing that software if covering 70 students for a semester cost $400 vs $800 vs $1000?
sage: lisp('(+ 2 3)')
[Edit: Added Microsoft/Google.]
I really applaud William's effort to build a company.
I wish him all the best and will be willing to provide
what help I can.
I wrote an AMS diatribe http://www.ams.org/notices/201202/rtx120200320p.pdf about publishing computational mathematics, making several points, one of which was that
"Algorithm implementations are proprietary.
This needs to end. Science is not done behind a
curtain. At least, it has not been hidden since Tar-
taglia and Cardano fought over solving the cubic."
However, even if the Ma* software were suddenly open sourced it would be obvious that there was a huge problem.
Mathematics rests on several pillars which are currently absent in computational mathematics.
Mathematics rests on proofs. Where are the proofs for computational mathematical software?
Mathematics rests on research papers, books, and references. Where are the explanations of the theory behind the code? Where are the explanations of the design choices, such as which version of an equation was used and why? Computational mathematics needs much more than bare code.
Mathematics rests on courses and students. There may be one course but a whole focused curriculum on computational mathematics needs to exist.
Mathematics rests on funding. Universities, government, and some government organizations, like Oak Ridge, are the primary support.
William and I have had several discussions around our common problem of finding funding. I was the lead on Magnus (Infinite Group Theory) at City College of New York. We struggled for funding all the time. Axiom can't be funded because there is no organization to handle receipts. Funding agency like accountants.
Indeed, accounting is vital to open source funding. I contacted several large organizations asking them to set up an "open source accounting firm" (OSAF) which would accept and administer the grants to open source projects. OSAF would accept the grant, maintain the account, disburse funds for valid receipts, and maintain financial records for inspection. Such an accounting organization is needed if an open source project is going to get government or company funding.
If SageMath could handle the OSAF issue then the various contributing projects used by Sage could apply for grants from companies or government, knowing that there is an organization capable of managing the funds. This has the non-trivial side benefit of making SageMath the primary focus.
Oh, and SageMath could take the "overhead" (more than 50% at most schools) for "paperwork". My provost lived rather well on the grants.
Source: current Stanford PhD student