Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Jan 2022 21:37:00 +0300
From:      Mehmet Erol Sanliturk <m.e.sanliturk@gmail.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Alan Somers <asomers@freebsd.org>,  "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org>
Subject:   Re: LGPL code in /usr/tests?
Message-ID:  <CAOgwaMtnQ3DNSYv%2BJN1dsi1qH5=4ZJw=tmM6rVLRM0eCe6gUUQ@mail.gmail.com>
In-Reply-To: <CANCZdfpHPP98SJaO0xjeb-%2BjtzCh7ittysGTjuZg6pdvdb7Rzw@mail.gmail.com>
References:  <CAOtMX2gp46301jOA2OG8bqxDgxspqSYPafGNtxdvqyO-nk2Qtg@mail.gmail.com> <CANCZdfr4WoZUNLzyK5%2BMJNi3c2k7v94LS99w-9-K4-Afr0JU-w@mail.gmail.com> <CAOgwaMtsj-YXb8fxnL9vaarV3bB7j%2BpFWakOH7Un=6w2Fc39=g@mail.gmail.com> <CAOtMX2iPxZWr_nc8uVEPhxgmLkdzKeMvH%2BtWU99u%2Bpk8Hs=3Aw@mail.gmail.com> <CAOgwaMuzMukKrgntYps6_rSO88=jMG6QLF0SVrs8r9kF=KesAA@mail.gmail.com> <CAOtMX2jVS=qWzHtX3yw5_wYHOS02P7obmwo7rQ16%2BcJL=WOyOQ@mail.gmail.com> <CAOgwaMtn9Sqp7ZxWM4_KVMB-4JTBrN96xWZgCX-bwjvVwW3fPg@mail.gmail.com> <CANCZdfpHPP98SJaO0xjeb-%2BjtzCh7ittysGTjuZg6pdvdb7Rzw@mail.gmail.com>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
On Mon, Jan 3, 2022 at 9:06 PM Warner Losh <imp@bsdimp.com> wrote:

