Comments (15)
The license-
I believe all you need to do is put the copyright of this code in your license. They grant you use and modification rights but don't transfer ownership to you. So I think you're okay by adding this to your LICENSE-
stm libraries in stm/lib are COPYRIGHT 2013 STMicroelectronics. Licensed under MCD-ST Liberty SW License Agreement V2 which can be found here-
http://www.st.com/software_license_agreement_liberty_v2
from micropython.
stm324x7i_eval.c:
* Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
There's no such license in http://opensource.org/licenses .
http://www.st.com/software_license_agreement_liberty_v2 :
Product: means Your and Your’s end-users’ product or system, and all the related documentation, that includes or incorporates the Licensed Software and provided further that such Licensed Software or derivative works of the Licensed Software execute solely
and exclusively on microcontroller devices manufactured by or for ST.
That's already not Open Source. And now consider case of cross-device software. The license above literally says that if you use their source that you must develop only for STM devices. Yes, that just one possible interpretation, it makes no sense and complete b/s, but it means that some lawyer in some court may interpret it just like that.
You acknowledge and agree that any use, adaptation, translation or transcription of the
Licensed Software or any portion or derivative thereof, for use with processors manufactured by or for an entity other than ST is a material breach of this Agreement and requires a separate license from ST.
Here we go again, up and high. Does lying around in source code repository alongside similarly bullshit-licensed source from TI, Freescale, NXP, etc. with the ability of the entire source code product to be compiled for competing devices construes "any use"?
That's the situation in embedded development. Even initial attempts to change that (kudos to ARM) are awkward:
- http://dangerousprototypes.com/2013/04/26/cmsis-components-used-by-mbed-are-now-bsd-licensed/
- http://dangerousprototypes.com/2013/05/03/mbeds-bsd-b-s/
So, good open-source response is "f$%^ off", and that's why projects like https://github.com/pfalcon/cortex-uni-startup , https://github.com/pfalcon/libperipha (shameless plug), http://libopencm3.org/ , etc exist.
What to do now? Have this ticket around ;-). Ideally, it would be nice to move STM's code to a submodule, but there're more useful things to do now than try to accommodate all this b/s.
from micropython.
I think you're reading too much in this license. The 'Licensed Software' is the code in stm/lib. There is no clause that changes the license of micropython. Since this code is used in the stm portion of the code to build stm products I don't see a problem with it just staying there. In the future when other micro controllers are added either code from that manufacture will be used or a new HAL layer to encompass all micro controllers can be created. As long as the 'Licensed Software' (read the code that STM provides) is not used to derive a HAL for other micro controllers then it perfectly okay.
AFAIK, the MIT license doesn't restrict adding non-open source code to a project. Neither does it modify the license of non open source either.
from micropython.
There is no clause that changes the license of micropython.
There is no.
I think you're reading too much in this license.
I'm applying conservative ("everything which can be considered to be user's fault is user's fault") reading of what's written there. Hopefully you agree that there're enough ambiguity and loopholes in that wording.
AFAIK, the MIT license doesn't restrict adding non-open source code to a project.
Yes, but a project which has both opensource and non-opensourse code as a whole is NOT opensource. And obvious way to resolve that situation is to move away non-opensource code somewhere else.
from micropython.
I don't see any ambiguity. When building a product for the stm micro controllers, the code would include the stm/lib code and therefore would have to only run on a stm microprocessor as per the license. If micro python is ported to another micro controller, it would not include the stm 'Licensed Software' therefore could not even remotely be considered a derivative of the work, therefore their license doesn't apply.
I think including the STM license as I described satisfies both the copyright holder (STM) and any open source enthusiasts. The freedom is there for anyone to remove the stm licensed code and substitute others.
from micropython.
This is last time I'm showing you the ambiguity and loophole. I'm not a lawyer, and you can consult with one to get an opinion on what's plausible and what's not (only court can have authoritative decision). Myself, interested more in hacking.
If micro python is ported to another micro controller, it would not include the stm 'Licensed Software' therefore could not even remotely be considered a derivative of the work, therefore their license doesn't apply.
And yet here's MicroPython software: https://github.com/micropython/micropython . It's publicly available, so court can invite unlimited number of experts which will swear on bible that what's there is indeed MicroPython software. And here's where it includes STM-licensed software https://github.com/micropython/micropython/tree/master/stm/lib (experts will confirm it indeed includes). So, if said software is still in this state when said software supports other manufacturers' microcontrollers, then you're in breach of STM license, and at least lose right to use said software with STM-licensed software.
The whole idea of OpenSource licenses is that they protect their users from such b/s scenarios. And STM license vice-versa makes it possible. That's why STM license is not open source, and contaminates opensource projects (by subjecting users to liability which true opensource projects would not).
from micropython.
Hmmm, tricky stuff (or not, if you just go open source the whole way).
How are others dealing with this? Espruino seems to have just included everything: https://github.com/espruino/Espruino/tree/master/targetlibs/stm32f4/lib .
Like @pfalcon I'd rather be coding, but this stuff is important.
At worst we have to create a separate repo with the STM port.
from micropython.
eLua includes everything as well-
And they have lumped all the different platforms for different manufacturers (including stm) in one directory-
https://github.com/elua/elua/tree/master/src/platform
from micropython.
For the record, the stmhal/ port now has an MIT-style license for the STM Cube HAL layer. Only thing that has remained as the original license is the usb driver (which we are using).
from micropython.
That's great progress. Any thoughts on future fate of "stm" port. If "stmhal" truly supersedes it, might be a good idea to remove it in some time, to cut most of the above controversy.
from micropython.
Yes, I'd remove stm/, but I think some people are still using it.
from micropython.
Perhaps rename it to stm-obsolete for a couple months and then remove it?
from micropython.
Ok, stm/ was removed some time ago. Does everyone agree that we should be reasonably safe against http://www.phoronix.com/scan.php?page=news_item&px=MTczNDU and can close this now (is there any STM file in the codebase w/o explicit BSD license)?
from micropython.
ST's USB drivers are not BSD style. See eg https://github.com/micropython/micropython/blob/master/stmhal/usbdev/core/src/usbd_core.c
from micropython.
I see, then let's keep this open as a live warning.
from micropython.
Related Issues (20)
- esp32.wake_on_ext0 not workingon esp32s2 HOT 1
- ISR latency affected by BLE, unable to interface with 2kHz sample rate ADC. HOT 2
- Include a WASM interpreter as part of micropython or its standard library? HOT 3
- Renesas-RA: Pin-IRQ does not behave as expected. HOT 5
- MQTTS fail on ESP32-S3 but works in ESP32
- Cannot instantiate FrameBuffer from a bytes object HOT 9
- Build errors when building RPI_PICO for debug HOT 1
- mpremote cannot cat with recent MP on pyboard HOT 4
- asyncio module seems missing in self built firmware for ESP8266 board HOT 6
- nimble compile errors HOT 2
- ESP32-S3 Linking errors HOT 5
- esp32 wroom - guru meditation - socket accept (?) HOT 1
- esp32 - mDNS not working HOT 1
- rp2 - mDNS not working HOT 1
- rp2: Nonsense REPL input on Linux due to tty serial input echo race HOT 16
- docs: WLAN module, undocumented methods
- mpremote mount chdir() in mount fails after second call HOT 5
- STM32F407+MII+DP83848 not working properly HOT 20
- ESP32 SPIRAM IRAM overflow HOT 1
- ESP32 Outputting Garbage in REPL HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from micropython.