Skip to content

Commit a1beff2

Browse files
nscuroCopilot
andauthored
Update "About changes in v5" (#93)
* Update "About changes in v5" * Applies Google style guide. * Removes "provider model" and "spec-first API v2" sections. These are implementation details, readers of this doc are the wrong audience. * Clarifies other sections to provide more context. Signed-off-by: nscuro <nscuro@protonmail.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Niklas <nscuro@protonmail.com> --------- Signed-off-by: nscuro <nscuro@protonmail.com> Signed-off-by: Niklas <nscuro@protonmail.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
1 parent 16251a0 commit a1beff2

2 files changed

Lines changed: 50 additions & 54 deletions

File tree

docs/concepts/changes-in-v5.md

Lines changed: 46 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# About changes in v5
22

3-
Dependency-Track v5 extensively refactors the platform. It does not rewrite
3+
Dependency-Track v5 extensively refactors the platform. It doesn't rewrite
44
it. Much of the underlying technology and many subsystems carry over from
5-
v4 untouched. The changes concentrate on three areas where v4's pain
6-
points lived: the runtime, the policy engine, and the operational model.
5+
v4 untouched. Most changes address where v4's design showed its limits:
6+
scalability and reliability, the policy engine, and operational
7+
complexity. A few sections cover new capabilities v4 lacked entirely.
78

8-
This page summarises *what changed and why*. For step-by-step upgrade
9+
This page summarizes *what changed and why*. For step-by-step upgrade
910
instructions, see the [upgrade guides](../guides/upgrading/index.md).
1011
To move data from an existing v4 deployment into v5, see
1112
[Migrating from v4 to v5](../guides/administration/migrating-from-v4.md).
@@ -28,15 +29,15 @@ engine. Smaller deployments still work, and gain the same guarantees.
2829
v5 removes v4's in-process single point of failure (the in-memory queue
2930
and local index). Web and worker nodes now scale independently, and
3031
background work distributes through PostgreSQL-backed queues instead of an
31-
in-memory pool. PostgreSQL itself stays a tier you must operate in HA if
32-
you need full availability. See
32+
in-memory pool. PostgreSQL high availability remains your responsibility. See
3333
[Scaling Dependency-Track](../guides/administration/scaling.md).
3434

3535
Long-running work (BOM processing, vulnerability analysis, notification
3636
delivery) runs on a
3737
[durable execution engine](architecture/design/durable-execution.md).
3838
Tasks resume after a restart or crash from where they stopped, instead of
39-
vanishing with the JVM.
39+
vanishing with the JVM. Failed steps retry automatically with exponential
40+
backoff, rather than requiring manual re-triggering.
4041

4142
Notifications follow the same model. The runtime writes each notification
4243
to a [transactional outbox](architecture/design/notifications.md) in the
@@ -48,54 +49,53 @@ See [About notifications](notifications.md) for the user-facing model.
4849
### A single data plane on PostgreSQL
4950

5051
v5 commits to PostgreSQL and drops H2, MySQL, and Microsoft SQL Server.
51-
Concentrating on one engine lets the project use Postgres-specific
52-
features that the v4 multi-database abstraction could not. Schema changes
53-
now flow through an explicit, versioned changelog rather than runtime ORM
54-
diffing, so upgrades stay predictable and roll back cleanly.
52+
Concentrating on one engine lets the project use PostgreSQL-specific
53+
features that the v4 multi-database abstraction couldn't. Schema changes
54+
now flow through an explicit, versioned changelog rather than runtime
55+
object-relational mapper (ORM) diffing, so upgrades stay predictable and
56+
roll back cleanly.
5557

56-
Two subsystems v4 ran out-of-process now live inside the database:
58+
Two subsystems that v4 ran as separate processes now live inside the database:
5759

