I've done a fair amount of work with core.async in gui libraries, and I
strongly recommend against it. Core.async by it's very nature consists of
performing IO operations on channels, this sort of thing shouldn't be done
inside a user interface. Your code will quickly become very complex with
dozens of channels crossing over each other and the state of your UI almost
never being completely clear.

The React pattern is much simpler, you have data, and a projection function
(component code), the data changes, and the UI is re-rendered to reflect
that. UI events become data that is passed to a common callback and handled
via a function that can mutate the data state. So it's a loop of data
state-> render code -> components -> events -> data state.

I agree with David's points at this part of his Om.Next talk:
https://youtu.be/MDZpSIngwm4?t=4m17s

Yes, fn-fx is not complete by any means, as I have time, I plan on working
more towards a Om.Next-esque model, but that will take some time.

Timothy

On Mon, Mar 21, 2016 at 8:15 AM, Jason Zwolak <jzwo...@gmail.com> wrote:

> I sat down to use fx-fn today and discovered another library fx-clj.
>
> fx-clj hasn't had any activity for over a year, but it does use
> core.async, which seems to be the right direction if you want clean UI
> code: http://www.infoq.com/presentations/core-async-clojure
>
> Any plans to incorporate core.async into fx-fn? fx-clj does seem to be
> more mature than fx-fn... and I'm not sure if the two projects need to be
> separate projects other than they started independently... I think the
> efforts may be best placed behind one project...
>
> I'm very interested in JavaFX on Clojure and have time to put behind a
> project that is using the best we know about GUI programming. At the moment
> that seems to be core.async and some kind of DOM that can be diffed.
>
> --
> Jason Zwolak
>
> On Fri, Mar 18, 2016 at 12:42 PM, Timothy Baldridge <tbaldri...@gmail.com>
> wrote:
>
>> I dusted off the fn-fx code today and fixed a bunch of bugs, and
>> implemented a few examples: https://github.com/halgari/fn-fx
>>
>> One of the most complex examples so far is here:
>> https://github.com/halgari/fn-fx/blob/master/examples/getting_started/02_form.clj
>>
>> As you can see the library is capable of some rather decent UIs (grid
>> panes, event handlers, etc). This is mostly because the JavaFX API is very
>> uniform and therefore easy to generate wrappers/converters using reflection
>> and meta-programming.
>>
>> I will probably continue working on this as time goes on, but to some
>> extent I need a good use case to drive development on fn(fx), so if anyone
>> has some OSS project or some swing app, they'd like to switch over to
>> fn(fx), drop me a line.
>>
>> Timothy
>>
>> On Fri, Mar 18, 2016 at 5:30 AM, Mathias De Wachter <
>> mathias.dewach...@gmail.com> wrote:
>>
>>> Hi Timothy,
>>> I'm really glad to see some new commits on fn(fx)! I don't know about
>>> others, but you'll definitely have at least one very enthusiastic user if I
>>> can get to a point where I can use it easily for simple things, and
>>> adapt/contribute for more complex things.
>>> Do you think the project is in that state already? (Haven't tried yet...)
>>> Thanks,
>>> Mathias
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> “One of the main causes of the fall of the Roman Empire was that–lacking
>> zero–they had no way to indicate successful termination of their C
>> programs.”
>> (Robert Firth)
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to a topic in the
>> Google Groups "Clojure" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/clojure/NkLXh8KYXqk/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to