The firmware for an embedded device (e.g., a toaster) is modified significantly. Algorithms are rewritten from scratch, the code is made compatible with different hardware, etc. The end (hardware) product is sold, but the binary of the firmware is not provided separately, and there is no way to extract it from the device.

What parts of the code and device (if any) should be made publicly available?

  • Only the original, unchanged code?
  • The original code while marking the changed places to relieve the liability from the original distributor?
  • The entire changed codebase? The electrical schematics for the device?
  • The CAD drawings for the enclosure?

I am interested in minimizing the source code's exposure as much as possible.

  • Which specific Open Source Library covers the original code? There are many different licenses available, and they say different things. Common licenses are GPLv3, MIT, BSD, etc.
    – abelenky
    Aug 14 at 16:02
  • 3
    I’m voting to close this question because it's better asked on Open Source SE opensource.stackexchange.com/questions/tagged/gpl-3 Aug 14 at 16:19
  • 1
    The original code is licensed under GPLv3, as stated in the title. Aug 14 at 16:32

2 Answers 2


All of the code must be published and licensed under GPLv3

GPLv3 is a strong copyleft licence that requires all modifications to also be GPLv3. QED.

If you didn’t use any original code, that is, you rewrote the firmware from scratch entirely, then you would own the copyright and could release as much or as little as you wished. But if you use any of the original code, you are bound by the licence.

If the electrical schematics and CAD drawings are also GPLv3 licensed (which would be odd because GPL is a software licence, not a drawing licence), then the same would apply. The toaster and electronics themselves are not covered by copyright although they may be registered designs and patented respectively.

  • What is considered "rewrite from scratch entirely"? does the use of insignificant utility functions (that I could've written myself easily but decided to cut on development time) counts? What if I change function/variable names? you see my difficulty here? If someone wrote a simple function and licensed it under GPLv3, and someone else wrote the same function with the same exact code (for simple functions it is very possible)... could the first person enforce the license on the second one? sounds wrong but how can the second person prove it's his work? Aug 15 at 15:51
  • 2
    @HarryZalessky Not a single line of shared code. You can not use any part.
    – Trish
    Aug 15 at 17:50

The GPLv3 does not require source code to be published. It is just whoever receives a copy of the binary (in whatever form) who needs to be also provided with the sources. (Quite often this will be the public, which is why the myth about the need to publish the source code at all times exists.)

So, you only need to supply the source specifically to whoever you sell the hardware to, not to the public.

  • Yes, that's what I mean by publish :) Aug 15 at 15:54

Not the answer you're looking for? Browse other questions tagged .