Hacker News new | past | comments | ask | show | jobs | submit login
Free Wolfram Engine for Developers (stephenwolfram.com)
606 points by GWOLF 29 days ago | hide | past | web | favorite | 337 comments

> Why Aren’t You Using Our Technology?

It’s not open source.

Even if the engine is “free”, I don’t want to build an open source product with it and hope to be granted a “free production license.” If I build something on my own time I don’t want to ask my employer to purchase a “production license” as soon as it becomes useful.

Wolfram believes that mathematics software (or “computational knowledge” or whatever he calls his entire enterprise now) must be proprietary and paid-for in order to exist. Maybe it’s true; all of the successful and wildly popular computer algebra systems are closed source. (wxMaxima is rough to use, Axiom has 3 or 4 different forks, each with fewer than 10 developers, SymPy just isn’t there, Sage is absolutely wonderful but not polished or easy to deploy, ...) But that’s completely at odds with how most software engineers work these days. Most software is grounded in an open source development and deployment tool chain. There is a market for proprietary developer tools, but it had been dwindling since its prime-time in the 90s.

I think Wolfram needs to think quite hard about how he wants to get his technology in the hands of developers while maintaining a business. Not that my opinion matters, but if he can manage to do it by open sourcing Wolfram Language, Wolfram Engine, or something like that, while keeping his business intact, I might again consider him to be the genius he was lauded to be in his 20s.

>But that’s completely at odds with how most software engineers work these days. Most software is grounded in an open source development and deployment tool chain.

Imagine saying this with a straight face. Maybe in web development, but the vast majority of programmers are using closed source tools to produce closed source software.

You're either thinking of a tiny picture vs the whole picture (web devs vs programming in general) or you honestly have zero concept of what programming looks like outside of web apps.

I’m open to being wrong, but my domain is not and has not been web apps. It’s mostly been things like satellite antenna control software, quantum computers, scientific computing, and AI. Each of those domains, in my experience, has been firmly grounded in open source. (It does not mean, of course, that the end product is open source.) I recognize there are some domains that are steeped in closed source solutions with closed source developer tooling with no viable alternatives, but IME—as limited as it may be—it’s uncommon.

What programming language stack do you (and a lot of other developers) use that’s closed source with no realistic open source alternative? It’s not C, Python, Java, Ruby, JavaScript, Lisp, Fortran, C++, PHP, Perl, Go, SQL, Rust, Objective-C, or Swift? (All of these, of course, not only have industrial strength FOSS implementations, but the first or second most popular implementation is the FOSS one.)

I'm not disagreeing with you, just answering your honest question:

>What programming language stack do you use that’s closed source?

Verilog/System Verilog (generally HDL/FPGA/ASIC design/verification).

Yes, it's a niche (some may even say it's not software, it's hardware, but it is indeed a large code base that requires a software engineering environment/toolchain/practices/etc...). Again, just answering your question for the benefit of the discussion. It would be interesting to hear of others such closed source areas.

Kdb is a very niche product that has open source alternatives that are made use of by the rest of the software industry outside of FinTech. It's not bad, it's just not what the market wants to use because it's a closed box.

Wikipedia has an article on Time series databases and they contain a short list of popular TSDBs [0]. On that list 11 are libre-software to some degree and 4 are commercial. Relational TSDBs are new to the open source space but they're still being built despite there being the existing kdb+. This shows that people will spend considerably more funds to engineer a replacement (and give that replacement away for free) to avoid using a closed source product for this use case.

[0] - https://en.wikipedia.org/wiki/Time_series_database#List_of_t...

Unfortunately, there are no open source alternatives to kdb+. Effortlessly handling hundreds of terabytes of data on a single machine, while consisting of only a 300 kB (yes, kilobytes)... Nobody even came close.

Market adoption could be better, but the license costs around $100,000/year (probably the most expensive software per kilobyte). Fintech can afford it, other industries can’t.

You'll also end up spending at least that much on consultants. While KDB is remarkable in many ways -- the first time I saw it I thought the demo was fake, the performance so great -- it is very difficult to develop in.

They have a an SQLish interface, that allows non-specialists to get work done, but anything serious needs to move beyond that.

I haven't used it in a few years, but queries had to be carefully optimized -- swapping the order in a where clause could cause order of magnitude differences in performance. Also it is append-optimized. If you need to update or insert data, it is a nontrivial exercise.

Regarding being append-only — these days, where reactive programming, immutability and FP are all in vogue, this is a feature. As for the rest, yes — K/Q are idiosyncratic, but they are simpler than it looks at first sight (and second.. and fifth). :)

> Effortlessly handling hundreds of terabytes of data on a single machine

Single machine, because it can't handle parallel queries, at all, and there are no options to scale it.

Every financial institution I've worked at is busily unwinding their investment in q/kdb. It's legacy tech.

What are they moving to?

Other TS products like OneTick, RDBMSs for TAQ (esp. if you need non-TS indexes), streambase for UI backends

I even met a programmer who hacked something together in Java using the same columnar kdb layout but, you know, multithreaded, so different basket optimization jobs could run simultaneously on the same store.

Now there is shakti, https://anaconda.org/shaktidb

This seems pretty much next generation k.

We can see how things goes.

kdb is frequently described as an in-memory database, or with great emphasis on how efficiently it utilizes a ton of RAM. I've no idea how much does its performance actually drop when the amount of data goes past, say, 2x the amount of available memory, but I'm pretty sure hardly anyone can afford multiple terabytes of RAM in addition to the software license these days…

You wouldn't happen to be a commentor/author for this Reddit post[0], would you? Your sentiment here seems quite similar. I have no experience at all with hardware design, but it seems like that domain is especially geared towards closed-source for specific reasons.

[0] https://www.reddit.com/r/FPGA/comments/a5pzs5/prediction_ope...

That is an interesting post. I think there are two other potential ways FPGA tools could become open source:

1) If there are some widely used open hardware devices or open standards. The fact that FPGAs are proprietary designs and can't be copied is a significant barrier. If there was an analogue of ARM in the FPGA world that could open up open source dev tools too.

2) DIY FPGA. This one is almost certainly much further down the road than any of the other options. But if fab and design tools of the chips themselves become a commodity then there will be open source dev tools. It used to be pretty difficult to make a custom PCB, but now with PCB as a service open tools are seeing more use. I think the reason this is so far down the line is because fpga offers cutting edge performance for specialized applications. If you wait several generations or are ok with reduced performance then you can stick with generic CPU/GPU. With Moore's law running down there may be more and more things that aren't possible without fpga. And I don't think it would be until then that open source dev tools follow more diy fpga.

There are open FPGA synthesis tools, SymbiFlow/IceStorm for example:


There is an open FPGA hardware implementation:

https://github.com/haojunliu/OpenFPGA https://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-4...

More resources:


No, that's not me. Interesting points though.

For my comment I was thinking about HDL simulators, which are very expensive/proprietary tools (vendors like Synopsys, Cadence, Mentor Graphics), with a lot of vendor lock-in, but yet are based on standard/open languages: Verilog/System Verilog. I know there are some open-source simulators that have been around for a while, but they aren't widely used, and the big 3 EDA vendors still seem to have a strangle hold on the HDL simulator market.

Simulation is generally more important for ASIC hardware than FPGA hardware, since you can quickly iterate on an FPGA design with logic/design fixes, whereas with ASICs design iteration can be prohibitively expensive and time consuming.

I think hardware stuff is an expected exception because there are basically no open-source architectures.

RISC-V was explicitly created to solve the problem of their being basically no open source architectures, and it's still fairly new, so it really is the exception that proves the rule.

Yep, but AFAIK they don't see much use in industry. There are people trying to change that, but they haven't succeeded yet.

MIPS gets used a lot in routers, it only went open relatively recently though.

I agree in terms of the equivalent of standard libraries. Ex: if you want a DMA engine, a PCIE interface, Ethernet, etc... you either have to build that from scratch, or buy IP from a vendor, there's not a lot of open source. There is opencores.org, but when a company is investing a lot in their own hardware design, then tend to want higher quality, or more recent/updated designs.

But the IC/hardware toolchain is a separate issue from the design itself. It's largely proprietary, probably due to the niche market and large R&D costs involved in some of the tools.

If you know of any chips taped-out, and shipping in volume, that used any of these as their primary tool, I’d be very interested to know more about that.

I’m aware of chisel used to verify some RISC-V cores that were fabricated, but that’s a research POC, not a volume/production ASIC.

All of SiFive's chips use Chisel, it's our primary design language. We use commercial tools post-Verilog (ie, synthesis and place+route). We use Verilator for some simulation, but also use commercial Verilog simulators.

We have chips shipping in volume.

Chisel was used to do Google‘s Coral TPU, although most likely they used commercial simulators as backend.

Those are still mostly scientific domains, and science has been rooted in open source. Most mechanical and civil engineering, on the other hand, is done in Matlab scripts and proprietary simulation frameworks. Matlab is Wolfram’s chief competitor, not Julia, R, or Sage.

Yea, AutoCAD is huge for Civil Engineers and Matlab is also pretty big for many engineering students, academics, and research professionals. I think most of the heavier users in industry used it all through grad school and then brought it over into industry. Most of us engineers that just have a bachelor's degree weren't as firmly rooted in Matlab and just picked up Python as our first post academic language. Both are good. Matlab has some advantages like bundling suitesparse (world class linear algebra subroutines)and handling the license of that so you don't have to get one yourself (assuming you want to sell your product).

