BOM management: keeping one version true across four departments
Every function edits its own copy, and by the third revision nobody can say which is current. That is not a tooling problem until you decide it is.
Two formats, both standards, both accepted. The choice is less about features than about what your customers and your toolchain already consume.
CycloneDX and SPDX are the two established formats for software bills of materials. CycloneDX came out of the application security community and is now an ECMA standard; SPDX originated in open-source licence compliance and is an ISO standard. Both are machine-readable, both are widely tooled, and both are accepted by the major buyers who ask for SBOMs.
Because both are legitimate, the choice is practical rather than doctrinal. What matters is which one your build tooling emits without extra work, which one your customers ask for by name, and whether the parts of the format you actually need are supported by the tools on both sides. Conversion between them exists and is imperfect at the edges, so choosing what your ecosystem already speaks avoids a class of problems entirely.
The workable position is to standardise internally on whichever your pipeline produces most reliably, and to generate the other on request rather than maintaining two by hand. Customers rarely insist once they see a valid document in the other format, and where a contract does specify one, generating it at build time from the same dependency graph is a configuration change rather than a project.
Validate the file, do not just produce it. Both formats have schemas and validators, and an SBOM that fails validation will be rejected by an automated ingestion pipeline without a human ever reading it — which is exactly the scenario a customer’s security team has set up.
A well-formed document listing forty per cent of the dependency tree is worse than a plainer one listing all of it, because it invites false confidence. The common gaps are the same regardless of format: transitive dependencies, components pulled in by build scripts, vendored source, and anything installed into a base image. Test your output against a known application before trusting it — count the components and compare to what the package manager reports.
Ettex Sheets holds the component inventory in a readable form alongside the machine-readable file, so a person can answer a question without a tool; Ettex Records keeps the generated documents per release and format with their validation results; and the artefact itself is covered in sbom, with the obligations that drive it in sbom requirements.
Plainly: this is records and spreadsheets, not an SBOM generator. Generation belongs in the build pipeline with a purpose-built tool; what this covers is choosing sensibly and keeping what was produced.
Whichever your build tooling emits reliably and your customers ask for. Both are standards and both are accepted; conversion is possible but imperfect.
CycloneDX leans towards security use cases with native vulnerability structures; SPDX towards licence compliance with a formal licence expression syntax.
No. Standardise on one and generate the other on request from the same dependency graph.
Completeness. A valid document missing transitive or vendored components is worse than a plain one that is complete.
Every function edits its own copy, and by the third revision nobody can say which is current. That is not a tooling problem until you decide it is.
A cap table is not a summary of ownership. It is the record of every instrument issued, and the errors in it are discovered by somebody else’s lawyer during diligence.
The term sheet decides your ownership through three mechanics most founders model wrongly: the option pool, the conversion of earlier instruments, and whether the pool is pre or post money.