The ReadMe and COPYING says that SimGear is licensed under the LGPL-2+ but following files contain GPL headers so they seem to be licensed under the GPL.
@jmturner This might be something of interesting, specifically with relevance to the work regarding SPDX in CI. SimGear appears to be LGPL licensed but has a mix of GPL and LGPL code. I think this would probably get flagged by the SPDX checker whenever someone makes a commit that changes one of the LGPL source files.
Besides that, I think intermixing GPL and LGPL may defeat the purpose of the entire project being LGPL (if I can remember my licensing rules correctly).
I guess since everything else in FlightGear is GPL, it would seem like the straight forward option would be to formally codify SimGear as GPL. Given that the LGPL is more permissive, this shouldn't be a problem as far as licensing legality goes.
Last edit: ranguli 2024-10-21
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The problem is the original author of FG wanted to use some parts of the code in other projects, and we wanted the option for those to be private. So SG was created by pulling code out of FG.
Becuase Simgear has been LGPL for its entire lifetime, I think it's safe to assume any code in SG is LGPL, if the license is clearly 'from an old FG file' and says GPL.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
@jmturner Ah that's some very useful historical context, thank you. Good to know. Based on that, it seems like it would be safe to convert the headers of all GPL files into LGPL files. Would you like me to do that, as well as update the copy of the license text? The "L" in LGPL used to stand for Library but now stands for Lesser. I can also swap the license out for a markdown version as those as a bit easier on the eyes when viewing in web UIs.
If the change involved mass modification of SLOC it would be a mess for git history, but where all the change are contained to the header portion, we could perhaps get away with anywhere from one to a few commits and not make a mess of things?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
So there's some additonal changes coming, which might impact this: we are probably going to roll SImGear back into FlightGear, but only on 'next', and in doing that we will sacrifice the Simgear commit history anyway.
We don't want to re-write the FG repo history, and the SG history is much less interesting for 'git bisect', so the proposal is just to 'git add' the SG sources into the FG repo. Becuase that's low impact for existing checkouts of FG, especially.
Given this idea (which is still under disucssion), it's more important that the license in the SG files is correct (and is LGPL), but the history is less critical.
However, if you're touching the licenses in files, you should definitiely switch to using SPDX to avoid boilerplate: longer term we want to use have a valid SPDX license field on every file.
(Assuming we do the merge, it will still be possible to build+install SimGear standalone, as LGPL, from the FG repo, so we still need to get the licences in order, regardless of where the code lives)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Oh, interesting! Good to know. It will certainly be more convenient for developers to have one less repo to clone and manage, so that's nice.
I can definitely do the switchover to SPDX, that will certainly help with the eventual CI stuff and larger goal of SPDX in every file (and is just an all-around good practice).
Before I go ahead and touch anything I want to make sure I make the changes correctly. Taking the first file mentioned in this issue (simgear/timing/timestamp.cxx) as an example, the current header is:
/** * \file timestamp.cxx * Provides a class for managing a timestamp (seconds & milliseconds.) */// Written by Curtis Olson, started December 1998.//// Copyright (C) 1998 Curtis L. Olson - http://www.flightgear.org/~curt//// This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License as// published by the Free Software Foundation; either version 2 of the// License, or (at your option) any later version.//// 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, write to the Free Software// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.//// $Id$
Am I correct in thinking that the new header should:
Contain a line with the contents "SPDX-License-Identifier: LGPL-2.1-or-later"
Change the license preamble to that of the LGPL instead of GPL (or do we want to remove it given that the SPDX identifier kind of takes care of that?)
For bonus points, I would also like to suggest the following:
Remove $Id$, which Google tells me is a holdover from the SVN days
References to the author, date as well as the brief description at the top get the corresponding doxygen tag (@author, @date, @brief) etc. Could be done at another time, but I'm going to be combing through headers anyways.
The new header would then tentatively look something like this (depending on what we do and don't want changed):
So my suggestion would be: use SPDX for all those attributes, and remove the $Id$ cruft as well.
And yes remove the preamble, the whole point of SPDX is not to copy that into each file, but to only have something machine readable (or event, machine updateable....)
We have been doing this incrementally when touching files for other reasons, but nothing consistent yet.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I just did the files under simgear/timing/ as a test run. If everything looks good I will continue. Probably one directory per commit.
How would you like this packaged when the time comes for a merge request? I can do one per directory, or one big one, or something else. Whatever you prefer.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
That looks great. Commented on the GitLab version. I've got no strong feelings on how you package it, since the history is probably going to go away anyway :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
@jmturner This might be something of interesting, specifically with relevance to the work regarding SPDX in CI. SimGear appears to be LGPL licensed but has a mix of GPL and LGPL code. I think this would probably get flagged by the SPDX checker whenever someone makes a commit that changes one of the LGPL source files.
Besides that, I think intermixing GPL and LGPL may defeat the purpose of the entire project being LGPL (if I can remember my licensing rules correctly).
I guess since everything else in FlightGear is GPL, it would seem like the straight forward option would be to formally codify SimGear as GPL. Given that the LGPL is more permissive, this shouldn't be a problem as far as licensing legality goes.
Last edit: ranguli 2024-10-21
The problem is the original author of FG wanted to use some parts of the code in other projects, and we wanted the option for those to be private. So SG was created by pulling code out of FG.
Becuase Simgear has been LGPL for its entire lifetime, I think it's safe to assume any code in SG is LGPL, if the license is clearly 'from an old FG file' and says GPL.
@jmturner Ah that's some very useful historical context, thank you. Good to know. Based on that, it seems like it would be safe to convert the headers of all GPL files into LGPL files. Would you like me to do that, as well as update the copy of the license text? The "L" in LGPL used to stand for Library but now stands for Lesser. I can also swap the license out for a markdown version as those as a bit easier on the eyes when viewing in web UIs.
If the change involved mass modification of SLOC it would be a mess for git history, but where all the change are contained to the header portion, we could perhaps get away with anywhere from one to a few commits and not make a mess of things?
So there's some additonal changes coming, which might impact this: we are probably going to roll SImGear back into FlightGear, but only on 'next', and in doing that we will sacrifice the Simgear commit history anyway.
We don't want to re-write the FG repo history, and the SG history is much less interesting for 'git bisect', so the proposal is just to 'git add' the SG sources into the FG repo. Becuase that's low impact for existing checkouts of FG, especially.
Given this idea (which is still under disucssion), it's more important that the license in the SG files is correct (and is LGPL), but the history is less critical.
However, if you're touching the licenses in files, you should definitiely switch to using SPDX to avoid boilerplate: longer term we want to use have a valid SPDX license field on every file.
(Assuming we do the merge, it will still be possible to build+install SimGear standalone, as LGPL, from the FG repo, so we still need to get the licences in order, regardless of where the code lives)
Oh, interesting! Good to know. It will certainly be more convenient for developers to have one less repo to clone and manage, so that's nice.
I can definitely do the switchover to SPDX, that will certainly help with the eventual CI stuff and larger goal of SPDX in every file (and is just an all-around good practice).
Before I go ahead and touch anything I want to make sure I make the changes correctly. Taking the first file mentioned in this issue (simgear/timing/timestamp.cxx) as an example, the current header is:
Am I correct in thinking that the new header should:
For bonus points, I would also like to suggest the following:
The new header would then tentatively look something like this (depending on what we do and don't want changed):
The result in Doxygen is attached as an image.
Let me know your thoughts. Cheers,
Joshua
There's actually SPDX tags for brief, file and author. See eg:
https://gitlab.com/flightgear/simgear/-/blob/next/simgear/debug/debug_types.h?ref_type=heads
So my suggestion would be: use SPDX for all those attributes, and remove the $Id$ cruft as well.
And yes remove the preamble, the whole point of SPDX is not to copy that into each file, but to only have something machine readable (or event, machine updateable....)
We have been doing this incrementally when touching files for other reasons, but nothing consistent yet.
Excellent, that makes it much more straight forward. I'll get cracking.
@jmturner This is what I've done so far: https://gitlab.com/ranguli/simgear/-/commit/62a15f3417ae07ada52fa71884622ee2e5298c95
I just did the files under simgear/timing/ as a test run. If everything looks good I will continue. Probably one directory per commit.
How would you like this packaged when the time comes for a merge request? I can do one per directory, or one big one, or something else. Whatever you prefer.
That looks great. Commented on the GitLab version. I've got no strong feelings on how you package it, since the history is probably going to go away anyway :)