License explanation

This page contains an old discussion about the AGPL license. Since the license setup was since changed, it is no longer valid. The current license text is available at https://github.com/makehumancommunity/makehuman/blob/master/LICENSE.md

 

Old License explanation (no longer valid for MakeHuman 1.2.0 and later)

Due to repeated forum questions about the licenses, we have decided to write down our summarized interpretations of how the license terms should be read.

The following is not a part of the license text, but rather an attempt to translate it into understandable words. The complete and only valid license text is available here:http://www.makehuman.org/license.php

The overall purpose

The overall purpose of the license split is to provide artists with as much freedom as possible, while still ensuring that the core of the open source project MakeHuman remains open source. We are thus trying to remove as many obstacles as possible from using data produced by MakeHuman, while protecting the data that constitutes MakeHuman.

XYZ is not what you said on the forums/facebook/via email a while ago

These clarifications were produced because it was felt that there was some confusion about what the license terms actually meant. The clarification is per 2015-05-26 the authoritative reference for the MakeHuman team's interpretation of the license terms. Any forum post, comment or other information regarding the license terms posted before the event of these clarifications shall be considered superseded by the text you're reading now. Any forum post, comment or other information regarding license terms which is not found here or in the license text specifically, shall from the publication of this page be considered to be purely for the sake of discussion and never a source of actual license terms.

In short: The forums are not to be considered a source of license terms. The license text is.

Some definitions

  • Derivate: A derivate is when you take a resource and extend or modify it. For example, if you copy/paste parts of the source code, add your own stuff and repackage it, you have made a derivate. The same goes for when baking together your product with an asset (for example a target) that originated from MakeHuman.
  • Aggregate: An aggregate is when to take a resource and bundle it (without modifying it) together with other stuff. For example, making a software which utilizes MakeHuman as a required part would constitute an aggregate
  • Export: An export is when you save a model to an external file format (such as FBX or DAE). The export usually contains the transformed mesh, textures and meta-data.
  • Output data: "Output data" is a somewhat wooly term we previously used instead of "export", while meaning the same thing. We've stopped using that now. But if you still encounter it somewhere, think "export".

Why is all this even a discussion? I use a text editor to write a text file and then I own the text file. The license of the text editor never applies to my text file. Why can't the same be said or used for MakeHuman?

It's not so easy. The core of MakeHuman consists of a) source code, b) binary assets, for example a rather complex default model and c) a large database of targets (think modifications of how the human looks). When making an export, what actually happens is that several assets, for example the default model, textures and some of the targets gets copied to a new file, along with your own modifications. If we had not specified the CC0 exception at all, this copying would by necessity constitute a derivate of the assets and thus be covered by AGPL.

What do you mean with "inside" MakeHuman? What is "file export functionality"?

We want to make clear that there is a limit to the CC0 exception. The exception is only applicable when you use MakeHuman for what it was intended for: Design a model in the GUI and export it so that you can make something of it further down the line. Specifically, the CC0 exception does not apply if linking to MakeHuman as a library, if using MakeHuman in server mode as a component in an aggregate, or if making code interventions to make mass exports. In these latter cases, there should be no confusion that the AGPL license applies.

The export function

"File export functionality inside MakeHuman", means that you started up the GUI, made your modifications and clicked on a button in the "export" tab.

What counts as an "official" version of MakeHuman? And what counts as an "unmodified" version?

We want to make clear that we're the only ones who can grant the CC0 exception. If someone takes the source code of MakeHuman and modify it, they have a different product. That product is no longer the official MakeHuman, and the CC0 exception does not apply. In that case only the AGPL license applies.

To make it easier for users to know which is what, we're stating that the CC0 exception applies for any binary you download from the MakeHuman official services (such as tuxfamily, the makehuman.org homepage, the official BitBucket repository for MakeHuman). These are to be considered unmodified and official versions of MakeHuman.

Further, we are going to validate the versions made available in various linux distributions with the goal of classifying these as also being official and unmodified (even knowing some files may have been moved around a bit to fit the distribution). This process is ongoing.

What about (non-bundled) plugins?

A separately downloaded plugin constitutes a modification of the MakeHuman application. The output of a third-part plugin is not applicable for the CC0 exception.

Note futher that a plugin (in all currently conceivable cases) has to link to MakeHuman in order to work at all. This will automatically move it into the domain of AGPL since it has to be either considered a derivate or part of an aggregate.

Basically I could deduce a part of the target database (which is AGPL) by comparing two exports (which are CC0). Since the exports are CC0, I now have a CC0 licensed part of the target database instead of exactly the same but AGPL licensed part in the original database. Or?

Our interpretation is that the target is still AGPL. What you did was essentially figure out a way to copy the target although via a different procedure than a simple copy/paste. It does not matter through which practical steps you got your hands on the target: you still copied an AGPL licensed resource, and it remains AGPL licensed. When we mention "reverse engineering", the above is what we mean.

CC0 allows me to do whatever I want. I'm going to use the CC0 exports to make a commercial program "CreateHuman" with exactly the same functionality as MH, but with my own branding.

