Question about licensing of core files

Status
Not open for further replies.

dhylands

Well-known member
Hi,

This question is probably directed to Paul.

I've been working on MicroPython, and, if possible, I'd like to checkin some of the .c and .h files from the hardware/teensy/cores/teensy3 directory in the MicroPython repository.

Right now, the list of files that I need is:

Arduino.h
HardwareSerial.h
analog.c
avr_functions.h
core_pins.h
mk20dx128.c
mk20dx128.h
pins_arduino.h
pins_teensy.c
usb_desc.c
usb_desc.h
usb_dev.c
usb_dev.h
usb_mem.c
usb_mem.h
usb_names.h
usb_serial.c
usb_serial.h
yield.c

The MicroPython code is released under an MIT license. I'd like to find out what license these files are released under. If need be, I can include a speciific license file in the directory containing the core files.

Currently, in order to build MicroPython for teensy 3.1, the user needs to install Arduino 1.0.5, install TeensyDuino and then point to the arduino tree with teensduino installed.
 
The license info at the beginning of each file is the ultimate reference for the open source license of that code. Anything I or others might write in forum threads or other conversation should *NOT* be considered the license info. I know this is stating the overly obvious, but before I write anything else, I want to be absolutely clear that the license info on each file is really the license, not this conversation.

The core library uses a MIT-like license. There's an extra clause which requires special attribution in certain circumstances. Using the core library code as part of MicroPython probably does meet the condition of "incorporated into a build system", since it's compiling the source to be used on hardware. Simply compiling the code into your own fixed-function firmware, which is the most common way people use the code, probably isn't anything like a "build system", except perhaps in extremely unusual cases.

The extra requirement is basically that you must list "Teensy 3.1" in any menu, config file, or whatever way someone using that build system would select the hardware target. It certainly sounds like that's exactly what you're intending to do, so hopefully this requirement should be a non-issue.

One possible scenario, which isn't necessarily the only case, of what the license does not permit is removing "Teensy" from highly visible locations, like Arduino's Tools > Boards menu, where users select which hardware the build system targets. It's easy to imagine hypothetical competitors who would love to sell MK20-based hardware (perhaps with a different mechanism to get their code onto the board) which leverages all the hard work that's gone into developing the Teensyduino core library that makes these chips very compatible with most Arduino code, with little or no mention of Teensy 3.1. The main goal of this special clause is to keep the license highly permissive, but when the code is used as part of a build system, Teensy must be mentioned in those highly visible locations. Simply retaining the license info in the original code, and perahps a mere footnote on a deeply buried web page or mention in release notes nobody reads is not sufficient. Teensy has to be mentioned in the locations where users of such build system actually select or configure the target.

Hopefully this lengthy explanation helps. But please remember, this message isn't the actual license. It's merely conversation about the license, which doesn't modify or supersede the license text. Only the license text on the actual file is the license.
 
Hi Paul,

Thanks for your comments. In addition to what the actual license says, I'm also interested in ensuring I don't offend, and keep to the "spirit" of how you'd like to see the code used.

Currently, building for the teensy 3.1 would be:
Code:
cd micropyton/teensy
make

So there is a separate tree just for the teensy 3.1. The other build trees in MircroPython are named stmhal, unix, windows, bare-arm, and qemu-arm. To build for the official micropython board, you do something similar:
Code:
cd micropython/stmhal
make

Right now, the Teensy3.1 is the only pjrc product which has enough RAM/flash to support MicroPython, so there are currently no other "similar devices" from pjrc.

MicroPython has a wiki page which lists the supported/intended boards:
https://github.com/micropython/micropython/wiki/Boards-Summary with a page for the Teensy 3.1
https://github.com/micropython/micropython/wiki/Board-Teensy3.1 which also includes a link back to the pjrc website.

So, I think that what I'm proposing satisfies the criteria.

I'd also like to put teensy firmware loader (the teensy* files from arduino-1.0.5/hardware/tools) some place accessible. They don't really belong in the micropython repository, but I think it would be useful for them to be available without having to install arduino and then teensyduino. If they're available from the pjrc.com site, I'd be happy to reference them from there, otherwise, I could just put them in a separate repository in my MicroPython account. I didn't see anything that talked about the license that those binaries are distributed under.

I guess there should be the windows and mac versions of the same in the same place.
 
I'd really enjoy working with microPython on Teensy 3.1. Looking forward to a dedicated forum section on it.
Also, I think I might have time to contribute if you care to delegate something that can be carved out.

Steve
 
Status
Not open for further replies.
Back
Top