Again, it is great in general, but it has bugs and rough edges here or there, and a lot of people don't trust it for production. I wish there was a way for people to be properly compensated for building and maintaining such vital scientific and mathematical computing software.
I often see a lot of really mice Java frameworks with a .Net clone which gets much less attention (Hibernate, some of the Spring stuff, etc).
Whole I understand Microsoft is going their best to open up .Net, I'm hesitant to believe they'll ever get to the point where original implementations are done in it, and then ported to other langs - it just has a deservedly bad rep.
I think one thing that keeps C# things from being implemented elsewhere is that there are just very different styles between even C# and Java. Some fancy libraries will do lots of reflectiony things, build syntax trees, and compile on the fly for performance, allowing complex configuration to be simplified and get fast code at runtime. There's also a big culture of LINQ/functional style, and fluent interfaces in libraries, etc. which doesn't seem to be present in something like the Java community (at least until streams), whereas more dynamic/weakly typed languages don't have, for obvious reasons, a culture of strong typing and letting the compiler do the work for you.
Then when you go to the hardcore functional languages like Haskell, ML, etc. you don't have a culture of OO much, not to mention they just aren't used much in production environments.
So, you see a lot of things from elsewhere ported and brought to C#/.NET, but not a lot of things moving from C# to other ecosystems.
It also stings a little when people say that it's completely obsolete because Matlab itself is "legacy" and we should all be abandoning the language, Octave included... and yet, even though I like numpy and Python and matplotlib and Julia and R, I still find myself reaching for Octave whenever I need a quick visualisation of some data.
As to the "inferior" part, it really depends. Some people really like the Octave-exclusive features, but most are unaware they even exist.
It's a bit of a problem to innovate too much with Octave, because Matlab may decide to implement a feature we did first, but they'll do it slightly differently, forcing us to redo our work to match theirs.
My impression is that Octave always lags a little behind Matlab, both in terms of features and performance, since the matlab language is essentially whatever The Mathworks says it is. R and S-PLUS both have a somewhat formal definition in the form of books and articles, which might help keep them in sync.
I’m not saying there’s anything wrong with Octave, or R, or GIMP, or ..., only that it’s difficult to make money on it.
This is especially true for Octave though, because someone who wants to do exploratory numerical computing and doesn’t have a specific need for Matlab’s library ecosystem is likely to use Python or Julia or R or ...
Remember that Matlab's and Octave's biggest audience consists of not-a-programmer programmers, that is, people who consider using Matlab or Octave as being something different than using a "real" programming language. I call them not-a-programmer because that's what I've often heard them call themselves, even as they write Matlab or Octave code.
Yeah, William Stein can tell these stories too: http://sagemath.blogspot.cz/2015/09/funding-open-source-math...
But its a fine project and one that I use. For a collection of other projects it works better than most other individual projects.
"Every successful science library has the ashes of an academic career in the making" - Same guy
It sounds a tad unrealistic to me, unsupported by history.
It's as if people want to have it both ways: Create innovative SW, but also don't take risks or make sacrifices.
Offer software "for free" (and belligerently oppose even something like GPL), but also get paid (preferably by the government, so the people actually footing the bill have no say in it) and be long-term sustainable.
What's next: get paid, but also don't pay income taxes? Give away project control, but also keep it? :)
All understandable desires, but a little schizophrenic.
Disclaimer: I am a big fan of open source and NumPy in particular. I mentor students and OSS newcomers, I even pay one full-time dev to work only on OSS. It's just that I try not to kid myself about where the time&money comes from and where it goes, and I try not to have random people pay for my hobbies.
Extremely relevant previous HN conversion on this topic:
The authors of NumPy (and other scientific software) have made it possible for many, many people to do better, faster research, and their career trajectory ought to reflect that contribution.
Right now, it does not.
The NSF will certainly give you money to develop asymptotically faster matrix multiplication algorithms. They are much less interested in funding efforts that save an equal amount of researcher time by writing clearer documentation. Tenure committees would rather see 10 papers or 100 citations than a thousand pull requests, even if the last has a much bigger impact on the state of the entire field. If the authors of NumPy were totally rational, they would have written just enough code and documentation to publish something like "NumPy: A Python library for linear algebra" in the Journal of Statistical Software (or something), then moved on to something else entirely. All the work beyond that (assuming it's not supporting a future paper) comes at the expense of their academic careers. People certainly do it anyway--sometimes out of pride, or a sense of helpfulness--but they're certainly not rewarded for it.
They could be though. Funding agencies could give grants for the on-going development and maintenance of software that helps their grantees. Universities could consider contributions to the broader community as part of their hiring and promotion process, and so on.
The odd part is that this would probably be more cost-effective too. Even a $10M/5 year grant is just a drop in the bucket compared to what all NIH/NSF/etc grantees pay for Matlab or Prism licenses.
You're kinda undermining your own point there :-)
In any case: "force other people to finance my hobbies" is not my favourite ideology. I find the idea of some "tenure committee" deciding what I should do with my money mildly disgusting.
You're very cavalier throwing millions around, but you do realize this is money other people had to earn and tax first, right? And that these people might have preferred to contribute and support a different cause instead, perhaps something closer to their own heart and interests?
You agree that NumPy has been a huge boon to the scientific community and that BME (his previous field) has reaped the benefits too, right? Let's say NumPy has made minor (~5%) contributions to, say, 500 papers; this is probably a huge underestimate. If he had instead published (say) 25 papers, he would have a thriving academic career and yet his actual impact on the world would be a lot lower. Academia is really bad at rewarding work that has a broad, diffuse impact. In a better world, administrators and funders would recognize that his work on NumPy was sufficiently valuable that he wouldn't have had to choose.
I'm not sure this is the right article to get into "research funding==financing hobbies" debate, but...given that some research is probably going to be funded anyway, wouldn't you rather it be done in an efficient way? Right now, most academic software is a bit of a waste: it's written so that the authors can write a paper about having written it. There's no incentive to produce code that others can use or reuse, no reason to maintain it or update it, and so on. Individual labs can usually figure this out, but that also costs time and money which is coming out of the same budget one way or another.
First, I'd question that a "sacrifice" that leads to such spectacular success is really a sacrifice. Perhaps "investment" is a better word?
I'll concede there are risks involved, outcome uncertain, stressful days... but that's in line with calling it an investment. These go hand in hand. You simply cannot create anything of value without a struggle, and to think otherwise is to ignore the human nature and the history of pioneering new grounds.
In any case, my original point above was that success cannot come without some sort of personal investment. I believe removing risk from potentially high-reward activities is an oxymoron, economic nonsense. Risk and reward are two sides of the same coin.
And if the activity is low-reward, it's just a hobby.
Masking this risk-reward connection by forcing other people to cover the risk side for you just creates perverse incentives and social aberrations. Think bank bailouts, for an extreme but inevitable example of where this line of reasoning leads to.
You seem to have this image of an honest academic, toiling away on OSS at nights, standing up to committees like Galileo, the proverbial Travis. You'd like to help him lessen his burden by a better redistribution scheme of grant money -- a commendable goal.
What I say is if the toil is worthwhile, Travis will be rewarded anyway.
In addition, there are throngs of less honest people you don't seem to consider. These people exist too and always jump out of the woodwork, given the right incentive of less-risk-more-reward. Simple economic arbitrage, a law of nature.
What I'm saying is, such system cannot work, no matter how lofty its ideals: it doesn't help the good, it promotes the bad and unscrupulous, and morally corrupts those on the fence.
NumPy is unusual because it's so broadly useful: physicists and neuroscientists can use it (like original authors), but so can quants and ad analytics folks and other people with serious budgets. Enthought and Continuum exist because they can tap into those markets, and, as a result, Travis (&ct) ended up doing very well--and justifiably so. However, most scientific software is more specialised or lacks this industrial backstop, and I don't see how they could follow a similar path. There's no serious industrial application for spike sorting, for example, but it's very important to neuroscience research.
I'm not sure I understand your concern about throngs of dishonest people, or least how it is any different from the status quo.
I am not imagining a system where money and jobs are just thrown around. Instead, I just want minor changes in hiring and funding. Academic promotion/hiring already weighs a bunch of factors: publication record, funding, peer evaluations, teaching, and various forms of service. I think writing and maintaining a widely used software package is currently under-valued there. Maintaining very popular packages might be treated as editing a journal, another form of academic service that does seem to count for something.
Similarly, it is (comparatively) easy to get money to develop new methods and write some code implementing them. There ought to be a complementary funding stream for maintaining successful packages once they are written. You could imagine a BAA-like process where applicants say, "My toolbox was downloaded 2,182 times and cited in 378 papers last year. However we've got a bunch of open issues including integration with X, Y, and Z, missing documentation for A, B, and C, and so. I want...20% salary support to work on this over the next year and $10,000 for a freelance technical writer." As with other grants, these would be evaluated (potential impact, proposer's track record, interactions with other funded programs, etc).
I realize there are alternatives. Stephen Wolfram essentially took Symbolic Manipulation Program "private" and funded Mathematica development by selling subscriptions. It worked for him, though I think that's asking people to assume a huge career risk or change that they might not want.
I wonder the SageMath guy ever considered something like the NIH's SBIR program (a scheme for setting up small businesses based on research).
The just want to write some specific software they enjoy writing together.
The question rather is: after said software has been proven valuable and widely used by companies, and when there remain some hard and/or non-enjoyable parts to be done to complete it/enhance it (specific drivers, documentation, advanced features, etc), why don't any of the users donate some money to help?
In some cases, "paying extra" without being asked to might even be compromising your fiduciary duties.
I feel the open source movement has spoilt its "user base" a little. There's very little expectation of reciprocity. Sometimes even outright hostility toward OSS modes that try work with reciprocity (check out the linked HN thread above).
This mindset might be hard to reverse at this point. As with all "communal sharing" experiments, the true crunch time comes as the economic reality sets in.
Maybe the open source communities should register as charities then? They do charitable work after all...
But this isn't even the whole story. As we all know, designing and implementing a program or library is often just the first step. Someone then has to maintain that code. There is absolutely no incentive for anyone to maintain these. Institutions will fund new software because they expect a paper to be published about it. But nobody is paying anyone to maintain this stuff.
For example in numpy case - https://github.com/numpy/numpy.org/issues/9
That's a request in March 2017 to add a donation button to the website. Im not sure that 6 months back, if Numpy was legally structured to receive larger funding.
I posted a similar comment (with many more replies) in the context of Octave and it's funding https://news.ycombinator.com/item?id=13604564
Tl;Dr Don't ask for donations - instead sell "gratitude-ware"
There are tons of people who WANT to support these projects, but you have to make it easy and accountable to do that. The best example that I usually give is Sidekiq.
@mperham is awesome that way
"This is exactly why I disclosed my revenue: people won't know there's a successful path forward unless it's disclosed. I want more OSS developers to follow my lead and build a bright future for themselves based on their awesome software."
In fact, I believe there's a start-up to be done here. "Stripe Atlas for Open Source software"
30 people? I remember a time when a certain fruit company would enter a field, literally hire all 30 of those guys, and put them behind closed doors. Then in 2 years they'd dominate the field for the next decade.
Are these guys turning down offers? Or is the fruit company that poorly managed now?
And almost by definition, "those 30 guys" building and maintaining a library with their volunteer labor in some "field" (that didn't exist as such until relatively recently) mostly won't have standard-looking career paths.
Sometimes there is a critical mass of those folks concentrated in a company, prompting an acquihire.
(I'm NumPy dev who works at Google on machine learning.)
Apple also used to buy the entire world supply of sapphire for phones and the entire world supply of flash memory for music players. Literally, nobody else could compete, because Apple contracted it in bulk, first.
Those days seem long gone now. Today Apple takes 5 years to update their Pro desktop, while at the same time, making fun of people for using 5 year old computers.
The tools for scientific computing are amazingly scattered - seems like a big company with a modern platform strategy could make a huge impact ...
(Not to mention I thought it was hard to imagine anybody around here being unaware of the most capitalized company in the world. Aside from maybe Saudi Aramco.)
Speaking of old, I used Reddit as my main news source for a while, and I remember /r/programming having a post celebrating 65,536 users. Now it's over 10 times that, and there are more than three subreddits.
Is there a difference between the "sole developer problem" and the "lack of funding" problem.
I mean, even if a project finds funding, does it follow that it will attract more talented developers?
One way to distinguish the two issues is to look at for-profit software. In the cases where there is one primary developer, do they find it easy to keep the software going when the person retires?
I ask this because, I think, beyond the very real monetary issue, there is a question of how development works. Do we need one very talented individual who does the lion's share of the lifting?
It depends on what the funding is used for. Outreach in various forms (better documentation, presenting at conferences, a nicer website, moderating community venues from mailing lists to chat channels, triaging and grooming issues and PRs, etc.) takes time and effort (and therefore needs to be funded) as well.
I knew what I was getting into when I wrote NumPy. I knew there was not a clear way to support my family by releasing open source software, and I knew I was risking my academic career.
I did it because I believed in the wider benefit of ideas that can be infinitely shared once created and the need for software infrastructure to be open-source --- especially to empower the brightest minds to create. I did it because others had done it before me and I loved using the tools they created. I hoped I would inspire others to share what they could.
There have been a lot of people who have helped over the years. From employers willing to allow a few hours here and there to go to the project, to community members willing to spend nights and weekends with you making things work, to investors (at Continuum) willing to help you build a business centered on Open Source.
There are many people who are helping to fix the problem. In 2012, I had two ideas as to how to help. Those who know me will not be surprised to learn that I pursued both of them. One was the creation of NumFOCUS that is working as a non-profit to improve things. The second was the creation of Continuum (http://www.continuum.io) to be a company that would work to find a way to pay people to work on Open Source full-time.
We have explored several business models and actually found three that work pretty well for us. One we are growing with investors, a second we are continuing with, and another we are actually in the process of helping others get started with and ramping down on ourselves.
Along the way, I've learned that open source is best described in the business world as "shared R&D". To really take advantage of that R&D you need to particpate in it.
We call our group that does that our "Community Innovation" group. We have about 35 people in that group now all building open-source software funded via several mechanisms.
We are looking for people to help us continue this journey of growing a company that resonantly contributes significantly to Open Source as part of its mission. If you are interested, contact me --- I am easy to track down via email.
I ask because for Octave this is a non-negotiable requirement. Partly because of the GPL, but mostly because we really do believe that the whole point of Octave is to get away from non-free software, as a matter of principle -- if you want non-free software, there's already a Matlab. Is there any way to generate enough money without a EULA?
You can generate money only through free software, however. Here are three approaches I have found: 1) Consult on projects that use the free software and use some of the profits to support that free software, 2) Sell enterprise-grade support on the free software to big companies. This is much more than just help-desk and answer the phone. All commercial software comes with a big contract. You provide the same kind of contract just no license restrictions. Others can do the same and so you have to distinguish yourself by either having all or most of the experts on the software or just really good marketing. 3) Dual license using GPL3/AGPL for the free version and a commercial license and then aggressively go after people for GPL violations if they don't get the commercial license.
I don't like the relationships created by the third model ---
your sales processes become aggressive and counter-service minded by definition. I don't see it scaling and really providing value.
The other two are really hard to impossible to get investors exited about and therefore you struggle to get the capital together you need to prime the customer pump.
There is a another general model with many corollaries where you basically "do something else" that uses the software as a critical part of the business and let the profits of that activity fund open-source development.
A lot of open-source these days is actually funded by this kind of activity (or from VC's hoping to profit from a promise of great wealth from this kind of activity).
Open source projects are typically started by people working in the field, who have a strong urge to scratch some itch. Even if we find a way to find money for them to work full-time, they often don't have the desire to "productize" software, or to create/nurture/govern an organization around bringing together different stakeholders who might be able to use, or contribute to the software. (We got really lucky with Linus+Linux)
( http://gnu.org/s/emacs )
Even setting aside the fact that the people that can do this work are few in number, the vast majority of people need a way to support themselves and their family. If the number of people that have these skills is low, the subset that is both altruistic enough to donate them for a sufficient period of time and personally able to do so must be vanishingly small. (And the negative feedback a lot of OSS maintainers receive doesn't help.)
Companies have the same issue... there has to be a fairly direct connection between an expenditure (paying developers) and a return on that investment. That can be a very difficult argument to make.
Right now, Webpack has $99k; which is respectable. That's a decent annual salary for a full-time developer that lives anywhere other than Silicon Valley or NYC. But, it falls off a cliff after that. Next is MochaJS at 16k; that's two months salary, maybe three or four in cheap places. After the top twenty projects, you're closer to nothing than you are to something. The time it takes to set it up would be worth more than it'll return (there are lots of $0 projects in the list).
Maybe it'll improve with time. I dunno how long this project has been going on, and it looks really well done. It's just that the numbers are abysmal. I hope it'll improve. I wish we had a way to fund our software without having to sell a commercial version...but, it's so far from realistic, we can't really even consider it.
I've been making my living from OSS for ~20 years now, and it's the great curse and tragedy of the thing that because the software is free, there's an incredibly pervasive belief that tiny sums are sufficient to keep a project afloat.
We tried, very early on (~14 years ago now), to crowd-fund some major enhancements to our software...we raised a total of about $15,000 (this was long before crowd-funding was a thing), which to a lot of people seemed like a lot of money, and it caused a lot of folks to feel extraordinarily entitled to specific results (e.g. because they contributed $200, they assumed it would mean we'd develop a big feature they were the only person asking for, and that would take days or even weeks to build and test). But, for two developers working full-time on something, $15,000 is practically nothing. Most developers just don't have the freedom to trade in a full-time job paying market rates for a sub-poverty annual wage. Realistically, we couldn't commit full-time to the project until we started a business based on it that brought in predictable, recurring revenue. And, we couldn't effectively do that without providing things that the OSS version didn't have. OSS is a really tough way to make a living, is what I'm trying to say, and I don't know a lot of people who do it successfully without being employed by someone that does a lot of non-OSS stuff, too.
After getting through basic of "Introduction to Computer Science Using Python" and forever pending goal to become a "Python Developer", is anyone here who is experience in Python willing to be my mentor? In return, free Python labor. :)
Of course, the best outcome would be to make something that other people want to use. This would get attention and further validation. So if you find a project you're passionate about---the "I built it because nobody had yet" thing---then that would be best.
A French point of view (after all, France invented VAT...) would suggest to introduce a taxe on software engineers salaries (1% ?) and redistribute this fund on most used languages/frameworks/libraries and use a part to sustain a new projects.
So while a part of SE are maintaining stables, other part of SE don't want to pay for horse. I think this last part of SE are killing their own jobs.
If you want to fund open source using tax money, then fund open source using tax money. Trying to implement a special Open Source Tax and apply it only to those that "profit from" open source seems both counterproductive and virtually impossible.
Not everybody is made to only work for money.
As I was thinking about it, though, I'm not surprised NumPy hasn't been funded before. The reasons why say a lot about biases in memory.
It wasn't that long ago that the sorts of things NumPy does were seen as fairly niche, and in the domain of statistics or engineering. It's only with relatively recent interest in AI and DL that this has been seen as within the purview of Silicon Valley-comp sci-type business, as opposed to EE or something different. I still am kind of a little disoriented--the other day, looking through our university's course catalog, I realized that certain topics that would have been taught in the stats or psychology departments are now being seen as the territory of comp sci. Statisticians have written excoriations about being treated as if they don't exist, as comp sci blithely barrels forward, reinventing the wheel.
I'm not meaning to take sides with these issues, only pointing out that I think the world we live in was very different not so long ago. It might seem puzzling that NumPy hasn't had more funding, but I think that's in part because what it's most profitably used for now wasn't really seen as much more than academic science fiction not too long ago.
The other part of it too, is that until relatively recently, if you were to do numerical heavy lifting, you'd almost certainly be expected to do that in C/C++ or maybe Fortran. There's a tension in numerical computing, between the performance and expressiveness that's needed, and Python is on one end of that continuum, far from the end that is traditionally associated with complex numerical computing. Sure, you had things like MATLAB with Python in the same functional role, but those were largely seen as teaching tools, or something that engineers did for one-off projects, having learned to do that in school (I still think the use of python in ML derives from the use of Python as a teaching tool in uni).
I'm not trying to knock Python or NumPy or anything, just kind of trying to convey a different perspective, which is that I can remember a time not too long ago when the use of Python in numerics was seen as primarily didactic in nature, or for limited circumscribed applications.
> "And if you’d like to take action to contribute to project sustainability, consider becoming a NumFOCUS member today."