@@ -1,6 +1,6 @@
2title = "Clojure Urbit Client"
2title = "Clojure Urbit Client"
3−date = "2021-10-07"
3+date = "2021-10-25"
4[taxonomies]
4[taxonomies]
5grant_type = ["Proposal"]
5grant_type = ["Proposal"]
6grant_category = ["App Dev - Other"]
6grant_category = ["App Dev - Other"]
@@ -8,7 +8,7 @@ grant_category = ["App Dev - Other"]
9description = "Urbit client baasd on the Clojure programming language"
9description = "Urbit client baasd on the Clojure programming language"
11−assignee = ""
11+assignee = "~sorted-falnyd"
13completed = false
13completed = false
@@ -46,12 +46,74 @@ Further work might justify more stars.
47### Milestone 1 - Create client and send/recieve messages
47### Milestone 1 - Create client and send/recieve messages
49−Expected completion:
49+Expected completion: 4 - 5 weeks
51Payment: 1 star
51Payment: 1 star
54+ - Build a fully [specification](https://html.spec.whatwg.org/multipage/server-sent-events.html) compliant SSE client (10)
55+ - Have zero external dependencies besides Clojure and JVM
56+ - Expose low-level callback-based API
57+ - Distribute to Clojars
58+- Clojure Airlock API (35-40)
59+ - Study [Urbit's API](https://urbit.org/docs/arvo/eyre/external-api-ref) (2)
60+ - Setting up a connection
61+ - Creating subscriptions
62+ - Interacting with specific applications
63+ - Design an Airlock client (3) + review + fixes (?1)
65+ - Data driven API: send data, recieve data
66+ - Support concurrency
67+ - Build up abstractions
69+ - Interactivity and introspection are a must
70+ - Core implementation (10)
71+ - Handle primitives such as connections, acks and subscriptions
72+ - Application level implementation (20-25)
73+ - Chat (10-15) << Start here
76+ - Distribute to Clojars
53### Milestone 2 - Develop and deploy GUI
78### Milestone 2 - Develop and deploy GUI
55−Expected completion:
80+Expected completion: 5 - 6 weeks
57Payment: 2 stars
82Payment: 2 stars
84+- JVM Clojure GUI (25-30) initial phase, (20-30+) secondary phase, total (45-60)
85+ - Design and define a UI + review (3)
86+ - Prioritize programmatic abstraction and interaction. They can always enable user experience and features. e.i. correctness > features.
87+ - Prioritize usability over aesthetics: I am not a designer, but if I make something useful which works a designer can easily contribute to it.
88+ - Interactivity: UI is Clojure process, can be modified and interacted with programmatically, live.
90+ - Initial implementation should already be useful
91+ - Features and functionality (tagged by order)
93+ - Local and remote processes #B
94+ - Basic configuration #A
95+ - Full configuration #B
99+ - Group navigation #A
100+ - Background connections #B
103+ - Media embedding #A
104+ - Links embedding #B
105+ - Markdown rendering #C
106+ - GUI layout controls #C
108+ - REPL interaction #A
109+ - Keyboard and mouse navigation #B
110+ - Technology survey (2)
113+ - Membrane (backend agnostic, can target mobile in future!)
115+ - #A Initial implementation (15-20)
116+ - Distribution and packaging (5)
117+ - Support Windows, OSX, Linux
118+ - #B Intermediary implementation (20)
119+ - #C Bells & whistles (10+)