I am modifying some STL files for 3d printing which originated from a GPL'd project, and though the originals are available, the "object code" STLs are easier to modify in my case.

Ignoring the fact that the GPL is questionably applicable to hardware, what are the requirements in general for what to do if one modifies the object code of a GPL program and distributes that? There are all sorts of requirements for what to do with regards to providing source, but what if I don't have source files of the same format as the original to provide?

Another confusion is what occurs if I import the STL (object code) into my computer aided design software, and modify it in that software. Do I need to release the CAD file in native, easily editable form following my edits? (or in a software example, say I disassemble a GPL program in IDA and edit it, do I need to release the IDA database as well as the modified object code?)

In any case, do I need to provide the source code of the upstream project?

1 Answer 1


The GPL license is very clear on this point: you must always distribute source code. If you don't have source code, then you must not use the GPL license, which means you can not distribute your work if you are not the original author of the complete work.

However, for the GPL license, source code does not mean "human readable" or "ASCII-based". The GPL license defines source code in this way

The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

If a binary file format is the preferred form for making changes, which is, for example, the case in photo editing, then the source code has a binary format.

As far as I can tell, CAD software can happily work with either binary or ASCII-based STL files for editing 3d models. That means that both formats of STL files count as source code for the GPL license.

  • What about the IDA database with the modified object code? Do I need to release that? Jan 1, 2019 at 22:45
  • Issue number two is that STL files are inherently lossy if they contain curves, so for example if I import one which doesn't have curves (losslessly), add some in, then export that as STL and release it, do I need to provide the CAD file which provides an editable form of the curves in the object even if the original project didn't provide that? (I can think of a similar analogy of a GPL'd raster image which I vectorize then rasterize again) This answer also misses the point that the files I'm editing are GPL licensed already, there is nothing I can do to "not use the GPL license". Jan 1, 2019 at 22:54
  • If you prefer a photo editing example: what if I import a GPL graphic in jpeg/PNG form (though it has GIMP XCF source) into Photoshop, edit it, and release it. Do I need to provide the Photoshop file? Jan 1, 2019 at 23:11
  • @YetAnotherUser, for non-software projects you have to be a bit pragmatic. Would you (and the rest of the community) be happy to make extensive changes to a 3d model if you only have an STL file of it, or would you start to hunt down another/additional format? If you would be happy, the STL files are a "preferred form for making modifications" even if not all details (curves) are represented exactly. The key is how happy you (the community) are to use it as a basis for changes, not how accurate the description is. Jan 2, 2019 at 7:46
  • 2
    @YetAnotherUser: Your obligation is to release the changed 3d model in a format that is preferred for making changes. The fact that you didn't receive the original model in such a format doesn't release you from that obligation. Jan 3, 2019 at 8:33

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.