on master help sign in
Add herd.md

Add new herd proposal

commit628afe2cb8dca994e4b8d53b1069486eddbd6a63 authormikeosborne <mike@urbit.org> dateWed 10 Aug 2022, 10:15 (4 years ago) parentd1c6d91
1 file changed+58
content/grants/herd.md+58
content/grants/herd.mdnew file+58
@@ -0,0 +1,58 @@
1++++
2+title = "Herd"
3+date = "2022-08-10"
4+
5+[taxonomies]
6+grant_type = [ "Proposal" ]
7+grant_category = [ "App Dev" ]
8+
9+[extra]
10+image = ""
11+description = "Herd - Dependency management for Citadel"
12+reward = "2 stars"
13+assignee = "~midsum-salrux"
14+grant_id = "P0170"
15+champion = "~littel-wolfur"
16+completed = false
17++++
18+
19+## Dependency Management for Citadel
20+
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.
24+
25+## Deliverable
26+
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
30+desk.
31+
32+### Sample desk.herd file
33+
34+```
35+=/ our ~sampel-palnet
36+=/ now ~2022.7.18..20.53.47..b9b2
37+^- (list beef)
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]
41+==
42+```
43+
44+Documentation through %docs will also be included.
45+
46+## Future work/stretch goals
47+
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.
51+
52+```:citadel [%install %application-desk ~sampel-palnet %remote-lib]```
53+
54+## Milstone
55+
56+Expected completion: September 15, 2022
57+
58+Reward: 2 stars