on master help sign in
Merge pull request #2151 from urbit/alangalis-add-elm

Create elm.md

commit03fe6be3c33864e9f310a9392340b1b7babe49fc authorTed Blackman <ted@tlon.io> dateThu 15 Jun 2023, 13:36 (3 years ago) parenta48904882fb2e0
1 file changed+65
content/grants/2023/elm.md+65
content/grants/2023/elm.mdnew file+65
@@ -0,0 +1,65 @@
1++++
2+
3+title = "Elm"
4+date = "2023-06-08"
5+
6+[taxonomies]
7+grant_type = ["Proposal"]
8+grant_category = ["Other"]
9+
10+[extra]
11+image = ""
12+description = "Making Elm the frontend technology for Urbit"
13+reward = "5 Stars"
14+assignee = ["~racfer-hattes"]
15+champion = ["~rovnys-ricfer"]
16+grant_id = "P0275"
17+completed = false
18+canceled = false
19+
20++++
21+
22+# Description
23+
24+I think Elm is a great language for developing frontends. The Elm architecture is conceptually very similar to how %gall agents are structured.
25+
26+Goals:
27+
28+1. Remove the need to convert to and from JSON to interact with Urbit from Elm
29+2. Make interacting with Urbit from Elm as painless as possible
30+
31+To eliminate the need to convert through JSON Elm needs to support serializing and deserializing jammed nouns.
32+
33+For potential portability reasons Elm libraries are not allowed to have JS FFI. This means that we need to implement as much as possible in pure Elm.
34+
35+# Milestones and Compensation
36+
37+## Milestone 1: Jam and Nouns
38+
39+Reward: 2 Stars
40+
41+Deliverables:
42+ - An Elm library that implements `++jam` and `++cue` in Elm.
43+ - An Elm library for manipulating Nock Nouns and converting Elm data structures and type to and from Nock Nouns.
44+
45+## Milestone 2: Noun Channels
46+
47+Reward: 1 Star
48+
49+Deliverables: An Elm airlock library that supports subscriptions and pokes encoded as jammed Nouns. The library should be designed to be as ergonomic as possible.
50+
51+## Milestone 3: Documentation and Project Template
52+
53+Reward: 1 Star
54+
55+Deliverables:
56+ - Good documentation for resulting the package + a set of tutorials that cover some tricky bits.
57+ - A git repo with all of the boilerplate required to communicate with Urbit. This repo is intended to be used by ASL students to bootstrap their project frontend.
58+
59+## Milestone 4: SSS
60+
61+Reward: 1 star
62+
63+Deliverables: An Elm airlock library that supports Solid-state subscriptions.
64+
65+