Wireshark-dev: Re: [Wireshark-dev] Changes to the plugin registration API

From: Roland Knall <rknall@xxxxxxxxx>
Date: Mon, 4 Dec 2023 17:32:28 +0100
I think we are diverting the discussion here. While I agree with the factual representation of GPLs copyleft, I disagree with how it is enforced here. 

It can be the longterm goal that we enforce it, but as a first step it should be a warning not an error. This would allow companies to transition without immediately having to act. Especially license changes can take a very long time and is an issue, also for us. There is also precedence for this approach, the Linux kernel does it the same way. 

Kind regards
Roland 

> Am 04.12.2023 um 17:24 schrieb João Valverde <j@xxxxxx>:
> 
> 
> 
>> On 04/12/23 15:55, Martin Mathieson via Wireshark-dev wrote:
>> I have been doing internal Wireshark releases for years wherever I've been working (as far as I know, they have never been sent outside of the company).  I have *never* used the plugin mechanism. I package up the entire program, even if only one file has been changed.  My current company has acquired and merged with several other companies and development groups - as far as I can tell, they all have a local Wireshark person who does the same.  If people are working closely with me, we sometimes even just keep dissectors as part of the test code for the project that uses them, and team members build it themselves.
>> 
>> Am I allowed to do this?
> 
> In a strict legal sense I don't think you can use a GPL-incompatible license for your changes, but it doesn't really matter as long as you don't distribute it. Otherwise what does it matter which license it uses or if it doesn't have a license at all? There is no one to license it to. You are the only one using it and the GPL grants you the right to modify the software. You can grant yourself only a GPL-license for your modifications and no one else if it gives you peace of mind. :-)
> 
> AFAIK there is also nothing legally preventing someone from rebuilding Wireshark with a modified source code to ignore the plugin license check and forget the whole issue, in the same conditions as above, as long as they don't distribute the proprietary plugin. The GPL violation only happens if you distribute your plugin using an incompatible license.
> 
>> Martin
>> 
>> 
>> 
>> On Mon, Dec 4, 2023 at 2:54 PM João Valverde <j@xxxxxx> wrote:
>> 
>> 
>> 
>>    On 04/12/23 14:52, João Valverde wrote:
>>    >
>>    >
>>    > On 04/12/23 14:32, Anders Broman wrote:
>>    >> Hi,
>>    >> Company plug-ins may have restrictive license as the purpose is to
>>    >> only use them internally no public usage "secret" code for
>>    >> proprietary protocols under patents or IPL. Do we really want to
>>    >> forbid that? In that case why should companies provide code to
>>    >> Wireshark rather than just fork and build internally.
>>    >
>>    > I understand the argument and why that is a point of contention,
>>    but
>>    > that does not change the terms of the GPL which must be abided
>>    by even
>>    > if this commit was never merged in the first place.
>>    >
>>    > I don't think it is a question of whether we want to forbid it,
>>    it is
>>    > whether we can allow it. I believe the answer to that is a clear
>>    no if
>>    > we want to respect the terms of the GPLv2 (and I'm fine with
>>    that). I
>>    > am not a license lawyer so this is just my understanding of the
>>    > legalities involved.
>>    >
>>    ...nor any other kind of lawyer. :-)
>> 
>>    > There are many reasons why companies may choose to contribute or
>>    not.
>>    > Other companies may choose not to contribute to projects not
>>    using the
>>    > GPL. And individual developers may or may not want to
>>    contribute. Etc.
>>    > We can also debate that but it might veer off-topic.
>>    >
>>    >> Best regards
>>    >
>>    >> A ders
>>    >>
>>    >> Den mån 4 dec. 2023 15:22João Valverde <j@xxxxxx> skrev:
>>    >>
>>    >>
>>    >>
>>    >>     On 04/12/23 13:42, Anders Broman wrote:
>>    >>     > Hi,
>>    >>     > Maybe you are missing the point that someone may wish to
>>    develop
>>    >>     an in
>>    >>     > house plug-in not meant for distribution which in my
>>    >>     understanding is
>>    >>     > permissible under GPL.
>>    >>
>>    >>     My understanding is that this is permitted under the GPL if
>>    using a
>>    >>     GPL-compatible license for your software. It's the main
>>    difference
>>    >>     between the GPL and so-called "permissive" licenses.
>>    >>
>>    >>     >
>>    >>     > As I understand it that is no longer possible? To me
>>    that's an
>>    >>     > unnecessary restriction which we do not need to put on
>>    our users
>>    >>     and I
>>    >>     > see no point/gain in doing so.
>>    >>
>>    >>     If you don't want to use the GPL you can choose a
>>    GPL-compatible
>>    >>     license
>>    >>     (BSD for example, there are many) and register your plugin with
>>    >>     WS_PLUGIN_IS_GPLv2_COMPATIBLE. The SPDX ID is optional but
>>    helpful.
>>    >>
>>    >>     You may also use GPLv2 and just not distribute your binary
>>    (in the
>>    >>     case
>>    >>     of businesses and corporations outside of the collective
>>    entity that
>>    >>     legally comprises it).
>>    >>
>>    >>     So it's not really restricting your freedom to use
>>    Wireshark, it's
>>    >>     just
>>    >>     respecting the terms of the GPL under which developers
>>    contribute
>>    >>     to the
>>    >>     project.
>>    >>
>>    >>     This is my understanding of the terms under which I choose to
>>    >>     contribute
>>    >>     to Wireshark. If anyone has a better understanding or
>>    reason why
>>    >> this
>>    >>     interpretation of the GPL, that matches the FSF FAQ, is wrong,
>>    >>     please do
>>    >>     share. I'm very open to a good-faith discussion.
>>    >>
>>    >>
>>    >>     > Best regards
>>    >>     > Anders
>>    >>     >
>>    >>     > Den mån 4 dec. 2023 14:05João Valverde <j@xxxxxx> skrev:
>>    >>     >
>>    >>     >     Confused was not an offense, "GPL license" is
>>    patently not the
>>    >>     >     same as
>>    >>     >     "GPL-compatible license" so it is a legitimate reason
>>    to be
>>    >>     confused.
>>    >>     >     Please avoid unnecessary and unfair characterizations
>>    of my
>>    >>     words.
>>    >>     >
>>    >>     >     And I will not revert it on that basis. I will revert
>>    it if my
>>    >>     >     understanding of the our license requirements is wrong or
>>    >>     flawed.
>>    >>     >     It is
>>    >>     >     not OK for you to exempt some use-case from the license
>>    >>     terms under
>>    >>     >     which every developer contributes to this project.
>>    >>     >
>>    >>     >     Gerald can revert it if he wishes and I will respect
>>    it. As
>>    >>     >     project lead
>>    >>     >     he can make that call.
>>    >>     >
>>    >>     >     On 04/12/23 12:35, Roland Knall wrote:
>>    >>     >     > I do not think there is a need for calling someone
>>    confused.
>>    >>     >     >
>>    >>     >     > The whole discussion is not in any way useful for
>>    our users.
>>    >>     >     There is
>>    >>     >     > the explicit corporate usecase, where in-house
>>    versions do
>>    >>     exist
>>    >>     >     with
>>    >>     >     > their own protocols and plugins. Often times those
>>    >>     versions do not
>>    >>     >     > even deal with licenses for those modifications at
>>    all, and
>>    >>     >     going from
>>    >>     >     > the point that they change the CMakeListsCustom.txt
>>    >> files, one
>>    >>     >     could
>>    >>     >     > argue, that this is not a source code modification
>>    in the
>>    >>     sense
>>    >>     >     meant
>>    >>     >     > by the gpl license.
>>    >>     >     >
>>    >>     >     > Joao, I agree with having a clear path for license
>>    >>     application,
>>    >>     >     and I
>>    >>     >     > also agree that we should be prudent on what parts
>>    a user
>>    >> can
>>    >>     >     use and
>>    >>     >     > which he can't. I would even be ok if we have a
>>    warning
>>    >> in the
>>    >>     >     > build-process, explicitly stating that the code being
>>    >>     linked is not
>>    >>     >     > fully compliant and therefore not allowed to be
>>    >>     distributed. But I
>>    >>     >     > strongly disagree cutting off the leg we are
>>    standing on
>>    >>     just on
>>    >>     >     pure
>>    >>     >     > principle. The corporate users are a HUGE part of our
>>    >>     userbase.
>>    >>     >     And if
>>    >>     >     > we go down this route, we need to have a proper
>>    discussion
>>    >>     about
>>    >>     >     this.
>>    >>     >     > Just adding license enforcement without having the
>>    >>     discussion is
>>    >>     >     NOT
>>    >>     >     > the way to move forward here.
>>    >>     >     >
>>    >>     >     > Please add another patch, which keeps the ABI
>>    versioning in
>>    >>     >     (which I
>>    >>     >     > really appreciate and think is a good thing to do), but
>>    >>     reverts the
>>    >>     >     > enforcement of the licenses. Then we can start to
>>    properly
>>    >>     >     discuss how
>>    >>     >     > to move forward with this topic. It will - most
>>    likely -
>>    >>     require a
>>    >>     >     > vote by the technical steering comittee.
>>    >>     >     >
>>    >>     >     > kind regards
>>    >>     >     > Roland
>>    >>     >     >
>>    >>     >     > Am Mo., 4. Dez. 2023 um 13:23 Uhr schrieb João Valverde
>>    >>     <j@xxxxxx>:
>>    >>     >     >
>>    >>     >     >
>>    >>     >     >
>>    >>     >     >     On 04/12/23 12:19, João Valverde wrote:
>>    >>     >     >     >
>>    >>     >     >     >
>>    >>     >     >     > On 04/12/23 12:12, Bálint Réczey wrote:
>>    >>     >     >     >> João Valverde <j@xxxxxx> ezt írta (időpont:
>>    2023.
>>    >>     dec. 4., H,
>>    >>     >     >     12:59):
>>    >>     >     >     >>>
>>    >>     >     >     >>>
>>    >>     >     >     >>> On 03/12/23 23:25, João Valverde wrote:
>>    >>     >     >     >>>> Hi,
>>    >>     >     >     >>>>
>>    >>     >     >     >>>> There are some changes in progress to the
>>    plugin
>>    >>     >     registration
>>    >>     >     >     API that
>>    >>     >     >     >>>> break compatibility and require manual
>>    intervention
>>    >>     >     from plugin
>>    >>     >     >     >>>> authors maintaining plugins out-of-tree. These
>>    >>     changes
>>    >>     >     are rather
>>    >>     >     >     >>>> minor and concern only plugin
>>    registration, not
>>    >>     other APIs
>>    >>     >     >     accessible
>>    >>     >     >     >>>> to plugins.
>>    >>     >     >     >>>>
>>    >>     >     >     >>>> See MR 13524:
>>    >>     >     >     >>>>
>>    >>     > https://gitlab.com/wireshark/wireshark/-/merge_requests/13524
>>    >>     >     >     >>>>
>>    >>     >     >     >>>> Changes required are rewriting the
>>    registration
>>    >>     code (very
>>    >>     >     >     easy to do
>>    >>     >     >     >>>> [1]) and declare (using a C enum) that the
>>    >> plugin is
>>    >>     >     released
>>    >>     >     >     either
>>    >>     >     >     >>>> under GPLv2 or later, or a GPLv2 compatible
>>    >>     license. The
>>    >>     >     >     other changes
>>    >>     >     >     >>>> to the ABI version number are
>>    >>     >     >     >>> The choice of the word "released" here was
>>    >>     unfortunate,
>>    >>     >     >     because it may
>>    >>     >     >     >>> imply distribution. Please consider "licensed"
>>    >>     instead.
>>    >>     >     >     >>>
>>    >>     >     >     >>> The license declaration field just affirms what
>>    >>     was already
>>    >>     >     >     implicit:
>>    >>     >     >     >>> Wireshark plugins must use licensing terms
>>    >> compatible
>>    >>     >     with the GPL
>>    >>     >     >     >>> version 2, so there is no policy change there.
>>    >>     >     >     >> GPL allows linking and using GPL-licensed
>>    software
>>    >> with
>>    >>     >     >     >> non-GPL-licensed software locally. This is an
>>    >> important
>>    >>     >     use case of
>>    >>     >     >     >> many Wireshark users who do not wish releasing
>>    >>     their plugins
>>    >>     >     >     and your
>>    >>     >     >     >> change broke that. Please revert it.
>>    >>     >     >     >>
>>    >>     >     >     >
>>    >>     >     >     >
>>    >> https://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL
>>    >>     >     >
>>    >>     >     >     Also it does not require a GPL license, it
>>    requires a
>>    >>     >     GPL-compatible
>>    >>     >     >     license, so you may just be confused.
>>    >>     >     >
>>    >>     >     >     >
>>    >>     >     >     >>>> currently not relevant to plugin authors
>>    (no policy
>>    >>     >     change is
>>    >>     >     >     >>>> implied), it just uses less boilerplate with
>>    >> macros.
>>    >>     >     >     >>>>
>>    >>     >     >     >>>> This should improve the plug-in experience
>>    for both
>>    >>     >     >     developers and
>>    >>     >     >     >>>> users and may improve compatibility in the
>>    future.
>>    >>     >     >     >>
>>    >>     >     >     >>>> Comments welcome.
>>    >>     >     >     >>>>
>>    >>     >     >     >>>> Regards,
>>    >>     >     >     >>>>
>>    >>     >     >     >>>> João
>>    >>     >     >     >>>>
>>    >>     >     >     >>>>
>>    >>     >     >
>>    >>     >
>>    >>
>>      [1]https://gitlab.com/wireshark/wireshark/-/commit/90b16b40921b737aadf9186685d866fd80e37ee6#4a1fe9011e8240918e5fc6230c0bcd2e4d3b9c34
>>    >>     >     >
>>    >>     >     >     >>>>
>>    >>     >     >     >>>>
>>    >>     >     >     >>>>
>>    >>     >     >
>>    >>     >
>>    >>
>>      ___________________________________________________________________________
>>    >>     >     >
>>    >>     >     >     >>>>
>>    >>     >     >     >>>>
>>    >>     >     >     >>>> Sent via: Wireshark-dev mailing list
>>    >>     >     >     <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     >     >     >>>> Archives:
>>    >> https://www.wireshark.org/lists/wireshark-dev
>>    >>     >     >     >>>> Unsubscribe:
>>    >>     >     > https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>     >     >     >>>>
>>    >>     >
>>     mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>     >     >     >>>
>>    >>     >     >
>>    >>     >
>>    >>
>>      ___________________________________________________________________________
>>    >>     >     >
>>    >>     >     >     >>>
>>    >>     >     >     >>> Sent via: Wireshark-dev mailing list
>>    >>     >     >     <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     >     >     >>> Archives:
>>    >> https://www.wireshark.org/lists/wireshark-dev
>>    >>     >     >     >>> Unsubscribe:
>>    >>     >     > https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>     >     >     >>>
>>    >>     >
>>     mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>     >     >     >>
>>    >>     >     >
>>    >>     >
>>    >>
>>      ___________________________________________________________________________
>>    >>     >     >
>>    >>     >     >     >>
>>    >>     >     >     >> Sent via: Wireshark-dev mailing list
>>    >>     >     >     <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     >     >     >> Archives:
>>    >> https://www.wireshark.org/lists/wireshark-dev
>>    >>     >     >     >> Unsubscribe:
>>    >>     >     > https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>     >     >     >>
>>    >>     >
>>     mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>     >     >     >
>>    >>     >     >     >
>>    >>     >     >
>>    >>     >
>>    >>
>>      ___________________________________________________________________________
>>    >>     >     >
>>    >>     >     >     >
>>    >>     >     >     > Sent via:    Wireshark-dev mailing list
>>    >>     >     >     <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     >     >     > Archives:
>>    >> https://www.wireshark.org/lists/wireshark-dev
>>    >>     >     >     > Unsubscribe:
>>    >>     > https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>     >     >     >
>>    >> mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>     >     >
>>    >>     >     >
>>    >>     >
>>    >>
>>      ___________________________________________________________________________
>>    >>     >     >     Sent via:    Wireshark-dev mailing list
>>    >>     >     <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     >     >     Archives:
>>    https://www.wireshark.org/lists/wireshark-dev
>>    >>     >     >     Unsubscribe:
>>    >>     > https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>     >     >
>>    >>     >     >
>>    >>   mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>     >     >
>>    >>     >     >
>>    >>     >     >
>>    >>     >
>>    >>
>>     ___________________________________________________________________________
>>    >>     >     > Sent via:    Wireshark-dev mailing list
>>    >>     >     <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     >     > Archives: https://www.wireshark.org/lists/wireshark-dev
>>    >>     >     > Unsubscribe:
>>    >> https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>     >     >
>>    >>     >
>>      mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>     >
>>    >>     >
>>    >>
>>     ___________________________________________________________________________
>>    >>     >     Sent via:    Wireshark-dev mailing list
>>    >>     <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     >     Archives: https://www.wireshark.org/lists/wireshark-dev
>>    >>     >     Unsubscribe:
>>    >> https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>     >
>>    >>     >
>>      mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>     >
>>    >>     >
>>    >>     >
>>    >>
>>    ___________________________________________________________________________
>>    >>     > Sent via:    Wireshark-dev mailing list
>>    >>     <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     > Archives: https://www.wireshark.org/lists/wireshark-dev
>>    >>     > Unsubscribe:
>>    >> https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>     >
>>    >>  mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>
>>    >>
>>    ___________________________________________________________________________
>>    >>     Sent via:    Wireshark-dev mailing list
>>    >> <wireshark-dev@xxxxxxxxxxxxx>
>>    >>     Archives: https://www.wireshark.org/lists/wireshark-dev
>>    >>     Unsubscribe:
>>    https://www.wireshark.org/mailman/options/wireshark-dev
>>    >>
>>    >>  mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >>
>>    >>
>>    >>
>>    ___________________________________________________________________________
>> 
>>    >>
>>    >> Sent via:    Wireshark-dev mailing list
>>    <wireshark-dev@xxxxxxxxxxxxx>
>>    >> Archives: https://www.wireshark.org/lists/wireshark-dev
>>    >> Unsubscribe:
>>    https://www.wireshark.org/mailman/options/wireshark-dev
>>    >> mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>>    >
>> 
>>    ___________________________________________________________________________
>>    Sent via:    Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx>
>>    Archives: https://www.wireshark.org/lists/wireshark-dev
>>    Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>>               
>>     mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
>> 
>> 
>> ___________________________________________________________________________
>> Sent via:    Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx>
>> Archives:    https://www.wireshark.org/lists/wireshark-dev
>> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>>              mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe
> 
> ___________________________________________________________________________
> Sent via:    Wireshark-dev mailing list <wireshark-dev@xxxxxxxxxxxxx>
> Archives:    https://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>            mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe