@@ -0,0 +1,58 @@
6+grant_type = [ "Proposal" ]
7+grant_category = [ "App Dev" ]
11+description = "Herd - Dependency management for Citadel"
13+assignee = "~midsum-salrux"
15+champion = "~littel-wolfur"
19+## Dependency Management for Citadel
21+Currently, urbit does not have a dependency management system. Developers have to include system files and libraries in their application
22+desks, often with inconvenient symlink setups. This project will extend %citadel with a dependency management system that allows a developer
23+to define a list of dependencies for a desk that %citadel uses to retrieve inter-desk source files and keep them in sync.
27+The user may create a desk.herd file (ala desk.bill and friends) at their desk root containing a hoon list of beef (a beam-like structure)
28+describing the set of dependencies for that desk. These should point to sources defined on local or remote desks accessible from the ship
29+running %citadel. %citadel will create a new build desk by fuse-ing the list of dependencies followed by the source files from the development
32+### Sample desk.herd file
36+=/ now ~2022.7.18..20.53.47..b9b2
38+:~ [[our %base [%da now]] /lib/csv/hoon]
39+ [[our %landscape [%da now]] /sur/graph-store/hoon]
40+ [[our %bitcoin [%da now]] /lib/btc/hoon]
44+Documentation through %docs will also be included.
46+## Future work/stretch goals
48+%citadel could support command line library installation ala npm or rubygems by allowing developers to serve libraries remotely. This
49+example poke to a local instance could ask a remote %citadel on ~sampel-palnet for the sources corresponding to the %remote-lib library and
50+install them into %application-desk, all while maintaining the integrity of current state of dependencies for that desk.
52+```:citadel [%install %application-desk ~sampel-palnet %remote-lib]```
54+## Milestones & Compensation
56+Expected completion: September 15, 2022