|
17 | 17 |
|
18 | 18 | ## Introduction |
19 | 19 |
|
20 | | -This repository provides the NAM consumer module together with the smoke, |
21 | | -documentation, vendored `ExternalData` patch, and CI needed to keep the |
22 | | -consumer-side build graph stable. |
| 20 | +This repository is the engine behind NAM. |
| 21 | + |
| 22 | +It provides an include-only CMake consumer module that: |
| 23 | + |
| 24 | +- reads `.dvc` manifests from a local manifest checkout |
| 25 | +- resolves payloads from `GitHub Release assets` into one shared local object store |
| 26 | +- materializes normal files into build trees through `hardlink`, `symlink`, or `copy` |
| 27 | +- keeps the consumer build graph on public `CMake ExternalData` APIs |
| 28 | + |
| 29 | +The repository also carries the smoke consumer, documentation, vendored |
| 30 | +`ExternalData` patch, and CI needed to keep that flow stable. |
23 | 31 |
|
24 | 32 | The official first-party Nabla manifest registry now lives in: |
25 | 33 |
|
26 | 34 | - `https://github.com/Devsh-Graphics-Programming/Nabla-Asset-Manifests` |
27 | 35 |
|
28 | 36 | The module itself is not meant to be Nabla-only. Other projects can vendor |
29 | 37 | `nam.cmake`, keep their own `.dvc`-based manifest repository, publish payloads |
30 | | -through `GitHub Release assets`, and reuse the same build-time materialization |
31 | | -model without changing consumer call sites. |
| 38 | +through `GitHub Release assets`, and reuse the same consumer-side |
| 39 | +materialization model without changing call sites. |
32 | 40 |
|
33 | 41 | Current scope is intentionally narrow. For now the only supported remote |
34 | 42 | payload backend is `GitHub Release assets`, and no additional backends are |
35 | 43 | planned in the near term. |
36 | 44 |
|
| 45 | +### Why this exists |
| 46 | + |
37 | 47 | The current Nabla examples layout at: |
38 | 48 |
|
39 | 49 | - `https://github.com/Devsh-Graphics-Programming/Nabla-Example-And-Tests-Media` |
40 | 50 |
|
41 | | -looks deceptively harmless because it is "just for examples", but it is already enough to create real operational problems. This is not a theoretical warning. The pattern is already known in practice to slow normal workflows down, make asset maintenance heavier than it should be, work against setups such as Git worktrees, and couple ordinary source-control operations to large binary payload churn. That is a design mistake for asset distribution, even in an examples-only repository, and this pattern should be avoided in other projects as well. |
| 51 | +looks harmless because it is "just for examples", but it already creates real |
| 52 | +operational problems. Large binary payloads inside ordinary Git workflows slow |
| 53 | +down normal source-control operations, make maintenance heavier, work against |
| 54 | +setups such as Git worktrees, and couple code history to binary churn. |
42 | 55 |
|
43 | | -The core argument is simple. Source control should keep code and small reviewable metadata. Heavy payloads should stay outside normal Git history. |
| 56 | +The core argument is simple. Source control should keep code and small |
| 57 | +reviewable metadata. Heavy payloads should stay outside normal Git history. |
44 | 58 |
|
45 | 59 | ## Model |
46 | 60 |
|
|
0 commit comments