@@ -0,0 +1,65 @@
7+grant_type = ["Proposal"]
8+grant_category = ["Other"]
12+description = "Making Elm the frontend technology for Urbit"
14+assignee = ["~racfer-hattes"]
15+champion = ["~rovnys-ricfer"]
24+I think Elm is a great language for developing frontends. The Elm architecture is conceptually very similar to how %gall agents are structured.
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
31+To eliminate the need to convert through JSON Elm needs to support serializing and deserializing jammed nouns.
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.
35+# Milestones and Compensation
37+## Milestone 1: Jam and Nouns
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.
45+## Milestone 2: Noun Channels
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.
51+## Milestone 3: Documentation and Project Template
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.
63+Deliverables: An Elm airlock library that supports Solid-state subscriptions.