@@ -0,0 +1,57 @@
2+title = "Clojure Urbit Client"
5+grant_type = ["Proposal"]
6+grant_category = ["App Dev - Other"]
9+description = "Urbit client baasd on the Clojure programming language"
17+## Clojure Urbit Client
19+Clojure is a functional dynamically typed lisp which runs on the JVM. It lends itself very well to designing correct, situated programs and can easily benefit from the JVM ecosystem. Being functional and immutable by default makes Clojure a good fit for building concurrent event driven systems.
23+With the end goal of an alternative, cross platform desktop client for Urbit, the steps are as follows:
25+- A SSE client in Clojure
26+- An Urbit client library built on top of the SSE client
27+ -- Should at least be able to programmatically communicate with chat app and query graph store
28+ -- The client should also be usable from Java
30+ -- Why run a browser at all? Urbit is all about APIs
31+ -- Will need to choose between JafaFX and SKIA
32+ _ JafaFX: mature, stable, has cljfx which provides an excellent model
33+ _ SKIA: up and coming framework, has native capabilities, less mature
34+ -- Will run on any platform which can run Java
35+ -- If one day Urbit is ported to Java, imagine the possibilities of running the GUI and server in the same process
37+Regarding the amount of stars below, I believe the first milestone is simple and does not merit a reward at all.
39+The second justifies a star when it allows one to send and receive chat messages
41+The last is a significant achievement (first non js graphical client?), which is worth at least 2 stars when chats work.
43+Further work might justify more stars.
47+### Milestone 1 - Create client and send/recieve messages
53+### Milestone 2 - Develop and deploy GUI