5860
* **Search** runs directly against PostgreSQL. The on-disk
5961
`~/.dependency-track/index` directory disappears, along with the
6062
index-corruption and disk-space failure modes that came with it.
61-
Lucene's fuzzy matching disappears with it. See *What this breaks*.
63+
Lucene's fuzzy matching disappears with it. See [What this breaks](#what-this-breaks).
6264
* **Cache** still lives in PostgreSQL, but in `UNLOGGED` tables: no
63-
write-ahead log overhead, non-durable by design, which suits a cache.
65+
write-ahead log overhead, non-durable by design.
6466
v4 stored cache rows in normal tables and bounded them only through
65-
recurring cleanup tasks. v5 enforces per-cache TTLs and size limits.
67+
recurring cleanup tasks. v5 enforces per-cache TTLs.
6668

6769
Metrics also move into the database. v4 recomputed point-in-time counters
6870
row-by-row in Java tasks. v5 turns metrics into a proper time series,
6971
computed in PostgreSQL. See
7072
[About time-series metrics](time-series-metrics.md).
7173

74+
The schema tightens constraints that v4 deferred to app code under the
75+
multi-database abstraction. Stricter constraints catch bad data at the
76+
persistence layer rather than letting it propagate silently.
77+
78+
The PostgreSQL commitment also unlocks targeted performance work:
79+
partial indexes on common query shapes, table partitioning for high-volume time-series data,
80+
and batched reads and writes to cut network and I/O overhead.
81+
7282
### Policies and notification filtering in CEL
7383

74-
A policy in v4 lived in the UI as a tree of click-built clauses, capped by
75-
what the editor could express. v5 evaluates policies in
76-
[Common Expression Language][CEL], so a complex rule collapses to a single
77-
readable expression. The same engine drives
84+
v4's policy editor provided a list of conditions with a fixed set of
85+
operators. v5 backs the same editor with a new engine that is more
86+
efficient than v4's and uses [Common Expression Language][CEL] for
87+
evaluation. An Expression condition lets operators write CEL directly
88+
when the structured conditions are not enough. The same engine drives
7889
[vulnerability policies](vulnerability-policies.md), letting operators
79-
audit or suppress findings before they reach the UI or trigger a
90+
audit or suppress findings before they reach the frontend or trigger a
8091
notification.
8192

8293
CEL also reaches [notifications](notifications.md). A v4 alert filtered
8394
on project, tag, level, and group. A v5 alert can match on any field of
8495
the notification payload through a
8596
[filter expression](../reference/notifications/filter-expressions.md) the
86-
alert carries.
87-
88-
### A provider model for replaceable subsystems
89-
90-
Subsystems an operator might reasonably want to swap now sit behind
91-
provider interfaces. File storage ships with local and S3 backends, secret
92-
managers with database and environment-variable backends, and cache with
93-
in-memory and database backends. Vulnerability data sources (NVD, GitHub
94-
Advisories, OSV) and analyzers (internal, OSS Index, Snyk, Trivy, VulnDB)
95-
load through the same model. Choosing a provider becomes a configuration
96-
decision, not a fork. See the
97-
[file storage reference](../reference/configuration/file-storage.md) for
98-
the storage end of the model.
97+
alert carries. For example, an alert can fire only for vulnerabilities at
98+
or exceeding a given severity.
9999

100100
### Component integrity verification
101101

@@ -111,19 +111,12 @@ shipped as a beta feature in v4 with known gaps and noticeable overhead on
111111
larger portfolios. v5 closes those gaps and reworks the implementation so
112112
the cost stays bounded as the project count grows.
113113

114-
### Centralised secrets
114+
### Centralized secrets
115115

116116
Credentials for integrations live in one place instead of spreading across
117117
per-feature settings, behind whichever secret-manager provider the
118-
deployment selects. See [Managing secrets](../guides/user/managing-secrets.md).
119-
120-
### A spec-first REST API v2
121-
122-
v4 generated its OpenAPI specification from server-side annotations. v5
123-
inverts that for a new [v2 API](../reference/api/v2.md): the spec becomes
124-
the contract, and handlers plug into the interfaces it generates. The
125-
[legacy v1 surface](../reference/api/v1.md) stays in place for backward
126-
compatibility.
118+
deployment selects. A single store simplifies auditing and rotation: you rotate a compromised
119+
credential in one place, not across scattered configuration screens. See [Managing secrets](../guides/user/managing-secrets.md).
127120