It is not a problem per se to make a closed-source program with a similar purpose as MakeHuman. However, you cannot do so if you base it on reverse engineered data. If it contains any such data the new product will have to be licensed AGPL. So basically, the closed-source "CreateHuman" application will have to be cleared of any trace of AGPL:ed data, for example reverse engineered parts of the MakeHuman target database. So by all means: If you can make a MakeHuman clone without using any morph info, mesh info, source code or other original MakeHuman assets, the go ahead with it. We will be somewhat curious how you did it though.

AGPL is a viral license. If a certain kind of output is covered by AGPL (rather than CC0), any combination/derivate/aggregate with it is also AGPL. This is completely unusable for, say, a 2D image or a youtube video. Is there a limit to how long the virality extends?

AGPL applies to anything which is a combination, derivate or aggregate. However, there is also limit to this. Once there is no trace whatsoever of any AGPL:ed original data in an asset, it can no longer be counted as a derivate. When exactly this happens is something of a philosophical question, but as a few guidelines, we think that the following examples no longer actually contain any traces of target data or the default mesh:

  • A rendered 2D image
  • A screenshot
  • A video posted on youtube

They do (in all likelihood) still contain traces of things such as skin textures. These are originally 2D images. Which is why we explicitly give the permission to use such assets under a CC0 license.

So in summary: As long as you're not doing something very odd (such as reverse-engineering target data, or building aggregate software with the MakeHuman application) you can be pretty sure that any 2D graphical end result of a pipeline is outside what we claim license control over.

So even if I used a modified or unofficial MakeHuman, I can still produce a 2D image or a video which isn't necessarily covered by AGPL?

The same applies for any AGPL:ed asset. If there is no longer any trace of the asset in the end result, it is outside of what we claim license control over.

I want to link to MakeHuman as a library in my non-gpl -licensed application.

You can't. AGPL stipulates that any derivate or aggregate has to be licensed AGPL too.

As a side-note this is the functional difference of LGPL and GPL/AGPL. LGPL does allow linking without forcing the end result to adopt the LGPL license. But MakeHuman is licensed AGPL, not LGPL.

I want to make a web service for designing humans. I'm not going to link to makehuman as a library, I'll just simply call an unmodified version of it and get CC0 output which I can then do whatever I want with.

You can't. This would constitute an aggregate (quite aside from ignoring the fact that we haven't granted a CC0 exception for automated exports). Even if you're only using your product in server mode on your own machine and only distribute output rather than the original software, you still have to provide the source code of the sum total application under the license terms of AGPL.

This is the functional difference between GPL and AGPL. With a GPL application you don't have to provide the source code if you're only using the product on your own server. With AGPL you have provide the source code if you allow users access to the functionality even if they never actually get their hands on the original product.

A guy "A" (outside MakeHuman) made a target/skin/clothing/asset for MakeHuman and licensed it "B". I have imported this asset in MakeHuman and made an export which utilizes it. Is my export covered by CC0?

Not unless "A" gave you the permission to use the asset under CC0. MakeHuman can only grant license exceptions to things which are MakeHuman's to begin with. You cannot use MakeHuman as an excuse for violating the license terms of someone else's product. If you have an asset licensed "B", you have to abide by the license terms in "B" no matter if you involved MakeHuman in the process.

I'm an indie game developer. You are evil for forcing me to adhere to AGPL since I want to make a closed source game with a character generator. Can't I get a special exception?

Our product, our rules. MakeHuman is an open source product. We intend for it to remain open source. Eventhough we would be legally allowed to make exceptions (copyright holders can always assign a different copyright to assets they own) we are not doing so at this time.

This might change when/if we can think up a good legal scheme for it, but don't hold your breath.

AGPL is an evil license

By all definitions available, AGPL is an open source license. You may or may not like the terms, but they are the terms under which you are for free, without having to do anything at all in return, allowed to use a software which has taken close to 15 years to bring up to the current point. Again: our product, our rules.

I made a model which I have started to use/sell/distribute. Now someone else made a model which looks exactly the same as mine and they say it's their model.

As long as you didn't add something which didn't originate from inside MakeHuman, there is nothing substantial to copyright. In essence, an export from MakeHuman is a mix of the base mesh, target data and binary assets. We grant you the license to use your exported model under CC0, but that does not stop anyone else for getting the same exception for exactly the same work.

In short: you can only declare copyright and decide license for your stuff, not for our stuff. The fact that you used our stuff does not stop anyone else from also using our stuff. Your control kicks in when people copy from you, not when they copy from us.

What you can claim copyright over is things you added to the model. For example, if you imported the model in Blender and continued to work on it there, those particular changes are yours to copyright and decide a license over. If someone else makes an asset which is similar or same as that work, then it's entirely possible a copyright breach has been made. However, that is a thing between you and the other guy and not something which has to do with MakeHuman.

I think what you have done here constitutes a license change. I was granted another set of license terms when I downloaded MakeHuman a while ago. I refuse to follow the new license terms.

We don't think that any of what we've written makes any functional difference for 99.9% of our users, although for the remaining 0.1% there might have been a vagueness in the previous license terms that made a difference. We won't try to revoke any previously granted license terms, but from the event of publishing the above, the currentl formulation is what applies.

I still have questions about the license. What happens if I ask them on the forum?

We will try to answer you. However, and this is important, nothing that is said on the forums is ever a contractual binding promise nor a grant of modified license terms. If something is missing we will try to include it here, and when that happens it's the official viewpoint of the MakeHuman team. Not before.