4

My software is completely written in python and has the following architecture of down cascaded dependencies. I plan to share my whole source code (FileA, FileB, FileC) next time in GitHub: Software Architecture

  • FileA: Own written Gui with pyQt (apply GPL)
  • FileB: Own written Interface between GUI and Core (apply GPL)
  • FileC: Own written core algorithm is a standalone tool in a separate folder as the GUI files. Can be fully independent used on the command line without the GUI (apply MIT)
  • FileD: Independent external library written from somebody else with MIT licence. The code is in an external directory independent from my code, as part of the python installation and will not be changed by myself.

My Questions:

  1. Must I include the Copyright statement of FileD in my own MIT licence text of FileC or somewhere else in the environment of FileC?
  2. Or should I only give a note with the reference to the external MIT licenced library (FileD) within the readme of FileC and the Copyright statement of FileD remain only in the source code or licence text of FileD?
  3. Similar to (1.) Must I include the Copyright statements of FileD and FileC (just my own) in the GPL licence text of File B?
  4. Must I include in the GPL licence text of FileB or anywhere else in the environment of FileB the information that there are existing dependencies to one or more MIT licenced libraries?
  5. Or did the dependencies to the MIT libraries get lost within the GPL licence and can only be reconstructed by following the library definitions?
  • Which third party code are you actually redistributing? It sounds like File A, File B, and File C are all your own. And File D is written by a third party and is MIT licensed. PyQt is written by a third party, but I guess you are not including it in the distribution, or are you? – Brandin Oct 15 '18 at 5:47
  • "must I include [...] in my own MIT license text" What do you mean, you own MIT license text? For a given license there is exactly one license text (MIT, GPLv2, GPLv3, etc.) You may also have a file called LICENSE where you state what license your code is under, but this is just a text file. – Brandin Oct 15 '18 at 5:59
  • "Did the dependencies to the MIT libraries get lost within the GPL license..." - This question is very confusing. But maybe you want to ask about license compatibility. I.e., is MIT 'compatible' with GPL, and so on (most of these questions have already been asked and answered on here if you search for compatibility or compatible as a keyword). Dependencies are a generally a programming concept and have nothing to do with copyright. From the copyright perspective it only matters what you copied. For a example, a Word file depends on Microsoft Word, but you don't copy Word to distribute it. – Brandin Oct 15 '18 at 6:00
2

To license each part of your work under a specific license (GPLv3 for some components and MIT for others), one way is to place a header in each file or directory that states the license under which that part is distributed, and then refer to the full license text. For the MIT license, you can just use the entire full license text in your file because it is so short. For external libraries, the easiest way is to include the package unchanged in a separate directory, retaining any notices already there.

Based on your description here is one way to include the files:

gui/ ("File A", GPLv3) and gui_inter/ ("File B", GPLv3)

  • Include a GPLv3 header [1] in each .py file and the full license text in a file such as LICENSE.GPL. If you decide to display Appropriate Legal Notices in your application, then anyone who uses your work as a derivative will be bound to also include such notices as interactive screens in their version. If you decide not to display notices interactively, then derivatives need not do so. See section 5(d) of the GPL Version 3.

algo/ ("File C", MIT)

  • Include the full MIT license text. [2]

extern_lib/ ("File D")

  • Include all the original files of the external library. If you made no changes, you have no further obligations.

pyqt/ (optional)

  • Include all the original files of the external library. If you made no changes, you have no further obligations.

Must I include the Copyright statement of FileD [the external library] in my own MIT licence text of FileC [my core algorithm] or somewhere else in the environment of FileC?

This would only be required if you copy and paste the external library code (FileD) into your own program files (FileC). If you include them as separate files or directories, it will be easier to maintain and easier to tell what is what. If they are separate, then referring to FileD (the external library) from FileC (your core algorithm) would just be a technical matter of using the programming language's facilities for using external code (e.g. the 'import' keyword in Python, the '#include' directive in C, and so on).

Headers

For Python source code, you may include the copyright header as a comment (# at the beginning each line), or as a docstring as shown below. An advantage of using a docstring is that it will not be stripped out when compiled to a .pyc file:

[1] Example GPLv3 header

"""
Copyright (C) 2018 Tom Kate <user@host.com>

This file is a part of KateWare.

This file may be used under the terms of the GNU General Public License
version 3 as published by the Free Software Foundation and appearing in
the file LICENSE.GPL included in the packaging of this file.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.
"""

[2] Full MIT license text

"""
Copyright (C) 2018 Tom Kate <user@host.com>

Permission is hereby granted, free of charge, to any person obtaining a 
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

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

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
"""

In the MIT header, I would avoid including the phrase "this file is a part of KateWare" in the header, because it may cause confusion of what Bob should write in the notice if Bob wants to include your MIT licensed parts in his BobWare application, without redistributing KateWare as a whole.

For Copyright years, if you started writing a work in a different year and published additional changes or editions, a common convention is to include additional years as a list or range after the (C) symbol. For example:

Copyright (C) 2000, 2018 ...

Copyright (C) 2015-2018 ...

For more information see Do copyright dates need to be updated? and Which year to put in copyright notice when mixing old content?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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