>
>
> On Mon, Jan 3, 2022, 10:32 AM Mehmet Erol Sanliturk <
> m.e.sanliturk@gmail.com> wrote:
>
>>
>>
>> On Mon, Jan 3, 2022 at 7:57 PM Alan Somers <asomers@freebsd.org> wrote:
>>
>>> On Mon, Jan 3, 2022 at 9:32 AM Mehmet Erol Sanliturk
>>> <m.e.sanliturk@gmail.com> wrote:
>>> >
>>> >
>>> >
>>> > On Mon, Jan 3, 2022 at 5:47 PM Alan Somers <asomers@freebsd.org>
>>> wrote:
>>> >>
>>> >> On Mon, Jan 3, 2022 at 12:37 AM Mehmet Erol Sanliturk
>>> >> <m.e.sanliturk@gmail.com> wrote:
>>> >> >
>>> >> >
>>> >> >
>>> >> > On Mon, Jan 3, 2022 at 9:31 AM Warner Losh <imp@bsdimp.com> wrote:
>>> >> >>
>>> >> >> Top posting my reactions (sorry)
>>> >> >>
>>> >> >> I think 'in base as a private library, used only in the tests
>>> protected by MK_LGPL' is fine.
>>> >> >>
>>> >> >> This would keep it in base, keep the testing happening, and allow
>>> those who want
>>> >> >> to omit it. This would also not run afoul of any companies that
>>> still have downloading
>>> >> >> GPL'd software is a fireable offense, since all such policies I
>>> heard about years ago
>>> >> >> were specifically the GPL, not the LGPL). This is of course a
>>> trade off between
>>> >> >> getting something useful from the LGPL software (better testing)
>>> and our desires
>>> >> >> not to have any in the tree at all, if possible. Adding a knob
>>> would let it be shut
>>> >> >> off easily with all the tests disabled that depend on it. This is
>>> also in keeping with
>>> >> >> our historical practices of having software with undesirable
>>> licenses as long as it
>>> >> >> gets us something.
>>> >> >>
>>> >> >> I think this is better than the ports options because it will get
>>> more use and exposure
>>> >> >> this way and is more likely to remain working (though with our
>>> current CI setup
>>> >> >> adding it as a dependency for that CI would be easy and give us
>>> decent coverage).
>>> >> >>
>>> >> >> Warner
>>> >> >>
>>> >> >
>>> >> >
>>> >> >
>>> >> > https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
>>> >> > GNU Lesser General Public License
>>> >> >
>>> >> > https://en.wikipedia.org/wiki/Copyleft#Strong_and_weak_copyleft
>>> >> > Strong and weak copyleft
>>> >> >
>>> >> >
>>> >> > "GNU Lesser General Public License" is a  WEAK copyleft license (
>>> it may be considered "benign" : it does not invade the user software ,
>>> affects only the modifications to the LGPL licensed software ) ,
>>> >> >
>>> >> > in spite of this ,
>>> >> >
>>> >> > "GNU General Public License" is a STRONG copyleft license ( it may
>>> be considered "malignant" : it invades the user software as a whole ) .
>>> >> >
>>> >> >
>>> >> > Using a ( LGPL licensed software ) for testing another software is
>>> not directly involved in the tested software .
>>> >> >
>>> >> > To eliminate possible doubts , if I were the decision maker about
>>> how to use it , I would make it a port , and fetch it during testing as a
>>> dynamically loaded library ( manage it port with respect to its license ) .
>>> >> >
>>> >> >
>>> >> > Mehmet  Erol Sanliturk
>>> >>
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >>
>>> >> The problem is that the library, not just the headers, needs to be
>>> >> present at compile time.  Or do you know a good workaround?
>>> >
>>> >
>>> >
>>> >
>>> > You can fetch the LGPL licensed sources during compile time from
>>> outside of the FreeBSD
>>> > base known to the testing program . The user(s) of  FreeBSD can also
>>> use a similar facility .
>>> >
>>> > For example :
>>> >
>>> > I am developing mainly two programs :
>>> >
>>> > (1) Mathematical Analysis computations
>>> > (2) A Multi-media information management system
>>> >
>>> > These programs are using parts taken from legally personally usable
>>> sources  which
>>> > can not be used for a ( free or commercial ) distribution . During
>>> program development ,
>>> > it is possible to use them , because they are in there just as a
>>> filler for  not-implemented-yet parts .
>>> >
>>> > To prevent unacceptable inclusion of such sources into my own
>>> productions , I am
>>> > using global directories  outside of the program directories :
>>> >
>>> > /KBMS/Parts_to_ be_Removed/... ( Part specific directories )
>>> > /MAS/Parts_to_ be_Removed/... ( Part specific directories )
>>> >
>>> > It is explicitly known that these directories and their contents can
>>> not be used .
>>> > There is no danger of including them erroneously .
>>> >
>>> >
>>> > You can define such directories . During compilation you may fetch
>>> LGPL licensed
>>> > parts from these directories ( even though they may be on the Internet
>>> ) . After compilation of
>>> > the programs ( and if they are executed ) you may discard them . By
>>> supplying a script to manage such issues , users of the FreeBSD may also
>>> use the associated external directories created in their systems and used
>>> during their works .
>>> >
>>> >
>>> > The main problem for the LGPL licensed sources is the modifications
>>> performed
>>> > in them . If there are such parts they should be open sourced , not
>>> the sources of the
>>> > user sources . The closed source programs will not be affected from
>>> such modifications .
>>> >
>>> > Some closed source program developers may not want to handle legal
>>> implications of
>>> > these modified or not modified LGPL licensed parts even when they are
>>> distributed  because any failure of distribution of especially modified
>>> sources may cause significant trouble for them . To eliminate such
>>> distribution related concerns , the best action may be to store
>>> > these sources into a publicly accessible repository , modify these
>>> sources in that repository and use them  from this repository . In this
>>> case , modifications in the main repository and excluding of these from
>>> FreeBSD distributions will not affect FreeBSD users other than fetching
>>> them when they are needed , which is legally acceptable and harmless .
>>> >
>>> > Generation of a package or port from this repository  may be necessary
>>> or not ,
>>> > I will not be able to say anything because I do not know . The port or
>>> package
>>> > generator persons would know such points . My opinion is that the
>>> above model
>>> > may not require either a port or a package separately because
>>> everything necessary
>>> > will be in the repository .
>>> >
>>> >
>>> >
>>> > Mehmet Erol Sanliturk
>>>
>>>
>>
>>
>>
>>
>>
>>> So you suggest that "make buildworld" downloads the libnfs sources?
>>> That would be a big change from the current setup, where all sources
>>> are assumed to be present when make starts.  I expect that it might
>>> break tools like "make release" and nanobsd, too.  Of course, we could
>>> always put these tests into tools/regression instead of tests/.  That
>>> would be easy.  But then they wouldn't get run in CI.  And I think
>>> that CI is essential for any new tests.
>>>
>>>
>>
>>
>>
>> It is very likely that there will not be many ( or high frequency )
>> modifications in
>> the repository of required LGPL licensed parts .
>>
>> Fetching and storing them into a directory outside of the source tree and
>> keeping them in there will not be a violation of its license .
>> If a modification is applied into their  main repository , then again the
>> action will be
>> "fetch and store them , and keep them in there" .
>> In this case , "make { buildworld  | release }" or other processing steps
>> will require only specification of the global directory of LGPL licensed
>> sources ( outside of the FreeBSD base ) .
>> These will not be included into FreeBSD base when it is distributed
>> but only will be used during testing or other tasks where they are
>> applied .
>>
>> Any user of the FreeBSD , will do a similar action in their "make {
>> buildworld  | release }"
>> or other processing works .
>>
>>
>> Since it is possible to keep the LGPL licensed sources ( by fetching
>> modifications from its repository ) indefinitely , my opinion
>> is that continuous use of these sources are legally possible and harmless
>> .
>> ( I am not a lawyer and my views do not constitute legal advice . )
>>
>>
>>
>> If a user does not want to keep these LGPL licensed parts , she/he may
>> discard the
>> global directory contents when she/he completes her/his job , and again
>> she/he
>> may fetch and use them . Such an action will be decided by the user with
>> respect to
>> her/his needs and/or conventions . With respect to LGPL license such an
>> action is not
>> necessary if the above defined publically accessible repository is used .
>>
>
>