I think Python definitely wins as a scripting language lingua franca though. It is free as in beer, open-source, available on any OS I care about, and most of the software I use has a built-in Python API.

Mathematica is big in academic math and physics programs, but I haven't seen it in industry as much as Matlab. Believe it or not, my company had a major accounting application written in Mathematica, so it does pop up in weird places.

An exhaustive list would get tedious pretty quickly, but I'm imagining that using this engine would be roughly equivalent to building around Rogue Wave IMSL libraries or Mapbox Atlas.

It seems like using the SDK in your language of choice would be a reasonable way to leverage the engine where it makes sense.

>It’s mostly been things like satellite antenna control software

IME even getting binaries from an antenna vendor can be like pulling teeth, are there some good open source solutions out there?

I was involved in the software stack for developing antenna software for the antennas themselves, which used a Linux stack with C (and even Lisp!).

>What programming language stack do you (and a lot of other developers) use that’s closed source with no realistic open source alternative?


There are open source alternatives to Matlab like gnu octave

And also Scilab I believe. Though last time I used them, Scilab felt quite inferior to Matlab. (6-7ish years ago)

Matlab lives from all the other toolboxes around it. It's not just the "coding" part.

Even when proprietary software is used in these types of fields, like vworks,the source is available for you to build. I wish more proprietary software would include the source when you purchase a license.

>What programming language stack do you use that’s closed source?


Cadence, Synopsys, mentor, code-meter, muneda and many more

You're either thinking of a tiny picture vs the whole picture (web devs vs programming in general) or you honestly have zero concept of what programming looks like outside of web apps.

To give some more pushback on this assertion... I've been developing software for 21 years now, and the only positions I had where there was negligible open-source software were in the first couple of years (in the automotive firmware space [OnStar], and a brief stint in some defense contracting). For the last 18-ish years--firmware, systems, enterprise, virtualization, demos, security--everything I've worked on has largely been based on open-source software, or the product was open-source itself. What I've never done professionally: Web app development.

Honestly, I think it would be hard to overstate the prevalence and impact of open-source software in the field of programming (and really, the entire tech field).

You could have phrased that in a far less confrontational manner. Claiming someone you don't know has “zero concept” is unnecessarily confrontational, all the more because you're doing that while simultaneously claiming to represent a huge and varied field with absolutely no cited sources for that claim.

> you're doing that while simultaneously claiming to represent a huge and varied field with absolutely no cited sources for that claim

I suspect it was phrased strongly because the GP made the same claim in the opposite direction: "Most software is grounded in an open source development and deployment tool chain".

> you honestly have zero concept of what programming looks like outside of web apps

Are you serious? I don't do web apps. But almost 100% of our stack is based on open source technologies. Python, Twisted, Go, etc. Every single thing we use is open source.

It is ironic that you are accusing someone else of having zero concept of what programming looks like outside of web apps when one could easily think the same thing about you.

And then you go and quote three examples whose primary use (and for 2 out of 3, their creators and/or creator companies where web developers).

And even most Go software is proprietary, hidden behind Google's bar.

You can create closed-source software using open-source software. That’s how Google made so many billions and that’s probably why the AGPL exists.

GCC was so revolutionary because it brought a pro-level (although not at the start) compiler toolchain for free and allowed developers who were so inclined to improve and modify it.

And lots of Python code is for things like machine learning, Go runs lots of DevOps/neo-infrastructure stuff, and I can’t comment on Twisted.

The parent goes too far in one direction and you go too far in an other. I work in embedded linux development and my entire toolchain (kernel, userland, compiler, flashing tools, and desktop environment) are 100% open source. I suspect that people who target Windows or Mac OS might be in a different situation but that's to be expected, when you target a closed proprietary environment you end up having to use closed proprietary tools.

Admittedly I go out of my way to avoid including closed source components in my work but that's not just an ideological decision. As the parent points out, and especially when you're a developer, there's a massive amount of freedom and power to open source tools. Don't like something? You can tweak it any way you like. You don't have to worry about the IP owner pulling the rug from under you without notice. I want to use that code on my MIPS32 target? I can try to port it, I don't have to beg the vendor to release a version just for me.

If anything in my experience the archetypal "modern web dev" crowd (the one that got into programming through Javascript, basically) is the one that benefits the least from this because often they don't dare to patch their window manager or their shell to customize them. These days C is often considered a weird arcane language, something like the Latin of CS (including in this very forum) so people don't feel empowered to modify these applications. The fact that modern DEs like to treat their users like slow children instead of exposing the tools that could help them become "power users" probably doesn't help.

Then of course for people who don't actually try to read or modify the source of the programs they use "open source" is more of a political statement than anything else. There's no real benefit for them.

I'm making generalities of course, I'm not saying that all web devs fit this description.

I hope this trend will change as newer, more "friendly" languages like Go and Rust make forays in the system programming space. Hopefully that'll motivate the new generation to get over their fear of system programming and start embracing and customizing the tools their use.

Using a Mac. Can confirm that almost everything that’s actually built upon by other stuff is open-source. Even much of Apple’s development software is open-source.

"Even much of Apple’s development software is open-source."

Not at the GUI level. Xcode and Instruments make use of open source toolchains underneath, but aren't open source themselves, nor are the Apple frameworks they're built on.

There are many programmers making closed-source software using open source tools. For example, anything that runs on an embedded Linux platform is built using open-source tools (e.g., GNU compilers and open-source libraries) and is usually closed-source. There is also anything that runs on an open-source interpreter (e.g., Python), which includes a lot of things that aren’t web apps.

In applied math, data science, statistics, the OP is right: free software is the norm.

I’ll add to the list: mathematical modelling, optimization, control, essentially all machine learning, etc.

Except for perhaps optimizers (which some of the best are closed source, e.g. Mosek), the entire rest of the stack is open source.

Yea, I was going to say that many solvers are closed-source and incredibly expensive and have very restrictive licenses (basically all the good ones).

Cholmod is arguably the best solver for linear systems and it is free software.

CUDA is not open source.

Without the proprietary and exclusive hardware, something like CUDA would DoA. Wolfram is trying that, as MathCad and Maple did back in the day and still MATHLAB kind of pulled off (Octave is coming though). This is a pretty steep slope they're fighting against because many programmers don't want to give away that sort of control easily. I remember when closed-source SmallTalk was the norm in the 90s, also Fortran systems or EIFFEL. Borland, Delphi, Watcom did okay for some time but they didn't lock you in so hard - it was "something standard with extensions" (a bit like C# which by the way, I avoid on these grounds alone).


Neither is the hardware, nor is Intel’s or the Motherboard’s, etc. Would it be ideal? Sure. Is it possible to have every level be completely open source? Maybe, but you’d struggle.

I still believe the point is clear, though.

Ah, you're right! The whole stack is open source if you ignore the non-open-source parts. (Intel compilers are also popular, by the way.)

Look, the point here is to be as open as it is to be practical.

In my lab, we attempt to use as much open source software and parts as is possible without literally spending years waiting for RISC-V to become mainstream along with fully open source GPUs and computing cores, open motherboards, RAMs, etc... this doesn't even include fabrication or other useful software which runs our machines (do you want to have a several-million-dollar photolithography machine running on poorly maintained OSS?). Yes, should that machine be open in a perfect world? Of course, that would be incredible and in the spirit of verifiability. But right now it is not and there is little we can do about it.

It's clearly impossible (or completely and utterly impractical) to pretend that somehow everything can be done in a fully open source way, and it's easy to go down the rabbit hole pretending to be on the high horse of "our stuff is more open." My point is that what can be made with OSS, we almost always attempt to make with OSS, not everything we make is perfectly open and transparent, because it literally cannot be without so much effort as to render the entire thing completely useless.

So, sure we use Mathematica in some things when the OSS alternative is mostly unworkable or unusable, but by and large we attempt to be as open as possible such that people can verify our results without needing to spend thousands of dollars on software whose internals we don't generally know. Do we rely on Intel software and hardware which could have another floating point bug? Sure. But it's hard to be at all productive if you don't at least assume a bare minimum, even if that standard is not completely open.

No, your point is still extremely muddled. Cuda and Wolfram are both compilers/runtimes, they fill exactly the same role of translating high-level code into something that can run on hardware.

But I'm not so sure it would be ideal. There are things which thrive better as closed source. I prefer closed source IDEs, they tend to be better designed with better long term vision. Most open source projects suffer from a lack of long term vision, tight design, and funding. There are some which do well in those, but not the majority... There are quite a few things that thrive better as closed source which would have little chance as open source projects.

Proprietary closed source has a built in mechanism for funding. That's a major plus.

> I prefer closed source IDEs, they tend to be better designed with better long term vision.

Like Intellij?

There is an open source project to compile CUDA code for devices that support OpenCL 1.2:


Excel? SAS? Stata? Matlab? All are very popular tools in data science and statistics. You could argue that open source tools have become more popular recently, but I would hardly call open source software the "norm."

Really depends which niche you're in. Matlab for example is also a major player.

Not in production environments. Push is (as it should be) towards open source.

Mathworks' revenue is $1bn, it has doubled in the last decade. Someone may be using Matlab.

