Skip to content

Commit 034e6d1

Browse files
bomly-guyclaude
andcommitted
docs: high-level architecture and contribution docs for the modular layout
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 7f8d1c2 commit 034e6d1

3 files changed

Lines changed: 20 additions & 8 deletions

File tree

CONTRIBUTING.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ Bomly is built from modular components:
1212

1313
- [`github.com/bomly-dev/bomly-sdk`](https://github.com/bomly-dev/bomly-sdk)
1414
the public contract for building Bomly components and managed plugins.
15-
Plugin authors should start there and with [docs/PLUGINS.md](docs/PLUGINS.md).
15+
Plugin authors should start there, with [docs/PLUGINS.md](docs/PLUGINS.md),
16+
and with the starter repository at
17+
[`bomly-plugin-template`](https://github.com/bomly-dev/bomly-plugin-template).
1618
- `github.com/bomly-dev/bomly-engine` — the core engine module this repository
1719
consumes. Building `cmd/bomly` from source requires read access to it, so
1820
source builds are limited to maintainers; users install

docs/ARCHITECTURE.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,16 @@ downgrade block.
166166
For the complete permission model, input limits, plugin trust boundary, and
167167
documented residual risks, see [Security and Trust Boundaries](SECURITY.md).
168168

169+
## Repository and module layout
170+
171+
Bomly is built from modular components. This repository is the distribution
172+
home: the `bomly` command entry point, the user documentation, the release
173+
automation, and the end-to-end test suite that drives the built binary
174+
against pinned public repositories. The core implementation is consumed as a
175+
versioned Go module, and the public
176+
[`bomly-sdk`](https://github.com/bomly-dev/bomly-sdk) module defines the
177+
contract that both built-in components and external plugins implement.
178+
169179
## Build variants
170180

171181
Bomly ships in two variants. The full binary (`bomly`) links the Syft and Grype libraries directly and needs no external tools. The lite binary (`bomly-lite`) shells out to `syft` and `grype` on your `PATH` for a smaller download. Both behave the same from the command line. See [Installation](INSTALLATION.md) for which to pick.

docs/REACHABILITY.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,9 @@ Consequences:
214214
libraries.** A missing prefix produces a false-negative for
215215
direct imports. The dep-graph BFS usually catches the case via
216216
a transitive edge from a correctly-mapped neighbor, but unlike
217-
Python there is no identity-normalization fallback. Adding a
218-
prefix is a one-line PR in
219-
`internal/analyzers/jvmreach/prefixmap.go`.
217+
Python there is no identity-normalization fallback. If you hit a
218+
missing prefix, please open an issue naming the Maven artifact
219+
and its Java package prefix — additions are quick to ship.
220220
3. **Sub-package imports collapse to the artifact.** Importing
221221
`com.fasterxml.jackson.databind.ObjectMapper` flips the whole
222222
`jackson-databind` artifact reachable, even if the advisory
@@ -330,16 +330,16 @@ Reachability data appears in three places:
330330
analyzer is a lower bound on what's actually reachable.
331331
- **`pyreach`'s module-to-distribution map is hand-curated.** Missing
332332
an entry produces a false-negative for direct top-level imports.
333-
PRs to extend `internal/analyzers/pyreach/moduletodist.go` are
334-
welcome.
333+
Please open an issue naming the distribution and its import name
334+
so the map can be extended.
335335
- **`jvmreach` does not follow reflection or runtime class loading.**
336336
Spring component scanning, `ServiceLoader`, OSGi, JPMS dynamic
337337
layers, and annotation-processed code are invisible to a static
338338
scanner.
339339
- **`jvmreach`'s package-prefix map is hand-curated.** The Java
340340
`package → Maven artifact` relationship has no naming convention,
341-
so missing prefixes do not have an identity fallback. PRs to
342-
extend `internal/analyzers/jvmreach/prefixmap.go` are welcome.
341+
so missing prefixes do not have an identity fallback. Please open
342+
an issue naming the artifact and prefix so the map can be extended.
343343
- **`jvmreach` multi-module traversal is declarative.** It follows
344344
Maven parent `<modules>` recursively and standard Gradle
345345
`include(...)` declarations with `projectDir` overrides. Gradle

0 commit comments

Comments
 (0)