Closed maxcorbeau closed 1 year ago
I have related questions which I hope you won't mind me tacking on to this issue:
Thanks for your interest in Mojo programming language. Please take a look at https://docs.modular.com/mojo/faq.html , a lot of the questions are answered there.
Will Mojo be open sourced As we start to open source we will share our plans on the governance, contribution and distribution model.
Yep, plz check out the FAQ, thanks!
Sorry. I hope that I do not come across as a Mojo hater. I played with it a little, love it, and frankly cannot do anything with it because they continue to refuse to define a license. They can set it to any license, and even change it later, but if you do define the work without a license, it leaves it in legal limbo, and it is why it has not been widely experimented with, and adopted by, various agencies such as NASA and NOAA. If you want to get clued into some of the headaches check out "Pick a license, any license" by coding horror https://blog.codinghorror.com/pick-a-license-any-license/. BTW, if anyone from NASA or other federal agencies are using Mojo, get them in contact with me so that I can figure out how they got permission to have it installed. Without a license, the approving officials will flatly reject it. I am surprised that a company with such top names do not have someone that can explain the legals and liabilities to them from a users perspective. So, no. Until you define a license we cannot know if our use case will or will not violate the terms. There is also the deal that if I spend thousands of hours learning the language and porting things to Mojo, and later find out that I can never use any of the work I did because of license restrictions, then I just lost that time - and maybe my job with it.
Also, it seams that from the comments in the https://github.com/modularml/mojo/issues/84 that someone is confusing open-sourcing their product with defining a software license. These are VERY different things. We need to have a terms of use clearly defined, so that we know the legal boundaries of the simply loading the tools onto our computers, much less actually using it.
BTW, when Modular finally gets around to defining a license, any license, please update this so that I get notification and can revisit the discussion with the NASA software approving officials. I have a couple of projects I would dearly love to give a try (and possibly stuff a few petabytes of high-resolution imagery down its gullet).
Hi @ebo can see the license here: https://www.modular.com/legal/mojo
There is a link to it when you download the SDK down the bottom:
Also I reopened that ticket you linked, we'll get a link to the license in the FAQ as well, thanks for raising.
Thank you for the quick reply, and also for opening back up the linked issue.
You need a section on "government use". Some people/organizations consider any use by a government agency a "commercial use", and your current license specifically disallows commercial and production use. Even though I am in a research branch at NASA, we very often produce publicly available products. Just yesterday I was suggestion to someone that they might want to look into using Mojo in a project where they are using object-segmentation of ice-flows to track individual chunks because they were dealing with some very serious scalability issues. I also warned them about Mojo's licensing issues... I would really like to get this information worked out, and either reopen the discussion with the approving officials or put the idea of ever using Mojo at NASA to bed.
BTW, related to the above, it would be helpful if you also have a link to a document on commercial/production uses which can link to all the budgetary quote prices, restrictions, etc. (even if they are just stubs for now).
Likewise, also you might want to fill in the missing for Modular’s Privacy Policy, but that is a minor point.
@ebo this is now in the FAQ here: https://docs.modular.com/mojo/faq.html#what-are-the-license-terms-for-the-sdk
I've also added the privacy policy link you mentioned, which will go live later today.
The binaries produced by the SDK are not restricted, it's just the SDK itself, the license is saying you can't distribute the mojo compiler for commercial purposes.
If your legal team has concerns, can you please get them to email me at jack@modular.com, and I'll pass it on to the relevant people.
Thank you Jack. I will work on talking to the folks I need to after Monday. I am taking the rest of the holiday off. This might take a bit, but with a license I can point them to is a very good start.
What I don't understand is how open sourcing mojo from the beginning would harm the project. I understand the decision to not take contributions from strangers, but if you just set the repo to public and not accept pull requests, that surely shouldn't be a problem. Being open source does not mean that just anyone should have a voice in how the project in your repo should be developed. If you want to avoid people depending on design decisions that are not yet final, then I would just wait publishing these period. Offering a proprietary blob on your website seems to me the worst possible course. It is explicitly stated to be in early development, and anything people write using it could break at any moment. The project being closed source means that if you break things, people cannot even repair it themselves. Is the intention here to not have people using mojo yet period? What is the point of the sdk right now? People will have written off mojo long before it is production ready.
What I don't understand is how open sourcing mojo from the beginning would harm the project. I understand the decision to not take contributions from strangers, but if you just set the repo to public and not accept pull requests, that surely shouldn't be a problem. Being open source does not mean that just anyone should have a voice in how the project in your repo should be developed. If you want to avoid people depending on design decisions that are not yet final, then I would just wait publishing these period. Offering a proprietary blob on your website seems to me the worst possible course. It is explicitly stated to be in early development, and anything people write using it could break at any moment. The project being closed source means that if you break things, people cannot even repair it themselves. Is the intention here to not have people using mojo yet period? What is the point of the sdk right now? People will have written off mojo long before it is production ready.
I don't think it is just about contributing, but also the endless amounts of suggestions and bikeshedding that would entail. I think at this stage of the game, if mojo was open sourced, feedback from the community will create lots of "noise" in the github issues. I think it would slow development down, because real issues will be fighting for space with design suggestions or even PR's with code implementations.
I would rather that Modular get the basics out of the way in internal design work, vetting the design out, and doing experimentation, before they get a ton of feedback from the community. Mojo is very young, and I actually don't see the point of Modular releasing things for the world to see until the foundational aspects of the language have gone through at least a bit of testing, experimentation and analysis.
Just as an example, Graydon Hoare worked on rust in private in 2006, but Mozilla did not open source it until 2009. Apparently, it was a long time until Graydon even showed fellow engineers at Mozilla what he had been working on. If anything, my fear is Modular released mojo too early, before more internal vetting out had been done.
So here are just a few ideas I can think of off the top of my head why I am fine with Modular keeping mojo closed for now:
All this being said, I would like more design proposals and also a roadmap on the features they are prioritizing and working on. High level design and architecture does not require code; it requires ideas.
On Jan 21 2024 2:40 PM, Sean Toner wrote:
What I don't understand is how open sourcing mojo from the beginning would harm the project. I understand the decision to not take contributions from strangers, but if you just set the repo to public and not accept pull requests, that surely shouldn't be a problem. Being open source does not mean that just anyone should have a voice in how the project in your repo should be developed. If you want to avoid people depending on design decisions that are not yet final, then I would just wait publishing these period. Offering a proprietary blob on your website seems to me the worst possible course. It is explicitly stated to be in early development, and anything people write using it could break at any moment. The project being closed source means that if you break things, people cannot even repair it themselves. Is the intention here to not have people using mojo yet period? What is the point of the sdk right now? People will have written off mojo long before it is production ! ready.
I don't think it is just about contributing, but also the endless amounts of suggestions and bikeshedding that would entail. I think at this stage of the game, if mojo was open sourced, feedback from the community will create lots of "noise" in the github issues. I think it would slow development down, because real issues will be fighting for space with design suggestions or even PR's with code implementations.
I would rather that Modular get the basics out of the way in internal design work, vetting the design out, and doing experimentation, before they get a ton of feedback from the community. Mojo is very young, and I actually don't see the point of Modular releasing things for the world to see until the foundational aspects of the language have gone through at least a bit of testing, experimentation and analysis.
Just as an example, Graydon Hoare worked on rust in private in 2006, but Mozilla did not open source it until 2009. Apparently, it was a long time until Graydon even showed fellow engineers at Mozilla what he had been working on. If anything, my fear is Modular released mojo too early, before more internal vetting out had been done.
So here are just a few ideas I can think of off the top of my head why I am fine with Modular keeping mojo closed for now:
- Mojo is very young, so Modular may be experimenting with different concepts or designs on different branches to establish the foundation
- The experimental branches may require hardware or scaling not available to individuals
- For example, they may have accelerator device farms to test on
- What may work fine on small ANNs or on a particular accelerator, may not work in general
- Something might just be a proof of concept that they want to explore
- It will result in needless bikeshedding about terminology and cause a lot of "noise" in new issues
- everyone will have a different opinion
- so let Modular figure it out first, then solicit feedback once the concept has been proven
- Without the foundation in place yet, the community will (in general) have different priorities than Modular
- Modular may like to implement a suggestion, but it may not be as high on their list
- In general, I see three mojo "communities" each with differing priorities:
- Those who want faster math (ie, Modular itself, and ML/Scientific people)
- Those who want a faster python (ie, speed up pandas, fastapi, etc)
- Those who want an easier rust (ie, baremetal, systems programming)
- Mojo is built on MLIR, and I would imagine that this is a pretty rare skill at the moment
- Modular at some point will need to explain how to build mojo (which itself might be changing)
All this being said, I would like more design proposals and also a roadmap on the features they are prioritizing and working on. High level design and architecture does not require code; it requires ideas.
It was only recently that they clarified the license issue, I was not
able to do anything with it at work (and not sure if I want to invest
the energy to rework projects) until I had some idea of the
restrictions. There is a different between asking them to open-source
all of modular/mojo and knowing that they make no claim or restrictions
on what I as a user write, and the basic license. The IT folks have
still not gotten back to me about if I can use it for my work at NASA.
Before detailing an actual license, no one would touch it, but I still
cannot do anything with it for work.
The following is quite dated, but still some good background, https://blog.codinghorror.com/pick-a-license-any-license/.
Following https://www.modular.com/legal/mojo
# 2. SDK RESTRICTIONS AND USAGE
Licensee shall not: (a) modify, adapt, translate, reverse engineer, decompile, disassemble, or
create derivative works based on the SDK or any part thereof; (b) remove, alter, or obscure any
proprietary notices, labels, or marks from the SDK; (c) use the SDK in an Application for non-
internal or commercial purposes, or otherwise in any production environments; or (d) use the SDK in
any manner that violates any applicable laws, regulations, third-party rights, or other Modular
terms or agreements by which Licensee is bound. Licensee acknowledges and understands that its use
of the SDK may be subject to collection of certain telemetry, usage, and other data which captures
Licensee’s interactions with and use of the SDK (collectively the “Usage Data”). As between the
parties, Licensee acknowledges that Modular owns all right, title, and interest in and to the Usage
Data and may use or exploit it for any purpose it deems fit, including but not limited to for the
purposes of improving the SDK. Any collection, storage, or use of Licensee personal information is
governed by [Modular’s Privacy Policy](https://www.modular.com/legal/privacy), which Licensee hereby
acknowledges upon acceptance of these Terms.
I am sorry but this gives me NI LabVIEW feels and is in fact a deal breaker for me personally. You will probably find many clients inside the universities, government agencies and other, cheers.
Yea. I keep asking the software approval folks to see if I can install it on any NASA equipment. I keep hearing crickets... Not being able to use it in production environments, may or may not be OK. Also, do you consider any government use to be commercial? Until I get permission to use this on any project, I cannot even touch it...
I took a look at the FAQ: https://docs.modular.com/mojo/faq.html#why-not-develop-mojo-in-the-open-from-the-beginning
Why not develop Mojo in the open from the beginning?
Mojo is a big project and has several architectural differences from previous languages. We believe a tight-knit group of engineers with a common vision can move faster than a community effort. This development approach is also well-established from other projects that are now open source (such as LLVM, Clang, Swift, MLIR, etc.).
This sounds reasonable; I understand there can be a good amount of overhead and scattering in FLOSS governance, and can appreciate the velocity gains of a tight and focused dev crew.
@lattner If Modular truly intends to FLOSS Mojo after some "incubation" period, why not adapt a source-available license that guarantees an eventual license change to FLOSS, such as the BSL or FSL?
The FSL 1.0's "Grant of Future License" clause sounds aligned with what Modular is claiming wrt it's FLOSS plans:
## Grant of Future License
We hereby irrevocably grant you an additional license to use the Software under
the Apache License, Version 2.0 that is effective on the second anniversary of
the date we make the Software available. On or after that date, you may use the
Software under the Apache License, Version 2.0, in which case the following
will apply:
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
BTW, yesterday I got approval to install Mojo on a couple of NASA's machines for evaluation. This will continue to be a slow process, but I may get to finally spend some work time with the tools ;-)
https://www.modular.com/blog/the-next-big-step-in-mojo-open-source
March 28 2024 - License is Apache 2 with LLVM exceptions
Since you have a repository on an open source platform (github) promoting mojo I think it's fair to answer the below questions here (instead of Discord):
Reason for asking is to prevent future lock-ins (people migrating away from python and finding themselves with a limited version or having to pay for mojo).
Many thanks, Max