navit-gps / navit

The open source (GPL v2) turn-by-turn navigation software for many OS
http://www.navit-project.org
Other
550 stars 173 forks source link

Implement Weblate #1187

Open jkoan opened 2 years ago

jkoan commented 2 years ago

We should move away from Launchpad as it does not integrate well into our git workflow and build infrastructure and we haven't even got new contributions recently.

Weblate on the other hand has much better features, does integrate perfectly into the build system (Github PRs on Updates) also it is much more stable.

comradekingu commented 1 year ago

@jkoan As per https://github.com/navit-gps/navit/search?q=any+later the translation license is wrong Should be GPLv2-or-later, as opposed to GPLv2-only

Can be changed in respectively https://hosted.weblate.org/settings/navit/glossary/ https://hosted.weblate.org/settings/navit/navit-core/ https://hosted.weblate.org/settings/navit/navit-android-metadata/ and https://hosted.weblate.org/settings/navit/navit-android-app/ :)

Edit: Something seems to be wrong with the setup where many source strings are unpopulated. I can maybe help if you add "kingu".

jkoan commented 1 year ago

@jkoan As per https://github.com/navit-gps/navit/search?q=any+later the translation license is wrong Should be GPLv2-or-later, as opposed to GPLv2-only

Can be changed in respectively https://hosted.weblate.org/settings/navit/glossary/ https://hosted.weblate.org/settings/navit/navit-core/ https://hosted.weblate.org/settings/navit/navit-android-metadata/ and https://hosted.weblate.org/settings/navit/navit-android-app/ :)

Edit: Something seems to be wrong with the setup where many source strings are unpopulated. I can maybe help if you add "kingu".

Your search is not accurate. Most of what you are referencing is in nacit/support which are 3rd Party Libs to support various devices. The Translations in itself are gathered from here: https://github.com/navit-gps/navit/blob/5c417f683488570aa12da6d1cbdf983570e1ddb4/po/CMakeLists.txt#L3-L28 and those Files are under GPL-2-only (see header in files)

Edit: About the setup, can you explain whats wrong? I wanna understand it in the process of learning

comradekingu commented 1 year ago

@jkoan There is no GPLv2-only there, it just says GPLv2. https://github.com/navit-gps/navit/blob/trunk/navit/main.c

In the GPLv2 license, it says it is possible to state "or later" elsewhere. How often "GPL2" is stated has no bearing on this being the case or not.

2 and 3 are not compatible, so it wouldn't be possible to combine with all the 3-or-later files. Similarly, there is no reason to limit the translations to "only", which is the only hard limit here.

hoehnp commented 1 year ago

@comradekingu, if there is not statement of "or later", this explicitly states IMHO a single version which is version 2. At least this is how I understand the statements by the Free Software Foundation, the creators of the GPL (https://www.gnu.org/licenses/gpl-faq.html#v2v3Compatibility). Relicensing the code unter "v2 or later" would then require a sign off of all people who contributed to the code. I am not sure if this is really worth the effort.

jkoan commented 1 year ago

i read through this and other sources and came to the conclusion that we neer stated that only GPL v2 is meant so its fine (for me). I changed it on weblate.

@comradekingu can you outline the other wrong setup on the project?

comradekingu commented 1 year ago

The Linux kernel is specifically GPLv2-only. GPLv2 does not have the GPLv3 "cure clause", so it is a big deal.

The problematic files in Navit are specifically GPLv2, not only, just GPLv2. The GPLv2 license has a provision that you can state "or later" somewhere else. That somewhere else is now in other files, which are specifically GPLv2 or later GPLv3 or later, 17 pages worth.

This means those GPLv2 files, and all others are effectively all GPLv3-or-later in this project as a whole. This is because GPLv2 and GPLv3 are not compatible, so it has to be that way. Consequently, any other combination would not work, just like it isn't possible to use files from the Linux kernel in Navit.

A notice should be added to the source repo to make this clear. Right now it says GPLv2 without any specifics in https://github.com/navit-gps/navit/blob/1e32e2ed7d76851dcfcef95280d52bb8693c6c08/COPYRIGHT which is a file from 2008. (5 years before GPLv3)

The GPLv2 and v3 licenses also say If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. and in https://github.com/navit-gps/navit it says Navit is a open source (GPL) car navigation system with routing engine. I don't think that holds though, since it says v2 and v3 elsewhere, and that is specific to the files in question.

My concern is the translation is specifically GPLv2-only. No charitable reading is possible then. No cure clause and crystal clear only means it is immediately un-distributable. In my view those new translations can't be distributed with Navit, which has lots and lots of GPLv2-or-later and GPLv3-or-later files. This is because specifically only, and specifically or later is not compatible either.

Yes the compliance could be more up to date in Navit, and it may be a good idea to ask the relevant contributors if they agree to re-license their GPLv2 stuff, because it seems at some point the project may have been GPLv2 without any notice about or later anywhere. However, when accepting GPLv2-only translations, one has to ask every single translator to re-license any work done, and the sooner the better. Right now that is @edanas for French, and me, and I am fine with GPLv3+ already.

Edit: I noticed the license got changed to GPLv2-or-later on Weblate, and that is great :) Means the strings can be used in GPLv2-or-later projects, and GPLv3-or-later ones, (which I think Navit is).

Edit2: If you are using the libre plan, one requirement is to mention Weblate in the README. I had a go at fixing it up in https://github.com/navit-gps/navit/pull/1209

Edit3: @jkoan en is selected as the source language, but it is missing some strings. en_UK has all of them https://hosted.weblate.org/matrix/navit/navit-core/?lang=en_GB&lang=nb_NO

I think populating the en locale with the en_UK files would fix that. If you add "kingu" in https://hosted.weblate.org/access/navit/#users I can have a look at the setup.