A ridiculously large number of people use Matlab as a tool. I can't think of a single engineer that doesn't curse its name regularly but I've yet to encounter any actual applications written in it.

It's Excel for engineers.

I have seen people doing amazing and complex things with Matlab, including fancy GUIs and stuff. But it is almost exclusively used for internal tools as far as I know.

I think this often happens anytime there is a large amount of legacy software written by folks that had software has a tertiary skill on their tool belt.

The Matlab IDE is not bad though and is a lot like Python's Spyder IDE. Also, a lot of Matlab commands have fully browsable source provided I've been told.

I think there are people in applied math data science and statistics who use Windows and OSX.

Most programming languages are open source (or have an open source skin). Most frameworks in any language are open source. As are most commonly used libraries.

Really? OpenJDK, .NET Core, gcc, etc. are quite popular outside of web dev. What we really need is an open source implementation of the Wolfram language (a side project idea I've had for a while.)

C, C++, Fortran, Haskell, ML, Anything .Net, Rust, Java, Go, Linux etc. Are all open source so I think you are correct but way off in terms of scope

That is true, to some extent, but the cost of commercial software makes my company think really hard before we go that route. It has to have a clear and obvious value, or we are reluctant to seriously consider it.

I'm not talking about the dollars, that's relatively minor. It's all the things around it, especially with licenses becoming more complex, including core counts, including all these weird provisions related to when and how and what features can be used in dev and staging and production, what versions of other software they can work with, etc...

The software that we can buy and just use without thinking about it is great, but it's really few and far between these days.

We can spend weeks or months analyzing the things surrounding the commercial licensing for a product, and that is spending one of our most valuable resources: attention.

Wolfram Engine is not an IDE, or a photo editor, it is a programming and runtime environment so you can't compare these things. They exist in different worlds. If you want lots of money for people to even use and learn your language, you have to provide a free alternative to get people onboard. You can choose not to, of course, but they you will limit the reach and the importance of the product.

(No, being able to use a sandbox is not sufficient to properly learn any language because that's not how you use languages to build stuff)

And before anyone says how important Wolfram Engine is and that this is the going rate for specialized software: nobody cares. Because you are probably wrong if history is any guide. Lots of software used to be niche software and isn't today. Things change. If it's expensive and only available at a steep price, then only those who need it will buy it. The curious will get their kicks elsewhere.

There used to be a time when database professionals stomped their feet and yelled if you suggested Oracle might consider a Linux port of Oracle. "Impossible! People who use Linux aren't into paying for stuff!". And then it got released and then Linux became its most important platform.

Things change.

In order to get people to include it as an infrastructural component you probably have to ensure that it is free for non-commercial use. I'm not sure if you have to open source it. I use lots of stuff that is free for non commercial use - and then I use it commercially and pay for a license. Occasionally really expensive licenses.

I've looked at Wolfram Engine a few times, but in the end we never used it because it just didn't have a great enough following among programmers. I couldn't just tap into a talent pool when recruiting. It was hard to find experience.

I tend to choose tools based on the _people_ I can find to use them. In fact, usually the people I find choose the tools. That goes for how I choose languages, software, cameras, cars, motorcycles...you name it. No vibrant community means I don't buy in. And sure, there are lots and lots of cameras that are better than mine in that price range. But the cameras are not all that important. The people are. Who I can collaborate with, who I can learn from, who can help me solve problems.

Also, it tended to be a bit on the expensive side for what I wanted to use it for. Sure, I could have contacted Wolfram and said "look, we want to use it for this, but the licensing model doesn't quite fit", but how many developers do this?

(I remember thinking about buying Mathematica several times to tinker with it, get to know it and then perhaps see if I could use it for something. But it was expensive, and I'm not spending that amount of money for something I'll maybe going to play a bit with and then perhaps forget for a year. This too makes Wolfram Engine a bit of "interesting, but I'm not going to invest time in it".

And I can't say I've ever blamed Stephen Wolfram for it. He has a product that makes a bunch of users happy and him rich. Who am I to tell him that he should do things differently? So he exists over there and I exist over here and everyone is happy.

I'm excited about this change. I wish it had happened sooner so it could have had more of an impact. It certainly put Wolfram Engine back on my radar.

Can you give some examples of industries where the development tools are NOT mostly open source?

I don't care that it's not open source, it's a unique technology. Actual algorithms solving actual problems correctly. None of that fuzzy search that you'd get if you used Google. It's an amazing tool in its domain.

I absolutely don’t contend that it can’t do incredible things, and I think a huge swath of developers would be eager to take advantage of these capabilities were it under more permissive circumstances. I’m also happy for you that you have the latitude and willingness to build software in a programming language toolchain that is not under your control, both technologically and legally. I know at the companies I’ve worked for, including it as a part of the product would not fly with so many departments, most notably legal, exec leadership, and most SW developers.

The reason for its dismissal goes a bit deeper than the simple fact that it’s not open source. We pay for other software (like E&M solvers), why not this? Because its use is not compartmentalized. It’s a programming language with the world’s most expansive standard library. Just as is the case with—say—Python, folks using this have no end to what they would build, including company IP. The code would absolutely not be portable, and your tech stack would be vendor-tied. That’s a danger zone for any serious enterprise.

My problem with it being closed-source is that it doesn't form a stable platform for my work. If they decide to change their product in incompatible ways in the future, I'm sunk. I have no recourse, I cannot fix the problem if it goes deep enough, and there are no other implementations.

I learned this lesson (albeit from a distance) when Microsoft killed off Visual Basic 6 and replaced it with Visual Basic .Net.

I've got no stake in this, but I'll note that from the claims Wolfram has made, they've got a 30 year track record in which notebooks going back to 1.0 still run in the latest version.

But does your version 1.0 you purchased still run? Or have you been forced to upgrade over the years?

I don’t think being forced to upgrade is as much of a concern as receiving incompatible upgrades, or not receiving anything at all. Remember, Wolfram is trying to reach industry here, not just individual software developers.

I agree. Plus, you can't peer into the layers underneath your software – if I'm writing code in Python or R, everything underneath me is there for inspection, if needed.

A closed source solution, where all you have is documentation (potentially flawed), including manually authored change information, just feels archaic at this point.

A lot of people use AWS though, right? It's about trust. Not trust in a "Amazon are good people I trust them" but more like "Amazon incentives are aligned with mine for this project, and I trust that using their platform wont f' me up down the line".

Companies should derive that trust factor from other factors based on their unique circumstances. If you are Amazon's competitor for instance it is probably not wise to use AWS for anything, but if you are a startup it could be very wise to take a bit of lock-in to avoid rolling your own infrastructure. If you are an established company maybe use AWS but in a way that you could move to another provider without too much pain, but balance that against some of the goodies you get by staying locked in.

I guess the same nuanced considerations have to be made to decide to use Wolfram Engine or not. There is no clear answer that suits all end users.

I've been reading as much as I can on RMS's site recently because I want to expand my mind on these sorts of topics. I really want to understand how "free" software can work at a practical level, where you say "here is a piece of software, it's $1000 from me, and you are free to give it to your friends, modify it, and resell it, even to people who would have paid me $1000, but now they wont need to" and how that ties in with making a sustainable business. I think it takes some luck and good imagination to make such a business work by selling some by-product such as consulting services or whatever. But for a lot of companies non-free is required in my opinion to exist as a business. Happy to have my mind changed.

AWS is more of a commodity, right? You use it for compute and storage and networking, but how much of what you write is intrinsically tied to AWS? With what we're talking about here, there's a language and a bunch of libraries where, if the company decides to change things, your code stops working, and there's no way to make your code work again without rewriting some arbitrary amount of that code. Maybe the company decides that a whole kind of activity is now bad, and you can't do it at all on their platform.

With AWS, you can pack up and go to a different cloud provider, and get the same Linux and the same gcc and the same TCP/IP stack. There's probably some other code you'd have to change, but the essential core is non-proprietary and nobody can take it away from you. Abstracting further, if Linux decided to go in a weird direction, you can get a POSIX-conformant Unix-like OS from other groups, like FreeBSD or Illumos. The Linux codebase can be forked as well, providing an even stronger insurance relative to what happens when some company's or business unit's incentives no longer align with yours.

And that part about aligning incentives is powerful. In the closed-source world, it's also fragile: One company being bought out can shift things tectonically for all of the software that company made. It becomes a treadmill, or a movie routine of constantly jumping from platform to platform as each of them dies off or is pulled out from under you as "corporate synergy" realigns strategic chakras feng shuis your old codebase into worthlessness.

> fahre dann mit dem Taxi zu einer Villa am Stadtrand. Ein bedienster steht am Eingang,

If you are "seriously" using AWS: A lot. Value of AWS is not that it offers compute nodes. But a full catalogue of further services and tooling APIs and migrating of that can be a big project.

Are you using a translation plugin?

lol it's not unique

maxima has existed for ages, maple has very similar fatures

It's not unique in that there literally exist other computer algebra systems (CAS), sure. But it is unique in two meaningful ways:

1. It is arguably the most sophisticated CAS available. Open source tooling has crept up in performance and completeness in recent years, but Mathematica still dwarfs every open source system in performance and feature availability. Competing proprietary systems like Maple are capable of beating Mathematica in certain specific domains (like PDEs), but that leads me to my second point.

2. Mathematica isn't just a CAS. It also supports sophisticated data analysis and ingestion, visualization, (some) machine learning, natural language processing, speech recognition, signal processing, climatology, meteorology, geography, financial analysis, and limited forms of convex optimization.

Some things that Wolfram Language does that maxima doesn't: machine learning, image processing, audio processing, time series analysis, user interface construction, build-in data, geo computation, natural language processing....

Maxima is just a computer algebra system- one small part of what Wolfram does.

Are Maxima's CAS algorithms comparable to Mathematica's? I have tried to used Sage and other systems in the past, but Mathematica has always been better at finding solutions for what I tried to do. But I have never used Maxima for real.

Maxima is a serious CAS and can do serious work, but it’s a few decades behind the latest R&D. It can do algebra and calculus usefully.

Can you explain which features are similar? I am not an expert, but I suspect you are discounting some significant features of Wolfram.

Computing symbolic derivatives and integrals, simplifying algebraic expressions, arithmetic with arbitrary length integers, solving simple ODE, computing limits and series, things like that.

Maxima is a fine piece of software, and I’m a huge proponent of its development, but doesn’t compete in the breadth or depth of Mathematica (or Maple) at all.

It certainly competes due to the fact of being free software, which is a strong requirement of my workflow. I can try Mathematica and Maple (and love them), but ultimately I have to end using a free software solution.

>>It certainly competes due to the fact of being free software, which is a strong requirement of my workflow.

The parent said it doesn't compete "in the breadth or depth of Mathematica" and you responded with "it does compete because it's free!"

Your response does not refute the parent's argument.

Indeed, being open source is a major advantage!

> Maxima… doesn’t compete in the breadth or depth of Mathematica (or Maple) at all.

You seem to have an axe to grind. They have made a very nice ecosystem over the course of 30 years, they are opening it up more. They are proud of "how uniform, elegant and stable a design we’ve been able to maintain across the whole language." It is difficult to get that in an open source project and ecosystem. This has some marvelous qualities that come from its closed source nature. It is special because of that. Having both open source and closed source projects in the world complement each other. Use the best tool for the job. Sometimes the best tool is to be closed source, sometimes open source. There are pros _and_ cons to _both_. I think it is great and applaud them for making such a nice tool, and now making it more widely available. Maybe it wouldn't be so great if it started out open source, or would be similar to open source things and not be distinct enough, so I'm grateful for what it is and what it is not.

No axe to grind. I’d like to think I’m a representative sample of my fellow software engineers. I don’t even want to make statements about open vs closed source generally. But as it pertains to developer tools (compilers, interpreters, debuggers, runtimes, standard libraries), open source has been hugely successful, hugely popular, and both individuals and corporations depend on that fact. You’re right, and I think I fairly painted a picture of Wolfram’s thesis about Mathematica being a commercial closed source product: He has the best general-purpose CAS on the market right now. That’s real value! But it’s not persuasive enough to spend my (or my employer’s) time, energy, and other resources into making it the source language of my (or my employer’s) product, IP, services, open source libraries, etc. Under discussion is a tool to write and run code in Wolfram Language, with a premise that providing the tool free of charge for use in a limited set of legal circumstances is useful. I argue that the legal framework around the usage of the tool is more consequential to its adoption and use than the cost.

With that said, I don’t speak for everyone! If folks find this tool useful, love writing Wolfram code, have no expectations about the portability or maintainability of the code, trust Wolfram and the contract to which they’re agreeing, then by all means! More value for people is better!

"I’m a representative sample of my fellow software engineers"

I'm a bit puzzled about how strongly you seem to be feeling about this topic. Given your comments, you seem to be quite far from the target audience of Mathematica. It's not for software engineers. Most productive work done with Mathematica is not "building software" ...

But given all this hostility, have you downloaded it, and have you tried it? Or is all this just philosophical (i.e. the least interesting) criticism? There seems to be no experience backing your comments.

I do computer mathematics. I’m the author of a computational group theory package [2], and my day job is in quantum mechanics and quantum computation, but in that I’m building packages in a software engineering capacity. The algebra gets pretty gnarly. Check out a recent paper, which includes both a math [0] and SW [1] component. Perhaps because of this I’m unusually representative of the intersection between math and software.

I hope folks aren’t finding my comments hostile. I have used the Mathematica product before in their GUI and at the command line, and some of my colleagues use it for various calculation tasks. I’ve opted to stick to open source alternatives like Sage, wxMaxima, GAP, and Axiom/Fricas.

The engine doesn’t give you a license to Mathematica, so I don’t presume the target audience is the collection of folks who want to do differential equations with plots. The article emphasizes lots of software things (languages, integrations, etc.), so actually I do believe they’re targeting software engineers.

You should note that I have not criticized their features, but rather restrictions on the use of the product in the first place . Maybe that would be interesting to read, but instead I have commented on the leading question in Wolfram’s article. I have not and will not download their Wolfram engine in its current state though for the reasons I’ve outlined. Do recall that using it means I’m bound to a legal contract, and that’s not one I’m willing to engage with.

[0] https://arxiv.org/abs/1904.10541

[1] https://github.com/rigetti/quilc/blob/master/src/compilers/a...

[2] https://github.com/stylewarning/cl-permutation

I think people are confusing your certainty with hostility. I've read all of your follow up responses in this thread, and don't see any kind of hostility. What I am seeing is a lot of ad hominem hostility being directed at you as little prefaces to people's arguments.

No, your comments have been rather measured, and I applaud you for it.

cL-permutations looks nice!

As an old Lisp programmer, it makes me feel good seeing CL applications.

I broadly agree with your points in this conversation but I am downloading the Engine right now. I also did a ten day free trial of Mathematica recently. I have a little time to spare to kick the tires.

BTW, in the same way that Keras has functionality to download some standard data sets and cache them locally, I would like to see more CL projects do the same. Julia has a few such packages. Having easy to access data is a selling point for Wolfram Language.

Not sure how the parent comment is hostile. They aren't critiquing the system itself, they are critiquing its method of distribution.

As such, this comment:

>But given all this hostility, have you downloaded it, and have you tried it? Or is all this just philosophical (i.e. the least interesting) criticism? There seems to be no experience backing your comments.

does not seem to apply

I agree on that point. It definitely wouldn't fit for a lot of people, and licensing is extremely important. Point taken on developer tools as well. But some diversity doesn't hurt there. :)

I don’t think OP is axe-grinding, just responding to Wolfram’s naïve sentiment of “I don’t get how anyone could possibly see any downsides to this!”

If they open sourced it, it would be less than a year before you'd start seeing "Azure Wolfram" and "AWS Wolfram" and so on and I can sort of understand why he might not want that to happen.

> If they open sourced it, it would be less than a year before you'd start seeing "Azure Wolfram" and "AWS Wolfram"

and using an AGPL licence, there would be no danger for them!

An Affero GPL (AGPL) license wouldn’t prevent AWS or Azure from competing with Wolfram’s cloud service, it would just require that they publish their changes to the source code. They’d still eat Wolfram’s lunch, which is why it won’t happen.

Exactly. That's a good example what's wrong in our world. As long as this won't change we won't get closer to the FOSS world that every human deserves.

> "to the FOSS world that every human deserves"

Please explain how/why FOSS is human birthright?

Making good software requires significant effort (both up-front and on-going) and being compensated for that effort is reasonable

There are ways around this. I quite like what TimescaleDB have done, with most features OSS, and the more advanced features are under an open source license that permits use for those building a product around it, but preventing TimescaleDB as a service.

A license like that discriminates against fields of endeavour (cloud companies), so it doesn't comply with the open source definition (item 6):


Agreed, which is why I specifically didn't refer to the TimescaleDB TSL license as "OSS".

Then maybe open source definition should update as new ways to exploit it have been found?

Agreed, but I think there would be big pushback from OSS proponents - in theory changes like this are diametrically opposed to the "No Discrimination Against Fields of Endeavor" tenent.

The problem of big cloud providers ripping off OSS works is a new one, but it is explicitly allowed by OSS licenses - really not sure what a "good" solution is here, but personally I like the route TimescaleDB has gone down.

I don't think it is a new problem, there have been people offering Apache servers as a service for a long time. Same for PHP, Wordpress and myriad other open source projects.

There is no open source license like that.

TimescaleDB's TSL license is not "OSS", but it is open source.

TimescaleDB has a good blog post about why they went this route[0]

I do think that perhaps we need to stop being so snooty about OSS vs open source, and recognise that companies with open source products are allowed to make a profit while preventing the big cloud providers from scalping them.

[0] https://blog.timescale.com/how-we-are-building-an-open-sourc...

If Wolfram is correct in how game changing the Wolfram Language, Engine, et al are, then commoditizing it to the point that there is an "Azure Wolfram" stack and an "AWS Wolfram" stack may be vindication. (Maybe not very profitable vindication, but real bonafide "people are using it and happy with it" vindication.)

Azure and AWS already have competing stacks to Wolfram, it is just various and sometimes incompatible hodgepodges of R, Python, Jupyter, and so on and so forth.

There are a lot of poor quality open source packages in use. Some are just chaotic. But people still use them, often just keeping themselves much busier than they need to be. Of course there are a lot of high quality packages in use as well. So popularity does not correlate with quality (in many fields)

If Wolfram open source their stuff and people use it, it won't necessarily be a vindication. At the moment they have people who are willing to part with cash to get what they make. That's a definite vindication for anyone who makes things.

Can't they use a more restricted license that prevents that?

Which more restricted open source license would prevent that? There is none!

It can be done. If no license allows you to what you want, get your lawyer/s to draft one for you

Open source has a clear definition. The kind of license you want is not compatible with that. It would be a valid software license, but not open source.

"Open source unless you make more money than us" is what it sounds like, and might actually be worse than closed source.

I think you are conflating “free software” with “open source.”

And who put them in charge? :P

The community of free and open source software developers.

Really, with the kind of license proliferation that was going on due to every Tom and Harry that wanted to publish their own license, it was difficult to understand which license was really safe to use and which wasn't. FSF and OSI stepped in to bring some sanity to this situation by categorizing all the free and open source licenses by their permissiveness and restrictions. The majority of the open source development community adopted these licenses.

Any license that restricts making money would neither be considered a free license by FSF nor an open source license by OSI. The license could discourage making money without contributing back to the community and the GPL family of licenses do achieve that to some extent but they cannot outright restrict making money.

The OSD has its roots in Debian Free Software Guidelines which for a long time has been the community standard for what guarantees free software must provide. FSF's four freedoms of free software are also similar. OSD adopted Debian's guidelines to create the open source definition.

If a license does not allow us to run a software how we wish we lose freedom 0 to run the software how we wish. We lose the right to use the software for any field of endeavor. You might want to consider it "open source" because you can still see the source but widely accepted terms like "open source" do not get redefined so easily based on how some people feel about the term. The term's meaning still remains intact due to the meaning it holds for the vast majority of open source software developers.

"Open source" is generally taken to mean follows the OSI's definition at https://opensource.org/osd

There are other terms for source which is available but proprietary, such as "shared source".

A license that makes source code available while restricting how it can be used: https://www.mongodb.com/licensing/server-side-public-license

They’d have to use a license similar to MongoDB’s.

At one time or another, I attended a talk given by wolfram and asked roughly the same question.

His response belittled the question, calling it naive. His smugness was astoundingly tone deaf.

Until he figures out how to answer questions like this without using shame to cow developers into line, I’m staying away.

Of course it is naive - his business is built around it. OpenSourcing takes a lot of revenue away from him. Compensating that with support contracts and cloud services won't be easy.

Not to mention the fact that probably he doesn't own all rights for doing that. Software with such a history often contains third party licensed modules.

he gave you nuggets of wisdom imo.

He won't change because society considers him to be a prodigy (for good reasons, see his early work) and he lives in a cloud of success from where its hard to empathize with how most developers or actual users of his tool work. In essence, he found great success with a business model for software appropriate for his time and has done well enough to not have to change anything.

Although, perhaps this step is kind of a result of stagnating growth, IDK.

> But that’s completely at odds with how most software engineers work these days. Most software is grounded in an open source development and deployment tool chain. There is a market for proprietary developer tools, but it had been dwindling since its prime-time in the 90s.

that is simply not true and a rather insular view. i build large complex systems, and all of it is done with proprietary software. in fact, it is practically impossible to do my job exclusively with open source software. most open source software is completely unreliable and ill-fitted for many domains. and just try getting good support for use cases only found in industrial use from most open source developers. i have tried, and it never works out. the response is usually "you figure it out and let us know".

furthermore, a lot of proprietary software is fairly open source in that you get access to a fair amount of source code. and it isn't dwindling at all.

I’m not saying it doesn’t exist, but I am claiming it’s uncommon to use closed source developer tools (compilers, interpreters, standard libraries, etc.). The mere fact that the most popular programming languages in the world are provided as open source implementations is a testament to that. There are some stragglers. I think K is closed source. Commercial implementations of APL are closed source but somewhat popular.

“Source [partially] available” and “open source” are generally considered distinct concepts these days. See for instance [0] or even look up what Google’s dictionary says about the term.

[0] https://en.m.wikipedia.org/wiki/The_Open_Source_Definition

Nearly all professional Windows development has been and still is done in Visual Studio.

This alone makes your "uncommon" claim void, and there are other examples outside of the Windows ecosystem equally well-rooted in proprietory tools.

Writing code in C or C++ does not lock me down in any way. Using the Windows OS APIs does, yes, but there are entirely robust ways of writing C++ on Windows using an open source toolchain that are popular. And as we have seen, Microsoft is increasingly going in a direction of open sourcing more and more of their tooling. Look at everything that has gone on with C#, F#, the .NET stack, etc. So while I agree with you that MSVC is used, and used often, I don’t think that’s a strong argument.

Now if MS had their own language (they did...) that was closed source (it was...), the argument would be more akin to this Wolfram debate. But MS learned that wouldn’t fly, and adopted an OSS strategy.

>>> I am claiming it’s uncommon to use closed source developer tools

>> Visual studio

> I don't think that's a strong argument

Lovely talking to you.

I have changed 7 jobs in 15 years so far and not once I have done Windows development in Visual Studio. Nor have I seen anyone in my company doing so.

I would say Windows development in Visual Studio is by far uncommon when you compare with technologies like Python, C (with GCC or Clang), Java (OpenJDK), JavaScript, etc.

I work with a lot of C# devs using Visual Studio for some things and VSCode for others. I assume it is not uncommon in industry.

c# is one of the most popular languages in the world. what are those people using?

It's worth noting that the Visual Studio umbrella also involves many OSS technologies. If you're writing C# or F# code targeting .NET Core, the language, compilers, libraries, runtime, build tools, and parts of the IDE tooling are all open source.

I will say that although most of the proprietary software that I use is closed source, one major provider has so little documentation that they're pretty much forced by customers to provide source and that is super nice. I can actually call up a dev, tell them where the problem is located, and how to fix it. This saves a lot of money in bug patching.

This is bullshit. Most of the OSS is done by overbored corporate coders on good salaries, that is paid from the pockets of other successful businesses.

Hopefully this is the first step in a series of steps to get there.

Doing it in one big jump would probably impact revenue so much that it would take too long for them to grow out of it. Hopefully this change will increase their growth rate without much change to revenue, making it faster to grow out of, and prepare the way for further changes.

Sort of Wolframs reply to why Wolfram is not open-source: https://blog.wolfram.com/2019/04/02/why-wolfram-tech-isnt-op...

This blog post conflates open source with a community development model.

I never know when they talk about "Wolfram" whether they mean the company or the person. And then I think what an egomaniac one must be in order to name an invention/creation after oneself.

Their main worries with open-source seem to be:

1 Fear of losing control (over their vision and centralized design of computation and representation of the Wolfram language).

  This is just false, as they would be in control over their project even if open-sourced.
  Forks would be possible but would not influence the original source (if not wanted).
2 Fear of lack of innovation.

  I cannot see why this would be true.
3 Fear of ignorance towards hard/boring dev. topics.

  I see how that could be a problem. One solution would be funding (s. point below)
  to pay devs for the boring stuff.
4 Fear of lack of funding (because dev. costs money... surprise).

  Their main point (and probably a big issue of a lot of other companies
  thinking about open-sourcing their software) and a very valid one indeed. 
So I guess they just have not got a business modell ready involving open-sourcing their software. Wolfram seems not so much against open-source from a philosophical point of view but they clearly think they would not be able to fund their dev. efforts without their software revenue.

@Wolfram: The most important assets of Wolfram are the devs. working there, not the software itself. Given this huge knowledge base around the topics covered by the Wolfram language, the support-business-modell could very well work! Also from a philosophical point of view: Wolfram claims to unify disparate fields of all of science which kind of is a scientific achievement on its own. Scientific results should be available for all people of our society.

He should open source the Core language and then license all the extra functionality in paid for libraries. That would at least make it more possible to opt out the paid for functions or if you would like to have it opt in later.

>Most software is grounded in an open source

That depends on the software development segment. If you are creating 3D games you would expect to build on top of Unity or Unreal because unless you are a major studio building the infrastructure yourself is expensive, slow and not as good. The question is "is computation" such a segment?

IIRC, I think Unity source is available if you purchase the appropriate license level, but Wolfram source is not available at all.

There are some open source projects trying to implement some part of Wolfram Mathematica https://mathematica.stackexchange.com/questions/4454/is-ther...

Can someone make an OSS implementation? Doesn't seem impossible especially now that we have Truffle/Graal.

There is immense value in the amount of knowledge that they've curated and integrated into the system.

And it will be a shame that mankind loses this immense value once the company inevitably disappears.

Do you use Google?

I don’t use Google as my programming language or standard library. (Of course, such a statement is nonsense.)

I have used Google as my programming language (Go) and a de-facto-standard library (Guava). Of course, in both cases they're open source. And I've found and fixed bugs when I couldn't get Google to do all of it themselves. And if Google ceased to exist both of these could continue with minimal interruption.

You replied to a different question, and declared that question nonsense.

My question is: do you use Google?

Yes. Now what's your point?

At the question: "Why Aren’t You Using Our Technology?" you replied "It’s not open source." It's two comments above this.

No one asked about programming languages or standard library (except you when you misunderstood my question).

Therefore you implied that a good reason not to use a technology is that it's not open source. Literally.

Then why are you using Google?

The original commenter did not claim to exclusively use open source software, but only that they have a clear preference for open source.

> It’s not open source.

WL is essentially just a bunch of useful functions collected into a common platform, and I think we already have the open source equivalent of that - it's called npm, and it's great, but it is very different, and it has some pretty big downsides which are the direct result of it being an open source project rather than a commercial product. I don't know if WL is as elegant or high-quality or deeply functional as Wolfram claims, but if it is, isn't that likely a result of it being built the way it's built?

It might be that there's a middle option - a way to open some core part of the language, while still keeping enough closed to make up a service layer that they can charge for, as you described - but today's announcement is pretty strong evidence that they considered that and rejected it. It seems pretty presumptuous to assume they got it wrong.

There aren’t really any technical computing things done in JavaScript or hosted on npm, are there? A better analogy might be the scientific Python ecosystem.

Disclaimer: Wolfram employee here. Opinions here are mine, and not the company's.

Having used the Wolfram Language and Mathematica professionally for over seven years I think this is much cooler than the people who greenlighted this within the company realize. If there is one thing I love about the Wolfram Language is how fast it is to prototype something with it.

Given the scope of the language (or what you call standard library), most things that would require finding some external dependency, then writing some shim, are there out of the box. Whenever I have a weekend project idea it's always very very fast to prototype in the Wolfram Language.

Now, you don't want to use it in production because it's not open-source, fine. This license doesn't even allow that use anyway. But if you want to do a prototype, some MVP for an investor demo, a hackathon, then it's free and it's extremely powerful.

Most of the complaints here are about why you wouldn't build a company on our tech stack or why non-libre software is bad in production, but building production software is not what is being given away here, all the rest is.

Anything you, as an employee of Wolfram, create or prototype or whatever with it can have a future. You would have no questions asked. And as an employee I presume you also get the possibility to inspect the source, and perhaps even email the dev teams directly to fix or modify things as you see fit. In such an environment, even simple things like prototyping are great.

Actually, the cases you described, making an investor demo or the like can be argued to be prohibited by the license! Does an investor demo or MVP count as commercial use? I’d say so. Would an MVP potentially produce data that I might use in the production of a “real” system? Likely so. Both of these are expressly prohibited by the license, straight up in the first section.

“Yeah but you’ll get away with it fine.” Will I? I also must respond to Wolfram with a record of my use within 10 days of being asked.

How is this an attractive state of affairs to build anything, even for paltry testing of an idea?

You make some very good points, and you might be right. My educated guess is that this strategy is to get as many people as possible to try this. That would mean letting people do prototypes for commercial purposes too, but not to ship in production. Now, whether that will be enough to keep people hooked so that they use us in production as well depends on a lot of factors, both technical and political.

I think your worries about what is kosher and what isn't under this license are warranted and I'll try to point this to people internally so that the licensing terms can be clarified.

I think that what Wolfram is missing is that devs are not interested in getting hooked and then paying subscription fees. The payment model is the problem and devs won't be easily suckered by a free version.

I wouldn’t mind paying a license fee... that wasn’t hundreds or thousands of dollars per user, per core. Wolfram makes Microsoft licensing look cheap.

If Wolfram adopted the Unity model I’d be much more willing to try it out. (free to cheap for hobbyists and small businesses, steep rise in price based on revenue per year)

Isn't that the idea of this announcement? Free to start, pay when you deploy.

No, Unity allows commercial uses either for free in some circumstances, or very, very cheap, so long as your annual revenue is less than $2M.

That makes it a no-brainer to use--you pay little or no licensing fees until your game takes off. Unity makes their money off the unpredictable winners, while gifting a nearly free product to the hobbyist and startup ecosystem.

Wolfram Engine is more like the Epic Games (Unreal Engine) model: free to download and play around with, but steep licensing costs before you ship anything. No way to quickly iterate and try things, only paying up when an experiment works out.

UE4's pricing model is a lot like Unity's pricing model nowadays as far as I can tell.

Yes, they changed after Unity are their lunch.

Well, apart from the incredible standard library, there is an interesting programming language.

What I think is missing is a stripped down open source implementation / interpreter. What Gnu Octave is to Matlab. That stripped down variant could or could not share some code with the proprietary implementation (realistically, Wolfram would need to open some parts of their code).

I think octave is invaluable for helping Mathworks: Professional users will almost surely buy a license, but a lot of matlab/octave code can be run and hacked on without a mathworks license (albeit slower, and missing a lot of cool features).

The way it is now, all code written by scientists in the Wolfram language is essentially hostage to Wolfram. An octave equivalent would permit people to trust that they continue to meaningfully own their own code.

It is super unlikely that a stripped down slow but open implementation would ever improve to the point of being a meaningful competitor: The thing Wolfram has built is impossible to replicate in the open source world.

Sure, there are other computer algebra systems and other frameworks / languages, but these have very different strengths and weaknesses that make them appropriate for different niches. E.g. sage permits seamless interfacing with the entire python ecosystem (never write a parser or networking code in mathematica! Everybody and his dog publishes python bindings to their C++ libraries nowadays). Or julia with its multiple dispatch and late-AOT/JIT approach that permits permits to write super fast dynamic code that is Fortran / C / C++ level fast.

Personally, I've found thing since learning Julia I've become pretty distrustful of the whole notion of prototyping in one language and then doing a full implementation in another.

It just seems so unnecessary when you have a language where you can start out in a highly interactive state that seems a lot like Python or Matlab but then you can seamlessly start optimizing or generalizing functions and end up with something that runs basically as fast as C but retains all the dynamic advantages from the prototyping phase.

Yes, Julia's namespace isn't as polluted as Mathematica's is and I think that's a good thing. It's got an amazingly vibrant package ecosystem and packages are treated on such a first class level that as soon as you load a (well made) package, it composes so well with everything else, including other packages that it feels built in. I've never really felt like I was 'writing some shim' to utilize code from a julia package.

I feel the same, except with Common Lisp, whose interactivity is maybe only rivaled by Smalltalk, and whose performance can be made close to that of C for real-world applications.

Yes, in fact Common Lisp was what I almost started investing my energy in before Julia. I almost referenced Common Lisp in the parent post alongside Julia but didn't because I never learned it very well and didn't want to speak from ignorance.

My understanding though is that most of the statements I made also apply in CL though my impression at least from the point of view of scientific computation is that Julia's community is more energetic than CL's. Certainly Julia still has lessons to learn from CL though.

I get the impression that the communities are different. Not that Julia's is "more energetic" (there's actually quite a bit of activity around CL too), but that it's simply a different crowd. The Julia people seem to me to be coming more from the application side of things - computational scientists who want to do a certain job - while the CL people are more interested in CL as a language, without a specific application field in mind. So although neither of the communities are especially large, the Julia bunch have been more focused on good libraries for scientific computation, which is why their ecosystem is better in that respect. (Also, the "Lisp curse": scientists are more likely to choose Julia as a new language, because it looks more like the languages they already know.)

Source: I do computational biology with Julia, hobby projects in Common Lisp.

True, if I was more careful I’d say Julia’s scientific / numerical community is more energetic. I definitely don’t want to sound like I’m dissing CL as I have great respect for it and want to be better acquainted one day.

Julia is influenced by the Common Lisp Object System. But it made it fast for numerical computing. So there is a Julia lesson for CLOS...


Indeed, and that actually played into my path to using Julia. I had fallen down the lisp rabbit hole and was super interested in the ideas it advocates and was trying to decide on a dialect to try to commit to for my physics numerical work. After spending some time in decision paralysis (even though in hindsight, CL was probably the clear dialect to choose), I discovered that Julia actually inherited a lot of good ideas from the lisp family and that it had its fair share of cool ideas of its own. Eventually, I made up my mind and settled on Julia as my main language, though I screw around with elisp every now and then for my emacs config.

I’d like to come back to CL at some point though and gain some proficiency as I think there’s a lot in CL left for Julia to learn from.

I don't think interactivity and performance are enough to make a good production language. For example, I find Java painful to write without a good IDE, because of all the boilerplate, however it's that boilerplate that makes it very easy to read and refactor.

Agreed. They have to have a good way to write it (an IDE), a good debugger, a good profiler, a good library ecosystem, a good community, a good deployment story, reproducibility, portability across platforms, etc. I find commercial support helpful as well. Common Lisp has all of that.

Do you now find that doing both the prototype and full implementation in Julia the better option?

Sorry, couldn't figure this out from your comment whether you prefer Julia or some other language for doing the prototype and full implementation. If you can clarify this explicity, it would be helpful.

Apologies for the lack of clarity. Yes, I find I really like using Julia from start to finish and really admire that I can do so without compromise.

I find this approach to be straight up superior to the usual pattern where one starts out in a slow dynamic language to build the prototype and then either replaces certain functions with interop calls to a fast language (losing all the features that brought you to your dynamic language in the first place!) or straight up replacing your entire prototype with a production version written in your fast language and providing bindings to your slow language.

I fail to see how you build a business around this technology when you expect people to use it for predominantly investor demos and hackathons.

MVP for investor is commercial use.

They allow commercial use for free--just not production use.

"You can use it to develop a product for yourself or your company."

Sounds reasonable, although I think this term in the license will discourage many people:


You will maintain accurate records of Your use of the Free Engine sufficient to show compliance with these Terms and Conditions, and Wolfram will have the right to audit such records to confirm compliance therewith. Upon written notice of an audit from Wolfram, You shall respond within ten (10) business days.”


> Open-source projects approved by Wolfram.

“You can’t use this free thing to make other actually free things.”

Isn't that a common thing for commercial products that are provided for free to students, open source projects, non-profit organisations etc.? You have to prove that you're going to use it for what the license allows.

Perhaps I’m being a stickler for language, but I don’t consider it “free for open source projects” if I have to contact them to get permission to use it in an open source project. My beef is that the word “free” is being thrown around in this article. They should say something more true, like “we provide this engine for experimental personal use at no charge, and if you want to use it for something serious (open source, your company, etc.) contact us for a license.”

Free means no charge for the vast majority of people who can understand English.

“Free” also carries meaning outside of the commercial context and specifically in the context of software to English-speaking software developers. If I heard someone talking about software—especially developer software—being free, I personally would assume they mean “libre”, not “gratis”. But I can understand if that’s not universal.

"I personally would assume they mean “libre”, not “gratis”."

I don't even know what either of those mean and I've been coding and on HN for years. I'm not even sure how to pronounce the first one. In Australia at least, 'free' means it doesn't cost money.

Free has two standard meanings that are used commonly, "free of charge" (gratis) and "free from restriction" (libre):


Gratis: "Buy one, get one free."

Libre: "You are free to leave."

A stickler for language should know that free is ambiguous in English, and their use of ”free” as ”zero cost” is correct. Gratis vs. libre and all that.

Correct, but misleading in the context.

Is this anything more than keeping version control and responding if challenged with 'git log?'

Nope: "use of the engine" is much more than "what I programmed in it", as far as I understand.

Read in a very stringent sense it is tantamount to keeping a "laboratory log", which is much much more complex than git.

(What about some computations you used to help somebody out of your project?).


"We're losing mindshare and customers to open-source alternatives."

Great open-source alternatives to Wolfram products can be found in the ecosystems of projects like Jupyter, Scientific Python, TensorFlow, PyTorch, and Julia, to name a few.

Major sponsors of such alternatives include Alphabet, Facebook, and Microsoft.

It's hard to compete against that.

If one of those companies decided to drop decent money on turning SciPy+Jupyter (or Julia) into a proper high-performance CAS, Wolfram would be in huge -- maybe existential -- trouble.

mathematica is already in existential trouble. yes some theoretical physicists supposedly use it (i used it undergrad to do all of the annoying integrals in e&m) but that's such a small market it's basically irrelevant. i can almost guarantee there is no production code running that uses mathematica in some way.

And sagemath.org.

If you're making software to sell, the licensing problems are real, but if all you're doing is quantitative investigation, WL is like a dream.

When I was a grad student in economics, we had to solve really, really long algebra problems as homework. I used Mathematica to see if I was doing the right thing, getting more feedback, and more personalized feedback, earlier than anyone who had to wait for the next class.

Okay, so I read the post and I'm still not clear on what the actual difference is between Mathematica and the Wolfram Engine. Does anyone have any insight here?

Presumably this isn't intended to cannibalize Mathematica sales so I'd expect that many of the things I'm used to doing in Mathematica wouldn't work here but I don't really see any discussion of what it can't do.

Came here to ask the same question, and even with the answers you've already received, it still seems very murky.

If you look on their web site for Mathematica[1] it has several bullet points that includes the Wolfram Engine. One of the other separate points is "Wolfram Algorithmbase"[2], so presumably all those algorithms are not part of the engine and only available if you buy full Mathematica.

[1] http://www.wolfram.com/mathematica/

[2] http://www.wolfram.com/algorithmbase/

Can someone confirm this?

The Algorithmbase is 99.999% of what makes Mathematica useful compared to any language with a decent REPL or notebook setup.

I can't really imagine a use case for the Wolfram Language if I'm not going to use anything listed in http://www.wolfram.com/algorithmbase/

Mathematica also has god-tier documentation and an interesting and very unique programming language.

I personally hate programming in Mathematica, but it is interesting and deserving of an open implementation.

From the article "...with all its computational intelligence, algorithms, knowledgebase, and so on"

But the "its" that the article is referring to is the Wolfram Engine. It doesn't say that is all the algorithms in Mathematica. And the Mathematica website lists Algorithm Base and Wolfram Engine as two separate line items, which is at least surprising if one is contained in the other.

I actually believe the Algorithm Base is probably included, but it's definitely anything but clear from the website or any of the press release. The Mathematica website makes them seem like two completely separate unconnected components.

It's really unclear what is included in Wolfram Engine and what is included only in Mathematica... the above was just one obvious example. It would be very nice to have a concise list.

For practical purposes, nothing. If you have used Mathematica in the past, and know what it is: the "Wolfram Engine" is basically the Mathematica kernel.

Note that this free version only includes the kernel, not the notebook interface. But there is nascent support for Jupyter, so productive use is very much possible.

"I'd expect that many of the things I'm used to doing in Mathematica wouldn't work here"

What's amazing is that this isn't true. There are no _technical_ restrictions. You can't do Manipulate because the notebook interface is no there (or rather: it's there but it's read-only). But all the computational power is available.

Mathematica is basically a programming environment for the Wolfram Language. You can think of Mathematica as a desktop version of Jupyter Notebook for Wolfram Language.

I realize that. But what I said was that I'm not clear on what the 'Wolfram Engine' is and what it cannot do. It doesn't seem like a full implementation of the Wolfram Language for free, but I don't actually know.

Or is it that it's missing the Mathematica front end but has a full backend kernel implementation?

Yeah, now I understand your question. Reading the blog post made me think it would actually be a full implementation of the Wolfram Language for free.

So I was curious and signed up for a developer license. I got to the confirmation page, which helpfully told me to run "WolframScript" to activate the license. But there was no download link, so I googled around and found this[1] page. They seem to only have packages for Fedora and Debian-based systems, but no biggie. I used `debtap` to convert it to a package that pacman can install, and then, moment of truth...

   $ wolframscript 
   WolframKernel not found.
   Use -configure to set WOLFRAMSCRIPT_KERNELPATH
   Or export WolframKernel=/yourpath/WolframKernel
Uhhh... okay? And where do I get this WolframKernel from? I looked around my Wolfram Account page, and I don't see anywhere I can get this from. Google also doesn't help me here.

So... it seems you probably need a full Mathematica/Wolfram license before you can use this anyway?

Well, that's disappointing.

EDIT: OK, you can actually download it from [2]. My bad.

[1] https://account.wolfram.com/products/downloads/wolframscript

[2] https://www.wolfram.com/engine/

This the correct download page: https://www.wolfram.com/engine/

You get a file `WolframEngine_12.0.0_LINUX.sh` about 1 GiB.

Click the Download button on


Its linked from the article.

I see, thank you. I must have clicked that link to sign up for a developer license, but somehow I don't remember being offered to download the thing.

I feel silly now, but that was pretty confusing.

For me it was being downloaded in the background. Don't remember exactly which button starts the download though.

I think the adoption would be better if they had a Community Edition like JetBrains does. It’s trickier with their products though since their main market is academic, but there may will be “enterprise” features that can be added to make it worthwhile for a University to buy licenses and individuals to not have to. It’s a great piece of technology I wish I had been able to play with starting as a child along side BASIC.

Am I the only one who gets tired of, "oh look something free on HN, okay time to shit on it, it's not open source".

No, you're not. It's tiresome, especially when people comment who obviously never had to solve hard integrals or pde's to even come up with a model which can then be implemented in an algorithm. I'm absolutely stunned how short-sighted many of the commenters are. I use Mathematica daily and, still, I appreciate Julia, Python, R.

All this talk about data-scientists only using open-source is ridiculous. At my university, departments like medicine, biology, chemistry, and life-science make a huge part. The most commonly used programs there are Excel and SPSS. Other departments use Matlab extensively. In finance, SAP is a big player. All of them are closed source and cost money.

Why can't people just appreciate that it is a huge step for Wolfram to release a free version of its kernel and think that this is an opportunity?

If no one ever criticized restrictions, we wouldn't have the freedom we have today.

Most people here are complaining about the license, not the software. They think the software is good but the license is holding it down. To me this looks like valuable feedback.

I see what youre saying but

> They think the software is good but the license is holding it down

The issue I'm really trying to point out is

They think the software is cost free but the license is holding it down

Wolfram Engine has always been good, but it seems people are more in a huff because it's priced free but not open source.

I.e expecting that if something is given to you at no cost, it also must be open sourced.

Hmm, I see what you mean. I'm under the impression that this isn't the main issue people are having here but what do I know.

One other reason why people might be so upset here is the naming of this product. "Free" is commonly used to describe libre software. This is at best an oversight by the marketing team and at worst deliberately set up to deceive developers.

FYI: After downloading and installing a 3GB executable, the software needs to be activated with a developer ID. Knowing that could've saved me the trouble.

There's lots of ideological discussion here. I would have loved to read some experiences based on actually trying the thing!

You don't have to settle for the command line. It works with Jupyter, which seems to be the most pleasant way to use it.

Can anyone explain the difference between the Wolfram Language and Matlab/Julia? I understand it has a better story for symbolic mathematics, but how often do people need that? Personally, I've found numeric computation more useful in 99% of the cases; do others have a different experience?

Wolfram language has a very different syntax that Matlab or really any other programming language, and it has a lot of lisp-like metaprogramming capability. It's not as well thought-out as a proper lisp like Clojure, it's verbose and there's a lot of weird corner cases.

The editor is very different as well: Mathematica pioneered the notebook concept that was copied by Jupyter, and the Mathematica user experience is still much more comprehensive and tightly integrated than anything else.

For linear algebra, they both use Intel MKL under the hood and get exactly the same performance.

Not only would I not call Clojure a "proper lisp" but since it doesn't run any Lisp code and lacks fundamental Lisp data structures (e.g conses), I wouldn't even call it a Lisp.

You're about 10 years late to this debate, which has largely been settled.

Completely tangential, but Clojure is definitely a Lisp, and it does have cons https://clojuredocs.org/clojure.core/cons

A Clojure cons is something completely different to a Lisp cons.


It is not completely different, but rather quite similar [1]. Clojure adds the concept of protocols, which it uses to abstract over cons cells (and it requires that the second element of the cell is an ISeq rather than an arbitrary object).

[1]: You can see the implementation of Clojure's cons cell here: https://github.com/clojure/clojure/blob/clojure-1.9.0/src/jv...

(cons 1 2) is doing what in Clojure?

In Lisp cons cells are the basic data type from which lists, trees, cyclic lists, etc. are created,

In Clojure it's not.

First, in Scheme, vectors are not made of cons cells.

Second, in Clojure, you can certainly make lists, trees etc. from cons cells. It's just that vectors and maps are more common.

Third, Clojure is not only a Lisp (https://clojure.org/about/lisp), but an exceptionally good one at that. I'm amazed that some people find that controversial. I love Scheme and Clojure, and the thought that they're not both Lisps -- something immediately obvious to any long-time Lisper like me -- strikes me as patently bizarre. Clojure is not only a very good Lisp, but celebrated among Lispers for facilitating Lisp's rise in popularity in recent years.

> First, in Scheme, vectors are not made of cons cells.

Lisp, too, has vectors not made of cons cells.

> make lists, trees etc. from cons cells

It's just that they aren't. Clojure uses persistent lazy sequences not made of cons cells as its basic data structure. And it has strange behavior:

  user=> (conj '(1 2) 0)
  (0 1 2)
  user=> (cons 0 '(1 2))
  (0 1 2)
Thus we have the same external representation.

  user=> (class (conj '(1 2) 0))
  user=> (class (cons 0 '(1 2)))
But they are of different class?

  user=> (class (cons 1 2))
  IllegalArgumentException Don't know how to create ISeq from: java.lang.Long  clojure.lang.RT.seqFrom (RT.java:542)
When we call cons with two args we get a Java error with a line number?

Does not look like Lisp to me.

> Clojure is not only a very good Lisp

It's a good programming language, but not a very good Lisp - since it is mostly incompatible and lacks a lot of the usual Lisp features.

> When we call cons with two args we get a Java error with a line number?

Clojure requires that the second element in the pair be an ISeq.

> since it is mostly incompatible and lacks a lot of the usual Lisp features.

I and many others disagree, including Clojure's designers, who designed it as a Lisp. Homoiconicity, macros, S-expressions and FP make a language a Lisp. OCaml and SML are about as different as Scheme and Clojure, yet no one thinks they're not both MLs.

> Clojure requires that the second element in the pair be an ISeq.

Lisp doesn't have such a requirement and does not have 'ISeqs'.

> I and many others disagree,

That does not make a convincing argument, since you have never used an actual Lisp - as you recently said.

> including Clojure's designers, who designed it as a Lisp.

Derived from Lisp mostly as a blend of FP, Java hosting/integration and Lisp ideas.

> Homoiconicity, macros, S-expressions and FP make a language a Lisp.

Lists are deprecated in Clojure (for maps, sets, vectors, ...), No interpreter, no Lisp down to the metal, no Lisp in Lisp, no images, core Lisp data structures look different, different API, different syntax, impoverished REPL, strange numerics, Java leaking in many places, lots of compromises because of implementing it on top of a not-Lisp-friendly VM, ...

Lisp derived, but Lisp looks & feels a bit different.

What do you mean by "it doesn't run any Lisp code"?

For what it's worth, both Wikipedia and the official Clojure website call Clojure a dialect of Lisp (https://en.wikipedia.org/wiki/Lisp_(programming_language), https://clojure.org/)

Pick any book with has the name Lisp on it, take example code and try to run it in Cloure.

Chance that it does not work is high.

Now change the code that it runs. Chance that you had to rewrite the code mostly is high.

It's a dialect of Lisp in the sense that it is an incompatible branch / fork with a Java runtime (it's a hosted language) and a bunch of newer functional data structures replacing old-fashioned lower-level stuff from Lisp.

Take Lisp code written in the last 50 years and odds are that Common Lisp, Emacs Lisp or Scheme can run it with zero/minimal/moderate modifications.

Clojure needs a total and complete rewrite which doesn't only affect the syntax but program logic. Thus Clojure does not run Lisp code. How can it be a Lisp when it does not run Lisp code?

I've actually ported some Clojure code to Common Lisp no later than two weeks ago and it was pretty much as straightforward (if not more) as porting R5RS to CL. In my (admittedly limited) experience both CL and Clojure favor a certain high-level coding style with complicated macros versus the more simplistic style of Scheme. Contrast CL's loop construct, Clojure's for statement and Scheme's typically more recursive approach to iteration.

You're welcome to draw the line wherever you want, maybe for you conses are mandatory in a Lisp language but I don't really understand what you hope to gain from this discussion. I might as well say "tail call optimization is absolutely mandatory in any self-respecting Lisp, therefore CL isn't a proper Lisp dialect".

This is effectively the same level of discussion as a Java programmer saying that C++ isn't "true OOP" or an Haskell enthusiast claiming that Scheme isn't a true functional language because it allows side-effects. It's just silly gatekeeping that doesn't lead anywhere interesting.

The chance that you can port code without actually rewriting it is pretty slim. But then, people have been rewriting Lisp code to run in C++.

If you want TCO in CL then use one of the dozen implementations which supports it.

People btw. used to write some non-trivial code which ran in both Scheme and CL with the help of a Scheme on top CL, a compatibility layer or a translator. But that's now relatively rare.

But C++ in fact isn't true OOP (and neither is Java), and Scheme isn't a functional language.

This argument only works if you think of "Lisp" as a single, linearly developing language. It hasn't been that for decades. (That's why they created "Common" Lisp, after all.)

Lisp is a family of languages - within which Scheme and CL are just as syntactically incompatible as CL and Clojure.

CL was created such that it is compatible with a main line of Lisp dialects (those btw. have usually Lisp in their name) -> Lisp 1, Lisp 1.5, MacLisp, ZetaLisp then Common Lisp.

Other Lisps in that main line are Portable Standard Lisp, Le-Lisp, Emacs Lisp, ISLisp, ...

There are quite a few branches with less (Scheme) or more incompatible languages (ML, Dylan, Clojure, ...).

Now you can give it a try easily. Why don't you? Maybe you will discover a new world ;-)

Don't think of Mathematica as a computer algebra system. It is much more than that, fully capable of numerical computation, and just the unique term rewriting programming language makes it worth checking out.

> Personally, I've found numeric computation more useful in 99% of the cases; do others have a different experience?

Yes, of course they do. For example, if they want to obtain a general, symbolic, solution to a problem, rather than estimates of particular numerical values. I'm sorry to sound a bit dismissive, but on HN it is common to hear people say stuff like "Oh, I find code much more helpful than math" and it's a bit embarrassing.

Just to give one example out of the entire universe of human mathematical activity, suppose you're doing statistical inference. You've developed a likelihood model for the data-generating process, and now it's time to implement the actual inference, say in a Bayesian MCMC, or a rejection sampler, or importance sampler, or whatever. Those are numerical algorithms of course; but they need to repeatedly evaluate the likelihood function at millions of different points in parameter space. Now, your likelihood function, was developed to model the real world. And perhaps the resulting equations are a little complicated. You may be able to achieve a vast speed-up of your numerical algorithm if you use a symbolic algebra system to find/confirm a symbolic simplification of your likelihood function.

A dumbfounded example . All you need for this is a cas system or some gruelling head computation that can solve This step or formula nothing more and not wolfram specifically .

Mathematica is a CAS system. The comment I was replying to was asking whether people saw any use for CAS (symbolic) over numerical computing.

Aside: You're commenting in a style that fits YouTube, or maybe Reddit, but this site has a different commenting culture/style.

There's much more to math than numeric computation. Many applied mathematicians spend their lives programming and never use a floating point number.

I know, but that's not what I asked. The question about numeric vs. symbolic was how common it is for software applications to require symbolic mathematics vs. numerical math.

For anything with an research element, symbolic is huge. On the other hand, if you're just implementing already well-researched algorithms and methods, it's much less needed.

I'd guess if you count combinatorics as symbolic math, then most of software applications are essentially based on symbolic math.

Wolfram supports numeric computation too (optimization, PDE solvers, data science etc

This may give some sense of what it can do:


From what I can tell, the main difference between Wolfram and Matlab/Julia (other than syntax) is a database of various facts. Is that a fair assessment?

Is there a way to access the database without the language?

It's based on rewriting symbolic terms (similar to Lisp's s-expressions) using rules.

It then originally has a large library of facts and rules for a large amount of mathematical domains. This has been expanded over time into lots of knowledge about the world (physics, biology, astronomy, ...).

Programming is often done with multimedia-rich notebooks.


So it's some kind of knowledge-based system for mathematical related domains,


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