> All of that is covered by our existing practice of storing LGPL code in
> src/gnu/lib. We cover it in the handbook already. Since it is publicly
> available forever, storing it there will have no impact that's any
> different than libdialog or libreadline has has in the past.
>
> Warner
>
>


You are right .

If   src/gnu/lib   is included in FreeBSD base  AND  some users want to
exclude these
from the FreeBSD base ( or releases )

then  a possible action would be my suggestion
( as move it into , for example ,    /gnu/lib/...    and exclude it from
the FreeBSD base ,
by supplying its Internet access link in releases )
among other ( possibly many ) alternatives .



>
>> Mehmet Erol Sanliturk
>>
>

>
>>
>>
>>
>>
>>
>>
>>> >
>>> >
>>> >
>>> >
>>> >>
>>> >>
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> >>
>>> >> >> On Fri, Dec 31, 2021 at 2:22 PM Alan Somers <asomers@freebsd.org>
>>> wrote:
>>> >> >>>
>>> >> >>> I recently ran into a bug in fusefs that can only be triggered
>>> when
>>> >> >>> NFS exports a FUSE file system.  That makes it very difficult to
>>> write
>>> >> >>> an automated test.  My options are basically:
>>> >> >>>
>>> >> >>> * Add an fhgetdirentries(2) syscall that is like getdirentries,
>>> but
>>> >> >>> takes a fhandle_t* argument instead of a file descriptor.
>>> >> >>> * Actually start nfsd during the test, and export the temporary
>>> FUSE filesystem.
>>> >> >>>
>>> >> >>> The first option sounds like way too much non-test code to change.
>>> >> >>> Plus, I may need to add thread() and fhwrite() syscalls too, for
>>> other
>>> >> >>> NFS-related test cases.  The second option would also be a lot of
>>> >> >>> work, but at least the work would all be confined to the test
>>> code.
>>> >> >>> However, what would I do once I've exported the file system?
>>> Mounting
>>> >> >>> it with the NFS client would add several more layers to the stack
>>> >> >>> under test.  I'm not even sure that it's safe to self-mount an
>>> >> >>> exported file system.  Another option would be to communicate
>>> directly
>>> >> >>> with nfsd from the test code.  That's possible, but writing NFS
>>> RPCs
>>> >> >>> by hand is very cumbersome, and it would obscure the test logic.
>>> A
>>> >> >>> better option is to use libnfs.  The API is just what I would
>>> need.
>>> >> >>> However, it's licensed under the LGPL 2.1.  I know that we as a
>>> >> >>> project decided to import no new GPLish code into contrib/.  But
>>> this
>>> >> >>> code would never be used outside of /usr/tests, so it wouldn't
>>> even
>>> >> >>> affect many production builds.  Would that be acceptable?  The
>>> >> >>> workarounds are ugly:
>>> >> >>>
>>> >> >>> * Create a new port for all libnfs-dependent tests.  This would be
>>> >> >>> hard to maintain, because the content of the tests must be so
>>> >> >>> dependent on the base version of the OS.
>>> >> >>> * Write the tests in Python using libnfs-python.  The tests could
>>> >> >>> still be compiled as part of the base system, they just wouldn't
>>> work
>>> >> >>> unless libnfs-python is installed from ports.  But this is awkward
>>> >> >>> because the tests are currently C++.  So I would have to embed a
>>> >> >>> Python interpreter into the C++ code.  It would really obfuscate
>>> the
>>> >> >>> test logic.
>>> >> >>> * Store the tests in the base system, but detached from the build.
>>> >> >>> Then create a port that builds them by mounting SRC_BASE, much
>>> like
>>> >> >>> devel/py-libzfs does.  It would then install them in
>>> /usr/local/tests.
>>> >> >>> This is probably the least-bad option if I can't import libnfs
>>> into
>>> >> >>> contrib/.
>>> >> >>>
>>> >> >>> What do you think?  Is it acceptable to import libnfs intro
>>> contrib/?
>>> >> >>> It's LGPL, except for a few headers that are BSD and some examples
>>> >> >>> that are GPLv3.  But we needn't use the examples, or even import
>>> them.
>>> >> >>>
>>> >> >>> https://github.com/sahlberg/libnfs
>>> >> >>>
>>>
>>

