Resolve external dependency conflict with zero-dep philosophy #7
Labels
No labels
coordination/cross-repo
coordination/needed
effort
large
effort
medium
effort
small
meta/duplicate
meta/planning
meta/wontfix
priority
high
priority
low
priority
medium
session
blocker
session
handover
session
next
status
blocked
status
done
status
in-progress
status
review
status
to-go
type
admin
type
bug
type
config
type
deployment
type
docs
type
enhancement
type
feature
type
handover
type
infrastructure
type
installation
type
maintenance
type
migration
type
research
type
security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
DAW/daw-lua-common#7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
README states "zero external dependencies required" but two modules
have hard external requirements:
This contradicts the project philosophy.
Options
A) Accept external deps -- update philosophy statement
Mark fs.lua and http_client.lua as "requires external dep" clearly
in README. Philosophy becomes "core modules zero-dep, utility modules
documented deps". Simple, honest.
B) Pure Lua fallbacks per module
Each module tries the external lib first, falls back to pure Lua
implementation (same 2-tier pattern as json.lua and yaml.lua).
Problem: pure Lua HTTP is not realistic. Option B only works for fs.lua.
C) Split into daw-lua-common and daw-lua-common-ext
Clean separation, callers know what they depend on.
Decision needed
Which option? Recommendation: A for http_client (no realistic fallback),
B for fs (lfs fallback to io/os is feasible), or C for clean split.
Affected modules
Refs
DAW/daw-lua-common#5
Decision 2026-03-17
Option C: Split into separate repository.
Submodule mechanism identical to daw-lua-common.
Projects include both as needed:
src/lib -> daw-lua-common
src/lib-ext -> daw-lua-common-ext
Next step: create DAW/daw-lua-common-ext repo, move fs.lua and http_client.lua.
Decision 2026-07-19 (supersedes the 2026-03-17 decision to split into daw-lua-common-ext): Option B instead of Option C. fs/ stays in this repo and gets a shell-based fallback tier (lfs missing -> shell out via daw.common.sys, same 2-tier pattern as json/yaml), rather than moving to a separate repo. Rationale: fs is used pervasively across nearly every downstream module and host program; splitting it out would require a cross-repo migration with no corresponding benefit, since the license-compatibility concern that partly motivated the original split does not apply (lfs/cjson/dkjson/lyaml are all MIT, fully compatible with this repo's ISC license, and none of them are bundled/vendored here). daw-lua-common-ext remains unused for now. Scheduled for milestone 2.1, tracked together with #3.