For embedded system projects which have small hardware using MCU's and sensors and use open source c-source codes. How will it make a difference if my license is an MIT or a GNU licenses?

  • 1
    When speaking of computer programs, "code" is always singular. "Codes" are the things you use to open a combination lock or to encrypt secret messages.
    – JRE
    Commented Jun 2, 2019 at 10:13
  • … or to add information to allow for forward error correction (channel codes), or to make a digital data stream transportable reliably over a physical cable (line codes). Commented Jun 2, 2019 at 10:22

1 Answer 1


You're asking this from an electrical engineer's perspective, which puts all this in the context of building electronic devices and handing them to other people.

It's very simple: If you give anybody a device with GPL software on it, you must offer the source code at no additional expense (aside from the physical cost of copying the source code, which should be effectively zero these days) to them, especially including all your modification to it, and all the build infrastructure needed to build that software.

MIT doesn't require that.

Both licenses require you to let the receiver of the device including the software know that the software is licensed under MIT or GPL terms.

GPL is more "dispersive": when you write software that builds upon GPL code (e.g. you use a GPL library to calculate coordinates), that software becomes copyleft, too, and you'll need to also offer that software's source code to the receiver of the device.

Notice that there are multiple versions, especially of the GPL, and some contain specific exceptions. So, you need to make an individual case for each.

Generally, most complex embedded consumer devices you know run a lot of Free & Open Source Software – for example, the Linux kernel powering both your Android phone and probably your airplane seat TV and quite likely your internet router and … is GPL'ed. Your smart TV contains probably copious amounts of LGPL, MIT, Apache licensed code. The Arduino Platform itself is LGPL/GPL. The arm mbed operating system, which is relatively popular in IoT devices, is Apache Licensed; FreeRTOS, one of the very most popular emdedded operating systems for smaller, real-time devices, is MIT-licensed.

Also note: if you're not giving your device to anyone (paid or not), but are keeping it to yourself, there's no differences.

Further, note that in the world of hardware description languages (e.g. Verilog, VHDL), things are a bit fuzzy when it comes to the effects of GPL.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.