@@ -371,6 +371,9 @@ of this standard. The details of this standard are most important to either
371371maintainers of Python packages and developers of SCA tools such as
372372SBOM generation tools and vulnerability scanners.
373373
374+ What do Python package maintainers need to know?
375+ ------------------------------------------------
376+
374377Most Python packages don't contain code from other software components and thus
375378are already measurable by SCA tools without the need of this standard or
376379additional SBOM documents. Pure-Python packages are about `~90% <pypi-data _>`__
@@ -380,9 +383,68 @@ For projects that do contain other software components, documentation will be
380383added to the Python Packaging User Guide for how to specify and maintain
381384SBOM documents for Python packages in source code.
382385
386+ There are two "camps" of projects that contain other software, those from
387+ a "packaging ecosystem" (PyPI, Linux distros, Rust, NPM, etc) and those from
388+ outside a packaging ecosystem (vendored C, C++, Fortran). Software that is
389+ a part of a packaging ecosystem is much easier to identify meaning
390+ that package maintainers may have their package SBOM data annotated
391+ automatically by common build tools (auditwheel, cibuildwheel, multibuild, etc).
392+
393+ For projects that cannot be automatically annotated, the approach will be to
394+ generate SBOM files by some means and then include those files manually using
395+ ``pyproject.toml ``:
396+
397+ .. code-block :: toml
398+
399+ [project]
400+ ...
401+ sbom-files = [
402+ "sboms/bom.cdx.json"
403+ ]
404+
405+ For projects manually specifying an SBOM document the challenge will be
406+ keeping the document up-to-date. The CPython project has some
407+ `customized tooling <https://github.com/python/cpython/blob/main/Tools/build/generate_sbom.py >`__
408+ for this task, but it can likely be generalized into a tool reusable by other
409+ projects.
410+
411+ What do SBOM tool authors need to know?
412+ ---------------------------------------
413+
414+ Developers of SBOM generation tooling will need to know about the existence
415+ of this PEP and that Python packages may begin publishing SBOM documents
416+ within package archives. This information needs to be included as a part of
417+ generating an SBOM document for a particular Python package or Python
418+ environment.
419+
383420A follow-up informational PEP will be authored to describe how to transform
384421Python packaging metadata, including the mechanism described in this PEP,
385- into an SBOM document describing Python packages.
422+ into an SBOM document describing Python packages. Once the informational PEP is
423+ complete, tracking issues will be opened specifically linking to the
424+ informational PEP to spur the adoption of PEP 770 by SBOM tools.
425+
426+ A `benchmark is being created <https://github.com/psf/sboms-for-python-packages/tree/main/benchmark >`__
427+ to compare the outputs of different SBOM tools when run with various Python
428+ packaging inputs (package archive, installed package, environment, container
429+ image) is being created to track the progress of different SBOM generation
430+ tools. This benchmark will inform where tools have gaps in support
431+ of this PEP and Python packages.
432+
433+ What do users of SBOM documents need to know?
434+ ---------------------------------------------
435+
436+ Many users of this PEP won't know of its existence, instead their software
437+ composition analysis tools, SBOM tools, or vulnerability scanners will simply
438+ begin giving more comprehensive information after an upgrade. For users that are
439+ interested in the sources of this new information, the "tool" field of SBOM
440+ metadata already provides linkages to the projects generating their SBOMs.
441+
442+ For users who need SBOM documents describing their open source dependencies the
443+ first step should always be "create them yourself". Using the benchmarks above
444+ a list of tools that are known to be accurate for Python packages can be
445+ documented and recommended to users. For projects which require
446+ additional manual SBOM annotation: tips for contributing this data and tools for
447+ maintaining the data can be recommended.
386448
387449Reference Implementation
388450========================
0 commit comments