From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 15DF943863; Mon, 8 Jan 2024 10:25:35 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D62B4402B0; Mon, 8 Jan 2024 10:25:34 +0100 (CET) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 18B6440263; Mon, 8 Jan 2024 10:25:33 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id EC9D32049C; Mon, 8 Jan 2024 10:25:30 +0100 (CET) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [dpdk-dev] [v5] doc: define qualification criteria for external library X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Mon, 8 Jan 2024 10:25:28 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35E9F117@smartserver.smartshare.dk> In-Reply-To: <20240108075850.4151361-1-jerinj@marvell.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [v5] doc: define qualification criteria for external library Thread-Index: AdpCCI6gh8/hfM6LQcKl+n3PmN98YAAAbNFw References: <20240105123042.4007877-1-jerinj@marvell.com> <20240108075850.4151361-1-jerinj@marvell.com> From: =?iso-8859-1?Q?Morten_Br=F8rup?= To: , Cc: , "Thomas Monjalon" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > From: jerinj@marvell.com [mailto:jerinj@marvell.com] > Sent: Monday, 8 January 2024 08.59 >=20 > Define qualification criteria for external library > based on a techboard meeting minutes [1] and past > learnings from mailing list discussion. According to the DPDK project charter, the Governing Board deals with = legal and licensing issues, so we need their approval before publishing = this. Perhaps the Governing Board should be invited to join the discussion? >=20 > [1] > http://mails.dpdk.org/archives/dev/2019-June/135847.html > https://mails.dpdk.org/archives/dev/2024-January/284849.html >=20 > Signed-off-by: Jerin Jacob > Acked-by: Thomas Monjalon > --- > doc/guides/contributing/index.rst | 1 + > .../contributing/library_dependency.rst | 52 = +++++++++++++++++++ > 2 files changed, 53 insertions(+) > create mode 100644 doc/guides/contributing/library_dependency.rst >=20 > v5: > - Added "Dependency nature" section based on Stephen's input >=20 > v4: > - Address Thomas comments from > https://patches.dpdk.org/project/dpdk/patch/20240105121215.3950532-1- > jerinj@marvell.com/ >=20 > v3: > - Updated the content based on TB discussion which is documented at > https://mails.dpdk.org/archives/dev/2024-January/284849.html >=20 > v2: > - Added "Meson build integration" and "Code readability" sections. >=20 >=20 > diff --git a/doc/guides/contributing/index.rst > b/doc/guides/contributing/index.rst > index dcb9b1fbf0..e5a8c2b0a3 100644 > --- a/doc/guides/contributing/index.rst > +++ b/doc/guides/contributing/index.rst > @@ -15,6 +15,7 @@ Contributor's Guidelines > documentation > unit_test > new_library > + library_dependency > patches > vulnerability > stable > diff --git a/doc/guides/contributing/library_dependency.rst > b/doc/guides/contributing/library_dependency.rst > new file mode 100644 > index 0000000000..94025fdf60 > --- /dev/null > +++ b/doc/guides/contributing/library_dependency.rst > @@ -0,0 +1,52 @@ > +.. SPDX-License-Identifier: BSD-3-Clause > + Copyright(c) 2024 Marvell. > + > +External Library dependency > = +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > + > +This document defines the qualification criteria for external > libraries that may be > +used as dependencies in DPDK drivers or libraries. More background information could be added here, for context. Although DPDK is a BSD licensed project, we want to open the door for = non-BSD licensed external libraries in those drivers and libraries, = where the developer has the choice to omit them at build time. But not = in the core parts of DPDK, which must remain fully BSD licensed. Stephen shared some concerns about source code availability, so DPDK = doesn't become a shim for a bunch of binary blobs, like some other = "open" project (I cannot remember the name of the project he mentioned). = We are allowing binary blobs, but it would be nice if we could somehow = state our intentions in this regard. > + > +#. **Documentation:** > + > + - Must have adequate documentation for the steps to build it. > + - Must have clear license documentation on distribution and usage > aspects of external library. > + > +#. **Free availability:** > + > + - The library must be freely available to build in either source = or > binary form. > + - It shall be downloadable from a direct link. There shall not be > any requirement to explicitly > + login or sign a user agreement. Remove "explicitly". > + > +#. **Usage License:** > + > + - Both permissive (e.g., BSD-3 or Apache) and non-permissive = (e.g., > GPLv3) licenses are acceptable. > + - In the case of a permissive license, automatic inclusion in the > build process is assumed. > + For non-permissive licenses, an additional build configuration > option is required. We must ensure that automatic inclusion only applies to libraries with a = license that allows both free usage and free distribution. IANAL, so = please confirm that this bullet covers both? The default DPDK build should not include anything that is not freely = distributable, comes with an EULA or any other limitations or = restrictions. Optimally, the default DPDK build should remain 100 % = compatible with the BSD license. DPDK is a BSD licensed project, so any = deviations from the BSD license must be explicitly selected (opt-in) at = build time. > + > +#. **Distributions License:** Distributions -> Distribution > + > + - No specific constraints beyond documentation. > + > +#. **Compiler compatibility:** > + > + - The library must be able to compile with a DPDK supported > compiler for the given execution > + environment. We should consider cross build requirements, or at least use cross build = terminology. E.g. "execution environment" -> "target environment". > + For example, for Linux, the library must be able to compile with > GCC and/or clang. > + - Library may be limited to a specific OS. Since we allow limiting to a specific OS, we should probably also allow = limiting to specific architecture and/or hardware, e.g. something only = present in a specific CPU/SoC/ASIC/FPGA: - - Library may be limited to a specific OS. + - Library may be limited to a specific operating system and/or = specific hardware. > + > +#. **Meson build integration:** > + > + - The library must have standard method like ``pkg-config`` for > seamless integration with > + DPDK's build environment. > + > +#. **Code readability:** > + > + - Optional dependencies should use stubs to minimize ``ifdef`` > clutter, promoting improved > + code readability. > + > +#. **Dependency nature:** > + > + - The external library dependency should be optional. should -> must ? > + i.e Missing external library must not impact the core > functionality of the DPDK, specific > + library and/or driver will not built if dependencies are not > meet. Typo: meet -> met Is the above dependency text sufficient to highlight that stricter rules = apply to DPDK core libraries? Do we also have sub-dependency requirements? E.g.: + - All of the above requirements also apply to libraries that the = library itself depends on. > -- > 2.43.0