128121
### A separate management surface
129122

@@ -152,18 +145,18 @@ remediation steps, lives in the
152145
List fields gain a `List` suffix, enum-like values gain a type prefix
153146
(`INFORMATIONAL``LEVEL_INFORMATIONAL`, `SYSTEM``SCOPE_SYSTEM`,
154147
`NEW_VULNERABILITY``GROUP_NEW_VULNERABILITY`), and timestamps
155-
normalise to a single millisecond-precision format. Templates that
148+
normalize to a single millisecond-precision format. Templates that
156149
consumed v4's ad-hoc subject objects need a rewrite.
157-
* **Search.** Endpoints under `/api/v1/search` go away, and fuzzy matching
158-
goes with them.
150+
* **Search.** Dependency-Track removes the endpoints under `/api/v1/search`,
151+
along with fuzzy matching.
159152
* **Fuzzy vulnerability analysis.** v4's internal analyzer optionally fell back to
160153
Lucene-based fuzzy matching against the internal vulnerability database
161154
when a component lacked a CPE. Dropping Lucene removes this capability.
162-
* **Findings and SARIF.** Findings and SARIF responses change shape, and
163-
the per-project findings endpoint now paginates by default. See the
164-
upgrade guide.
165-
* **Removed deprecated endpoints.** Three v4-deprecated paths under
166-
`/api/v1/policy` and `/api/v1/tag` go away.
155+
* **Findings and SARIF.** Findings and SARIF responses change shape, and the per-project findings
156+
endpoint now paginates by default. See the
157+
[upgrade guide](../guides/upgrading/index.md).
158+
* **Removed deprecated endpoints.** Dependency-Track removes three
159+
v4-deprecated paths under `/api/v1/policy` and `/api/v1/tag`.
167160
* **Distribution formats.** v4 shipped separate API server and frontend
168161
container images, a "bundled" container image combining both, and an
169162
executable WAR. v5 ships container images only, and drops the bundled
@@ -173,9 +166,8 @@ remediation steps, lives in the
173166
`/mirror/nvd/*` so other tools could use Dependency-Track as a local
174167
NVD mirror. v5 no longer persists the feed files (it has no internal
175168
use for them), and its file storage abstracts over backends like S3
176-
rather than assuming a local filesystem to serve from. The endpoint is
177-
removed. Consumers should fetch feeds directly from NIST or run a
178-
dedicated mirror.
169+
rather than assuming a local filesystem to serve from. Dependency-Track
170+
no longer serves this endpoint. Fetch feeds directly from NIST or run a dedicated mirror.
179171

180172
[CEL]: https://cel.dev/
181173
[Protobuf]: https://protobuf.dev/

docs/includes/abbreviations.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@
77
*[EPSS]: Exploit Prediction Scoring System
88
*[GHSA]: GitHub Security Advisory
99
*[IdP]: Identity Provider
10+
*[JVM]: Java Virtual Machine
1011
*[KEK]: Key Encryption Key
1112
*[LDAP]: Lightweight Directory Access Protocol
13+
*[NIST]: National Institute of Standards and Technology
1214
*[NVD]: National Vulnerability Database
1315
*[OIDC]: OpenID Connect
1416
*[OSV]: Open Source Vulnerabilities
1517
*[PAC]: Portfolio Access Control
1618
*[PURL]: Package URL, a standardized format for identifying software packages
19+
*[REST]: Representational State Transfer
20+
*[SARIF]: Static Analysis Results Interchange Format
1721
*[SBOM]: Software Bill of Materials
1822
*[SLO]: Service Level Objectives
1923
*[VDR]: Vulnerability Disclosure Report

0 commit comments

Comments
 (0)