[-- Attachment #2 --]
<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:large"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jan 3, 2022 at 9:06 PM Warner Losh &lt;<a href="mailto:imp@bsdimp.com">imp@bsdimp.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jan 3, 2022, 10:32 AM Mehmet Erol Sanliturk &lt;<a href="mailto:m.e.sanliturk@gmail.com" target="_blank">m.e.sanliturk@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div style="font-family:tahoma,sans-serif;font-size:large"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jan 3, 2022 at 7:57 PM Alan Somers &lt;<a href="mailto:asomers@freebsd.org" rel="noreferrer" target="_blank">asomers@freebsd.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Mon, Jan 3, 2022 at 9:32 AM Mehmet Erol Sanliturk<br>
&lt;<a href="mailto:m.e.sanliturk@gmail.com" rel="noreferrer" target="_blank">m.e.sanliturk@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Jan 3, 2022 at 5:47 PM Alan Somers &lt;<a href="mailto:asomers@freebsd.org" rel="noreferrer" target="_blank">asomers@freebsd.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Jan 3, 2022 at 12:37 AM Mehmet Erol Sanliturk<br>
&gt;&gt; &lt;<a href="mailto:m.e.sanliturk@gmail.com" rel="noreferrer" target="_blank">m.e.sanliturk@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Mon, Jan 3, 2022 at 9:31 AM Warner Losh &lt;<a href="mailto:imp@bsdimp.com" rel="noreferrer" target="_blank">imp@bsdimp.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Top posting my reactions (sorry)<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I think &#39;in base as a private library, used only in the tests protected by MK_LGPL&#39; is fine.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; This would keep it in base, keep the testing happening, and allow those who want<br>
&gt;&gt; &gt;&gt; to omit it. This would also not run afoul of any companies that still have downloading<br>
&gt;&gt; &gt;&gt; GPL&#39;d software is a fireable offense, since all such policies I heard about years ago<br>
&gt;&gt; &gt;&gt; were specifically the GPL, not the LGPL). This is of course a trade off between<br>
&gt;&gt; &gt;&gt; getting something useful from the LGPL software (better testing) and our desires<br>
&gt;&gt; &gt;&gt; not to have any in the tree at all, if possible. Adding a knob would let it be shut<br>
&gt;&gt; &gt;&gt; off easily with all the tests disabled that depend on it. This is also in keeping with<br>
&gt;&gt; &gt;&gt; our historical practices of having software with undesirable licenses as long as it<br>
&gt;&gt; &gt;&gt; gets us something.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I think this is better than the ports options because it will get more use and exposure<br>
&gt;&gt; &gt;&gt; this way and is more likely to remain working (though with our current CI setup<br>
&gt;&gt; &gt;&gt; adding it as a dependency for that CI would be easy and give us decent coverage).<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Warner<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; <a href="https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License" rel="noreferrer noreferrer" target="_blank">https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License</a><br>;
&gt;&gt; &gt; GNU Lesser General Public License<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; <a href="https://en.wikipedia.org/wiki/Copyleft#Strong_and_weak_copyleft" rel="noreferrer noreferrer" target="_blank">https://en.wikipedia.org/wiki/Copyleft#Strong_and_weak_copyleft</a><br>;
&gt;&gt; &gt; Strong and weak copyleft<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; &quot;GNU Lesser General Public License&quot; is a  WEAK copyleft license ( it may be considered &quot;benign&quot; : it does not invade the user software , affects only the modifications to the LGPL licensed software ) ,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; in spite of this ,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; &quot;GNU General Public License&quot; is a STRONG copyleft license ( it may be considered &quot;malignant&quot; : it invades the user software as a whole ) .<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Using a ( LGPL licensed software ) for testing another software is not directly involved in the tested software .<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; To eliminate possible doubts , if I were the decision maker about how to use it , I would make it a port , and fetch it during testing as a dynamically loaded library ( manage it port with respect to its license ) .<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Mehmet  Erol Sanliturk<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; The problem is that the library, not just the headers, needs to be<br>
&gt;&gt; present at compile time.  Or do you know a good workaround?<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; You can fetch the LGPL licensed sources during compile time from outside of the FreeBSD<br>
&gt; base known to the testing program . The user(s) of  FreeBSD can also use a similar facility .<br>
&gt;<br>
&gt; For example :<br>
&gt;<br>
&gt; I am developing mainly two programs :<br>
&gt;<br>
&gt; (1) Mathematical Analysis computations<br>
&gt; (2) A Multi-media information management system<br>
&gt;<br>
&gt; These programs are using parts taken from legally personally usable sources  which<br>
&gt; can not be used for a ( free or commercial ) distribution . During program development ,<br>
&gt; it is possible to use them , because they are in there just as a filler for  not-implemented-yet parts .<br>
&gt;<br>
&gt; To prevent unacceptable inclusion of such sources into my own productions , I am<br>
&gt; using global directories  outside of the program directories :<br>
&gt;<br>
&gt; /KBMS/Parts_to_ be_Removed/... ( Part specific directories )<br>
&gt; /MAS/Parts_to_ be_Removed/... ( Part specific directories )<br>
&gt;<br>
&gt; It is explicitly known that these directories and their contents can not be used .<br>
&gt; There is no danger of including them erroneously .<br>
&gt;<br>
&gt;<br>
&gt; You can define such directories . During compilation you may fetch LGPL licensed<br>
&gt; parts from these directories ( even though they may be on the Internet ) . After compilation of<br>
&gt; the programs ( and if they are executed ) you may discard them . By supplying a script to manage such issues , users of the FreeBSD may also use the associated external directories created in their systems and used during their works .<br>
&gt;<br>
&gt;<br>
&gt; The main problem for the LGPL licensed sources is the modifications performed<br>
&gt; in them . If there are such parts they should be open sourced , not the sources of the<br>
&gt; user sources . The closed source programs will not be affected from such modifications .<br>
&gt;<br>
&gt; Some closed source program developers may not want to handle legal implications of<br>
&gt; these modified or not modified LGPL licensed parts even when they are distributed  because any failure of distribution of especially modified sources may cause significant trouble for them . To eliminate such distribution related concerns , the best action may be to store<br>
&gt; these sources into a publicly accessible repository , modify these sources in that repository and use them  from this repository . In this case , modifications in the main repository and excluding of these from FreeBSD distributions will not affect FreeBSD users other than fetching them when they are needed , which is legally acceptable and harmless .<br>
&gt;<br>
&gt; Generation of a package or port from this repository  may be necessary or not ,<br>
&gt; I will not be able to say anything because I do not know . The port or package<br>
&gt; generator persons would know such points . My opinion is that the above model<br>
&gt; may not require either a port or a package separately because  everything necessary<br>
&gt; will be in the repository .<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Mehmet Erol Sanliturk<br>
<br></blockquote><div><br></div><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
So you suggest that &quot;make buildworld&quot; downloads the libnfs sources?<br>
That would be a big change from the current setup, where all sources<br>
are assumed to be present when make starts.  I expect that it might<br>
break tools like &quot;make release&quot; and nanobsd, too.  Of course, we could<br>
always put these tests into tools/regression instead of tests/.  That<br>
would be easy.  But then they wouldn&#39;t get run in CI.  And I think<br>
that CI is essential for any new tests.<br>
<br></blockquote><div><br></div><div><br></div><div><br></div><div><br></div><div><div style="font-family:tahoma,sans-serif;font-size:large">It is very likely that there will not be many ( or high frequency ) modifications in <br></div><div style="font-family:tahoma,sans-serif;font-size:large">the repository of required LGPL licensed parts .  <br></div><div style="font-family:tahoma,sans-serif;font-size:large"><br></div><div style="font-family:tahoma,sans-serif;font-size:large">Fetching and storing them into a directory outside of the source tree and <br></div><div style="font-family:tahoma,sans-serif;font-size:large">keeping them in there will not be a violation of its license .<br></div><div style="font-family:tahoma,sans-serif;font-size:large">If a modification is applied into their  main repository , then again the action will be <br></div><div style="font-family:tahoma,sans-serif;font-size:large">&quot;fetch and store them , and keep them in there&quot; .</div><div style="font-family:tahoma,sans-serif;font-size:large">In this case , &quot;make { buildworld  | release }&quot; or other processing steps will require only specification of the global directory of LGPL licensed sources ( outside of the FreeBSD base ) . <br></div><div style="font-family:tahoma,sans-serif;font-size:large">These will not be included into FreeBSD base when it is distributed <br></div><div style="font-family:tahoma,sans-serif;font-size:large">but only will be used during testing or other tasks where they are applied . <br></div><div style="font-family:tahoma,sans-serif;font-size:large"><br></div><div style="font-family:tahoma,sans-serif;font-size:large">Any user of the FreeBSD , will do a similar action in their &quot;make { buildworld  | release }&quot; </div><div style="font-family:tahoma,sans-serif;font-size:large">or other processing works . </div><br></div><div><br></div><div><div style="font-family:tahoma,sans-serif;font-size:large">Since it is possible to keep the LGPL licensed sources ( by fetching modifications from its repository ) indefinitely , my opinion</div><div style="font-family:tahoma,sans-serif;font-size:large">is that continuous use of these sources are legally possible and harmless .</div><div style="font-family:tahoma,sans-serif;font-size:large">( I am not a lawyer and my views do not constitute legal advice . )<br></div><br></div><div><br></div><div><br></div><div><div style="font-family:tahoma,sans-serif;font-size:large">If a user does not want to keep these LGPL licensed parts , she/he may discard the</div><div style="font-family:tahoma,sans-serif;font-size:large">global directory contents when she/he completes her/his job , and again she/he <br></div><div style="font-family:tahoma,sans-serif;font-size:large">may fetch and use them . Such an action will be decided by the user with respect to</div><div style="font-family:tahoma,sans-serif;font-size:large">her/his needs and/or conventions . With respect to LGPL license such an action is not <br></div><div style="font-family:tahoma,sans-serif;font-size:large">necessary if the above defined publically accessible repository is used .</div></div></div></div></blockquote></div></div><div dir="auto"><br></div></div></blockquote><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto"></div><div dir="auto">All of that is covered by our existing practice of storing LGPL code in src/gnu/lib. We cover it in the handbook already. Since it is publicly available forever, storing it there will have no impact that&#39;s any different than libdialog or libreadline has has in the past.</div><div dir="auto"><br></div><div dir="auto">Warner</div><div dir="auto"><br></div></div></blockquote><div><br></div><div><br></div><div><br></div><div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default">You are right .  <br></div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default"><br></div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default">If   src/gnu/lib   is included in FreeBSD base  AND  some users want to exclude these</div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default">from the FreeBSD base ( or releases )<br></div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default"><br></div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default">then  a possible action would be my suggestion <br></div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default">( as move it into , for example ,    /gnu/lib/...    and exclude it from the FreeBSD base ,</div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default">by supplying its Internet access link in releases )</div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default">among other ( possibly many ) alternatives .<br></div><div style="font-family:tahoma,sans-serif;font-size:large" class="gmail_default"></div></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto"></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><div style="font-family:tahoma,sans-serif;font-size:large"><br></div><div style="font-family:tahoma,sans-serif;font-size:large">Mehmet Erol Sanliturk<br></div></div></div></div></blockquote></div></div></div></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><div style="font-family:tahoma,sans-serif;font-size:large"></div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Fri, Dec 31, 2021 at 2:22 PM Alan Somers &lt;<a href="mailto:asomers@freebsd.org" rel="noreferrer" target="_blank">asomers@freebsd.org</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; I recently ran into a bug in fusefs that can only be triggered when<br>
&gt;&gt; &gt;&gt;&gt; NFS exports a FUSE file system.  That makes it very difficult to write<br>
&gt;&gt; &gt;&gt;&gt; an automated test.  My options are basically:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; * Add an fhgetdirentries(2) syscall that is like getdirentries, but<br>
&gt;&gt; &gt;&gt;&gt; takes a fhandle_t* argument instead of a file descriptor.<br>
&gt;&gt; &gt;&gt;&gt; * Actually start nfsd during the test, and export the temporary FUSE filesystem.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; The first option sounds like way too much non-test code to change.<br>
&gt;&gt; &gt;&gt;&gt; Plus, I may need to add thread() and fhwrite() syscalls too, for other<br>
&gt;&gt; &gt;&gt;&gt; NFS-related test cases.  The second option would also be a lot of<br>
&gt;&gt; &gt;&gt;&gt; work, but at least the work would all be confined to the test code.<br>
&gt;&gt; &gt;&gt;&gt; However, what would I do once I&#39;ve exported the file system?  Mounting<br>
&gt;&gt; &gt;&gt;&gt; it with the NFS client would add several more layers to the stack<br>
&gt;&gt; &gt;&gt;&gt; under test.  I&#39;m not even sure that it&#39;s safe to self-mount an<br>
&gt;&gt; &gt;&gt;&gt; exported file system.  Another option would be to communicate directly<br>
&gt;&gt; &gt;&gt;&gt; with nfsd from the test code.  That&#39;s possible, but writing NFS RPCs<br>
&gt;&gt; &gt;&gt;&gt; by hand is very cumbersome, and it would obscure the test logic.  A<br>
&gt;&gt; &gt;&gt;&gt; better option is to use libnfs.  The API is just what I would need.<br>
&gt;&gt; &gt;&gt;&gt; However, it&#39;s licensed under the LGPL 2.1.  I know that we as a<br>
&gt;&gt; &gt;&gt;&gt; project decided to import no new GPLish code into contrib/.  But this<br>
&gt;&gt; &gt;&gt;&gt; code would never be used outside of /usr/tests, so it wouldn&#39;t even<br>
&gt;&gt; &gt;&gt;&gt; affect many production builds.  Would that be acceptable?  The<br>
&gt;&gt; &gt;&gt;&gt; workarounds are ugly:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; * Create a new port for all libnfs-dependent tests.  This would be<br>
&gt;&gt; &gt;&gt;&gt; hard to maintain, because the content of the tests must be so<br>
&gt;&gt; &gt;&gt;&gt; dependent on the base version of the OS.<br>
&gt;&gt; &gt;&gt;&gt; * Write the tests in Python using libnfs-python.  The tests could<br>
&gt;&gt; &gt;&gt;&gt; still be compiled as part of the base system, they just wouldn&#39;t work<br>
&gt;&gt; &gt;&gt;&gt; unless libnfs-python is installed from ports.  But this is awkward<br>
&gt;&gt; &gt;&gt;&gt; because the tests are currently C++.  So I would have to embed a<br>
&gt;&gt; &gt;&gt;&gt; Python interpreter into the C++ code.  It would really obfuscate the<br>
&gt;&gt; &gt;&gt;&gt; test logic.<br>
&gt;&gt; &gt;&gt;&gt; * Store the tests in the base system, but detached from the build.<br>
&gt;&gt; &gt;&gt;&gt; Then create a port that builds them by mounting SRC_BASE, much like<br>
&gt;&gt; &gt;&gt;&gt; devel/py-libzfs does.  It would then install them in /usr/local/tests.<br>
&gt;&gt; &gt;&gt;&gt; This is probably the least-bad option if I can&#39;t import libnfs into<br>
&gt;&gt; &gt;&gt;&gt; contrib/.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; What do you think?  Is it acceptable to import libnfs intro contrib/?<br>
&gt;&gt; &gt;&gt;&gt; It&#39;s LGPL, except for a few headers that are BSD and some examples<br>
&gt;&gt; &gt;&gt;&gt; that are GPLv3.  But we needn&#39;t use the examples, or even import them.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; <a href="https://github.com/sahlberg/libnfs" rel="noreferrer noreferrer" target="_blank">https://github.com/sahlberg/libnfs</a><br>;
&gt;&gt; &gt;&gt;&gt;<br>
</blockquote></div></div>
</blockquote></div></div></div>
</blockquote></div></div>
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOgwaMtnQ3DNSYv%2BJN1dsi1qH5=4ZJw=tmM6rVLRM0eCe6gUUQ>