As someone else who's making the switch from om to reagent, I have to agree with what folks are saying. It's cleaner and easier to wrap your head around reagent than om. After having read the om tutorial many times, I found a single walkthru of http://holmsand.github.io/reagent/ and I was off to the races.
M On Saturday, September 13, 2014 10:26:12 AM UTC-7, Dmitri Sotnikov wrote: > At the end of the day, anything you can do with one you can also do with the > other. I think the appeal of Reagent, as others have pointed out, is that it > leads to much shorter and cleaner code by providing a simpler and more > focused API. > > > > On Saturday, September 13, 2014 1:22:31 PM UTC-4, Daniel Kersten wrote: > > > It sounds like Reafent naturally encourages this model while with Om > > there's a tendency to put everything into one atom - until you learn > > through experience at least! > > > > > > On 13 Sep 2014 15:32, "Dmitri Sotnikov" wrote: > > > That sounds very similar to the Reagent model then. I found that it was the > > natural approach there, since creating local component states is straight > > forward and it makes them readily reusable. This simply wasn't clear to me > > when I tried using Om and I found that the additional complexity that Om > > introduced was completely incidental to the applications I was writing. > > > > > > > > > > > > On Saturday, September 13, 2014 6:32:58 AM UTC-4, Daniel Kersten wrote: > > > > > > > Dmitri, I would say that all of the donain data - that is, data that you > > > might persist in a database - should be stored in the app state atom, but > > > all temporary data about how to display the domain data (what page are > > > you on, what tab is visible, is the button pressed, how much of a list is > > > being shown, etc etc) should be in component local state. > > > > > > > > > > > > > > From what I've read, this is also how Facebook do things with their flux > > > architecture. > > > > > > > > > > > > > > I started writing Om by storing everything in the one atom (I think the > > > natural tendency is to do that) but I think you quickly realise that it's > > > unwieldy (as you and others have asserted). Because it is! Then you > > > transition to a model where the data you are operating on is separated > > > from the incidental data and everything becomes much nicer and easier. > > > > > > > > > > > > > > On 12 Sep 2014 21:02, "Dmitri Sotnikov" <[email protected]> wrote: > > > > > > > This might simply be my own lack of familiarity with the Om workflow. The > > > impression I got was that most state should live in a global atom that > > > you create cursors into and communication between components should > > > happen using core.async channels. > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Friday, September 12, 2014 12:11:09 PM UTC-4, Jamie Orchard-Hays wrote: > > > > > > > > > > > > > > > I'm pondering the implications of your comments, Dmitri. In Om, I have > > > > a single atom for my application data, but I have another atom that > > > > holds static data I pull from the server, for example lists for > > > > drop-down select lists. WRT local state, each Om component can have its > > > > own local state completely separate from the app data. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Sep 11, 2014, at 4:31 PM, Dmitri Sotnikov wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > So, good news is that Sean just submitted a patch for Reagent cursors > > > > > a few days ago. Hopefully, that will make it into the next release. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > In terms of performance I would actually expect Reagent to behave > > > > > better than Om since it doesn't force everything into a single state > > > > > atom. Reagent allows easily creating local states and that makes it > > > > > much easier to control what nodes need to be recalculated. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If I understand it correctly, the worst case for Reagent where you > > > > > use a single state atom for everything is the normal case for Om. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thursday, September 11, 2014 2:34:25 PM UTC-4, Sean Grove wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> Bit of a sidenote, but now that the libraries are getting more > > > > >> mature, It'd be great to see some complex-ish apps (say, > > > > >> Omchaya-size or larger, but maybe even CircleCI's frontend > > > > >> https://github.com/circleci/frontend) for a side-by-side comparison > > > > >> + speed benchmarks, to get a sense of the tradeoffs as apps scale > > > > >> out. I'm personally curious about whether Reagent's ease of use > > > > >> comes with a cost at some point. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> On Thu, Sep 11, 2014 at 8:01 AM, Jamie Orchard-Hays > > > > >> <[email protected]> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> On my project, I was using data in the form of a recursive tree--an > > > > >> editable one. I got stuck somewhere WRT to this in Reagent. (I wrote > > > > >> a question to the original developer, but he never replied.) For my > > > > >> purposes, Om's cursors made handling data updates trivial, so it was > > > > >> a big win. However, I'm sure I've put a lot more man hours in the UI > > > > >> development with Om than I would have with Reagent. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> So in the end, the fact that I had a recursive tree of data to work > > > > >> with gave Om the edge, otherwise I would have used Reagent. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> I also had a look at Quiescent, but it was too thin a layer over > > > > >> React for what I'm doing. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> Ideally, we'd have Reagent's UI simplicity combined with Om's > > > > >> wonderful app data handling. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> Jamie > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> On Sep 10, 2014, at 10:11 PM, Dmitri Sotnikov <[email protected]> > > > > >> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> I actually found Reagent's data handling to be very flexible. It' > > > > >>> makes it easy to create local states for components as well as > > > > >>> managing the global state using a global state atom. I'd be curious > > > > >>> to hear what limitations others have run into and how they could be > > > > >>> addressed. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> On Wednesday, September 10, 2014 11:40:13 AM UTC-4, Jamie > > > > >>> Orchard-Hays wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> I'm curious as well. I started with Reagent, but switched to > > > > >>>> Om/Sablono after finding Reagent's app data handling too limited > > > > >>>> for what I needed. The trade-off is much more to think about > > > > >>>> (complexity) when writing Om components. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> Jamie > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> On Sep 9, 2014, at 3:51 AM, Daniel Kersten <[email protected]> > > > > >>>> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> My apologies for an off topic post in this thread - we can take it > > > > >>>> off list or to a separate thread if it needs more than a simple > > > > >>>> reply - especially since the library looks really good! > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> Sean could you write a little about why you switched away from Om? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> I'm just trying to get a better understanding of what pros and > > > > >>>> cons Om and Reagent have and why Reagent is a better fit for your > > > > >>>> specific use case. I've seen a few people switching lately so I'm > > > > >>>> interested in hearing people's thoughts. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> On 9 Sep 2014 01:01, "Sean Corfield" <[email protected]> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> That looks great Dmitri! We've just made the switch from > > > > >>>> Om/Sablono to Reagent so this will be very handy for us I expect. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> Sean > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> On Sep 8, 2014, at 3:05 PM, Dmitri Sotnikov <[email protected]> > > > > >>>> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>>> The goal of the library is to automate the process of binding > > > > >>>>> form elements to a document represented by a map in a Reagent > > > > >>>>> atom. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>>> https://github.com/yogthos/reagent-forms > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>>> Feedback and contributions are welcome. :) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> -- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> Note that posts from new members are moderated - please be patient > > > > >>>> with your first post. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> --- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> You received this message because you are subscribed to the Google > > > > >>>> Groups "ClojureScript" group. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> To unsubscribe from this group and stop receiving emails from it, > > > > >>>> send an email to [email protected]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> To post to this group, send email to [email protected]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>>> Visit this group at http://groups.google.com/group/clojurescript. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> -- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> Note that posts from new members are moderated - please be patient > > > > >>> with your first post. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> --- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> You received this message because you are subscribed to the Google > > > > >>> Groups "ClojureScript" group. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> To unsubscribe from this group and stop receiving emails from it, > > > > >>> send an email to [email protected]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> To post to this group, send email to [email protected]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >>> Visit this group at http://groups.google.com/group/clojurescript. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> -- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> Note that posts from new members are moderated - please be patient > > > > >> with your first post. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> --- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> You received this message because you are subscribed to the Google > > > > >> Groups "ClojureScript" group. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> To unsubscribe from this group and stop receiving emails from it, > > > > >> send an email to [email protected]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> To post to this group, send email to [email protected]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> Visit this group at http://groups.google.com/group/clojurescript. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Note that posts from new members are moderated - please be patient > > > > > with your first post. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > You received this message because you are subscribed to the Google > > > > > Groups "ClojureScript" group. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > To unsubscribe from this group and stop receiving emails from it, > > > > > send an email to [email protected]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > To post to this group, send email to [email protected]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Visit this group at http://groups.google.com/group/clojurescript. > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > Note that posts from new members are moderated - please be patient with > > > your first post. > > > > > > > > > > > > > > --- > > > > > > > > > > > > > > You received this message because you are subscribed to the Google Groups > > > "ClojureScript" group. > > > > > > > > > > > > > > To unsubscribe from this group and stop receiving emails from it, send an > > > email to [email protected]. > > > > > > > > > > > > > > To post to this group, send email to [email protected]. > > > > > > > > > > > > > > Visit this group at http://groups.google.com/group/clojurescript. > > > > > > > > > > > > -- > > > > > > Note that posts from new members are moderated - please be patient with > > your first post. > > > > > > --- > > > > > > You received this message because you are subscribed to the Google Groups > > "ClojureScript" group. > > > > > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > > > > > To post to this group, send email to [email protected]. > > > > > > Visit this group at http://groups.google.com/group/clojurescript. -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
