Could somebody please resolve a particular licensing confusion for me? I'm always really puzzled by how software licensing works.

I want for everyone to be able to use my software with minimal, if any, restrictions and no warranty. So I just use a permissive license (MIT License was my choice) and write something like

This project, including all of the files and their contents, is licensed under the terms of MIT License

See LICENSE.txt for details.

in the project's README.

I am confused about how this works for project's "artifacts" (auxiliary files; files, that are actually not source files). I want the same licensing terms to apply to every single file of my project, including

  • build system/documentation files (Makefiles, CMakeLists.txt, Doxyfile, etc.; I'm actually almost certain the clause above applies to those files, doesn't it?),
  • HTML/JavaScript/CSS/XML/etc. files (are those even licensed? I'm not sure. I also want people to examine them, derive their own versions, etc.)
  • images and other binary assets (I want people to be able to use them in presentations and such).

I've seen people doing sort of a dual-licensing for their projects. For example, source files are licensed under the MIT License, and images are licensed under one of the Creative Commons licenses. Why would they do that, isn't MIT License sufficient? I mean, the text of the license only discusses "the software". I'm not sure if e.g. images are included as a part of "the software", especially if the images are a product of the software (like if I want to provide examples of what sort of imagery the software is able to produce). Or are they?

And if the project doesn't actually contain any source code? What if it's only a set of (from my perspective, useful) configuration files, which can, if not used properly, result in another piece of software behaving incorrectly and messing up user's data?

I really want to come up with a universal wording to include in every single one of my projects and just be done with it. Also, if a useful suggestion comes up and I decide to change my project's licensing terms, can I just do it if I'm the only contributor? Considering the project was "licensed" under the MIT License.

I feel autistic by asking this, since none of my projects will ever get anybody actually interested, but I always feel like I need to scratch my brain when I think about this, so I would be really glad if somebody could clear this up for me.


1 Answer 1


It seems to me that you're actually asking a number of questions so I've tried to answer them individually. I'm phrasing them as quoted question, although I've made them up in an attempt to rephrase what I think you've meant to ask.

Should I use the MIT license for all files in my project?

Given your description of your goals what you want people to be able to do with your work, using the MIT license for all source files in your project indeed seems like a decent choice.

Should I also apply the same licensing terms to “auxiliary” files like Makefiles etc?

Absolutely. They are a vital part of your project because without them, your product will not be usable. If your project can only be built using non-free Makefiles, many people – including the FSF and myself – will consider the whole project non-free.

From a copyright point of view, a Makefile is just as much a piece of work as any other source file in your project. You wrote it – you own the copyright for it. If you want me to be able to do something interesting with it, you have to give me permission, which you do by licensing the file to me. In the absence of any contradicting evidence, one would assume that the generic info in the README would apply to all files as you're correctly assuming. Anyway, I would recommend that you put a short copyright notice into each and every source file you write just so you're leaving no doubts. The notice could read like this.

Copyright (c) 2016 Egor Tensin

This file is part of Fancy Project.  This is free software; see the file COPYING
for more information.  There is no warranty; not even for merchantability or
fitness for a particular purpose.

Since the MIT license is rather short, you could even consider copying its entirety into each file. Other licenses, like the GPL, suggest a specific notice to be placed into each file, which will differ from the example shown above.

Are HTML / JavaScript / CSS / XML files subject to licensing?

Sure. Again, copyright is agnostic to the language your work is written in. All that counts is that the files are the product of a creative human process. Everything from the previous section also applies to these files.

What about pictures and other binary files? Should I dual-license them under a Creative Commons license?

There is nothing in principle that would make the MIT license inapplicable to images, as long as they are subject to copyright. One thing to consider, though, is that the MIT license is not very frequently used for artistic works or presentations. So if you want to make it easy for your users to use some pictures in their works, you will do them a favor by dual-licensing them under a Creative Commons license. If you are the copyright holder, you can simultaneously license your work under as many licenses as you wish. For example, you could put the following statement into your README file.

Copyright (c) 2016 Egor Tensin

This project is free software.  There is no warranty; not even for
merchantability or fitness for a particular purpose.

You may use, copy, modify and redistribute all files included in this
distribution, individually or in aggregate, subject to the terms and conditions
of the MIT license.  See the file `LICENSE-MIT.txt` for details.

In addition, you may -- at your option -- use, copy, modify and redistribute all
images included in this distribution under the directory named `pictures`
according to the terms and conditions of the Creative Commons Attribution 4.0
International License.  See the file `LICENSE-CC-BY.txt` for details.

Dual-licensing the pictures has the benefit that your project still uses the same license for all files but also offers using a more “natural” license for pictures for those users who would benefit from this.

What if the images are produced by the software?

Copyright only covers creative works created by humans. If an image was exclusively created by a machine with no creative input by a human, then it is not copyrightable and not licensable. That said, most graphics will probably include at least some degree of creative human input so you'll be on the safe side by licensing them as well. In the best case, the explicit license statement will turn out to be superfluous. Of course, I don't know your pictures and how much creativity went into them.

Can I change the licensing of my project at a later point in time?

The copyright holders are always free to grant additional permissions on their work. That is, if you release today under the MIT license and decide tomorrow that you also want to license the pictures under a Creative Commons license, you're totally free to do that. What you cannot do is revoke a free software license. That is, if you publish under the MIT license today and then decide tomorrow that the GPL would be a better fit, everybody who has already received a MIT-licensed copy will continue to be able to use the software under the terms and conditions of the MIT license. And since this license allows unlimited redistribution, so will everybody else this person decides to furnish a copy to. In conclusion, it might be wise to offer licenses conservatively as you can always add more later but once you've published, you can't take them back again.

  • 4
    But while there's no way to revoke the license of software you've already distributed, there's nothing to stop you changing the license terms for new versions of the software. For instance, if you re-design all the artwork for your software, you could distribute the new artwork under a completely different license if you wanted to.
    – Simon B
    May 18, 2016 at 9:13
  • Thank you very much for your very comprehensive answer. I apologize for not splitting my question up into smaller chunks. May 18, 2016 at 13:49
  • I have just a small follow-up though: what if my project is comprised entirely of a set of images and HTML files (e.g. is a static site)? I assume it was OK for me to license the project under the MIT License when the project was initiated, wasn't it? I'm just still a bit confused since the license text talks about "the software", but HTML files and images are data, not code. Would you recommend dual-licensing such projects under a CC license also? Can I do that for an existing repository? May 18, 2016 at 13:50
  • And if I can, would that mean that the versions prior to the commit that adds the second license would only remain licensed under the terms of the MIT License? May 18, 2016 at 13:50
  • 1
    Nothing stops you from using the MIT license for a website but it would be an unconventional choice and most users would probably be happier with a CC license. You can always offer CC as an additional option, even for your old versions. How you'd announce this will depend on how you publish that. Personally, I wouldn't worry about the old version too much. The new one ought to be more awesome anyway, right? And as Simon noticed, you don't have to apply the formerly used license to new distributions again. You just cannot take it away from the distributions already made.
    – 5gon12eder
    May 18, 2016 at 18:46

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.