12

So let’s say I make a script/small app that has a ton of my own code, and only a small section of it is comprised of a utility from someone else (let’s say a simple operation like sending files to the trash, or sending a notification), which uses a license, like MIT.

Now, I want my script/app to be public domain (or MIT licensed, let’s take two examples).

  1. How do I make the distinction for this in my code? How do I exactly explain “this part of the code is encumbered by this license, and this other part is my license”?
  2. Every copy of it I distribute needs to include the license? That seems really idiotic/cumbersome, having to pass a dumb text file around.
  3. Do I then have to include both files (theirs and mine)?

Number 3 is my biggest doubt, how do I reliably and clearly point each portion of the code to each specific license? It is honestly the most stressful part of programming to me. In the examples above, none of those apps are “mission critical”, but they are nice additions, and not including them because of the confusion/limitations it causes is a real shame.

4
  • Is the utility a library that you use? or code that you include? Commented Nov 15, 2013 at 2:57
  • In the examples I gave, they’re both utilities. I wouldn’t call them libraries since they’re not exactly interacting with my code, they’re supplements that allow me to do a few more operations for very specific things; I’m not modifying their code in any way (in this case they’re both binaries that I’m including, not any source code). But if I can get an answer encompassing both cases, so much the better. Commented Nov 15, 2013 at 3:04
  • I'm hoping to get the question narrowed - rather than broadened. Things like 'small app' imply compiled and bundled, while 'small script' tends to imply 'a small shell/perl/python script that uses other stuff that is installed separately'. These have very different implications for licensing. Likewise, including code is very different than linking to code. Could you narrow it down so that someone doesn't need to answer 16 different combinations of situations? Commented Nov 15, 2013 at 3:11
  • “These have very different implications for licensing”. That’s the problem, I do not have any idea what they are, that’s what I’m trying to figure out. Let’s say something like an Alfred workflow, i.e. something that comes bundled together where you include various bash/ruby scripts and that third-party app. Commented Nov 15, 2013 at 3:24

3 Answers 3

13

In the example you give, the MIT license, it says

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

So, if your software contains theirs then "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software".

That's all there is to it.

It's a good idea to put the licensed software in it's own directory, along with the license. Your main license files should highlight which parts are yours and which have another license.

The main directory where you hold documents such as the license (maybe the root directory of the project, or a Documentation directory), will contain files such as README.TXT or LICENSE.TXT. One of those should contain a section something like

This software includes third party open source software components: Foo, Bar, and Whatsit. Each of these software components have their own license. Please see ./Foo/License.txt, ./Bar/License.txt, and ./Whatsit/License.txt.

The main thing is to make clear that those parts have their own license, and since open source products nearly always require that the source must be available, provide a link to the source project, and/or the source itself.

Just make sure that anyone who looks can see that you are complying with the licenses.

2
  • “It's a good idea to put the licensed software in it's own directory, along with the license”. Sounds like a good idea. “Your main license files should highlight which parts are yours and which have another license”. That’s my main “how?” in this — if I have a pre-picked license, how should I go about declaring this? Commented Nov 20, 2013 at 1:12
  • Ok, updated my answer. Commented Nov 20, 2013 at 8:31
1

Your examples seem to be desktop application based.

If I can provide another example, in npm ecosystem, yarn has fantastic tools. I usually use these 2 commands

  • yarn licenses list --prod > build/vendor/LICENSES.txt
  • yarn licenses generate-disclaimer --prod > build/vendor/LICENSES.md

The first one generates something like this

yarn licenses v1.22.22
└─ MIT
   ├─ [email protected]
   │  ├─ URL: git+https://github.com/twbs/bootstrap.git
   │  ├─ VendorName: The Bootstrap Authors
   │  └─ VendorUrl: https://getbootstrap.com/
   └─ [email protected]
      ├─ URL: https://github.com/lodash/lodash.git
      ├─ VendorName: John-David Dalton
      └─ VendorUrl: https://lodash.com/
Done in 0.35s.

And the latter just concatenates the LICENSE(.?(md|txt)) as-is

THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY BE CONTAINED IN PORTIONS OF THE NPM WEB SAMPLER PRODUCT.

-----

LICENSE 1

-----

LICENSE 2

-----

etc.

TL;DR

  1. Create a LICENSES file (pluralized, not to be confused with LICENSE)
  2. Copy+Paste all the contents of the LICENSEs you're leveraging in your production deliverable
-2

You have the copyright on code that you wrote. Your software uses a small library with the copyright being owned by a third party. The complete software therefore has two copyright holders.

You can completely remove the third party code. The rest is yours and you distribute it any way you like. You can also add a description how to add the third party library back in, any consequences are not yours because you do no copying.

Or you find out if you can distribute the whole software in a way compatible with its license.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.