Fork me on GitHub
#fulcro
<
2019-11-26
>
lgessler01:11:14

hi, i'm a novice clojurian and i was wondering if anyone could help me understand how to compare fulcro with re-frame? on the face of it it appears that fulcro is broader in scope, handling a lot of stuff server-side, which is awesome, but i guess i'm wondering how they compare when it comes to developing a SPA. the SPA i want to write has heavily relational data, and on the face of it it looks like fulcro gives me a lot more help with that out of the box than re-frame does

currentoor01:11:02

@U49U72C4V i recently gave a talk about what makes fulcro different from libraries like re-frame from a conceptual point of view https://www.youtube.com/watch?v=PMbGhgVf9Do&amp;list=PLZdCLR02grLqSy15ALLAZDU6LGpAJDrAQ&amp;index=22

👍 4
4
currentoor01:11:06

re-frame has no opinion on backend (a less charitable way of saying this is it do anything for you there)

currentoor01:11:52

re-frame also does not have built in notion of data and relations (other than trees needed for render)

currentoor01:11:23

fulcro will be especially useful for heavily relational data since it gives you a normalized client side data store

lgessler02:11:32

wow, fulcro looks amazing, thanks for sending me that talk. yeah, I was mulling over how to tackle my project and it kept looking like I would need to implement a dinky, buggy relational database myself in the browser if I wanted my project to truly be a SPA

lgessler02:11:41

one of the big differences i'm seeing between fulcro and re-frame is that re-frame (as i understand) thinks it's important to slice state changes at the conceptual lines users care about, rather than directly in terms of state mutations, though i guess i'm wondering now why (if i'm right) re-frame culture prioritizes that way of chunking state change

lgessler02:11:40

have there been any major pain points in your time using fulcro? i'm wondering what the migration story looks like

souenzzo03:11:55

Re-frame will let you manage the app-state as you prefer Fulcro will manage the state for you in 90% of the cases and will let you do what you need when you really need to do something "custom" in the state.

👍 4
currentoor18:11:14

@U49U72C4V I haven’t had any major pains with fulcro, cljs language and tooling have given me grief stuff like compilation times and fspecs being stateful and unreliable with hot code reload

currentoor18:11:11

fulcro-guardrails alleviates most of the spec issues (by changing code not state) and I now use that all the time

currentoor18:11:37

Writing business logic in cljc means I can use fulcro-spec’s repl runner to test the code in a clojure repl in dev and let CI run the tests in a JS environment

currentoor18:11:03

Expound formats spec violations nicely

currentoor18:11:34

Shadow-cljs can be pretty fast if you keep individual files small

currentoor18:11:11

So most of the pain points are about the language and tooling not fulcro, and I have workarounds for them

currentoor18:11:19

I hope that all makes sense

currentoor18:11:08

Also re-frame and almost all other libraries store state denormalized and you the dev can store it normalized but then you’re not using the library the way it was designed (you have figure out how to denormalize the data yourself I.e. write a query engine and how to normalize)

currentoor18:11:38

And make it fast, if you want 60frames per second you need to do all that in 8 ms

currentoor18:11:39

Not impossible but certainly not trivial, a lot of man-hours went into make fulcro’s db fast enough to maintain 60fps

currentoor18:11:33

Doing something naive like I’ll just use datascript will only work for small demo datasets

lgessler17:11:30

@U09FEH8GN thanks so much for the helpful comments and the talk, i'm really hype about fulcro and can't wait to take a weekend to dive in 🙂

tbrooke01:11:54

Has anybody used Fulcro with Crux? Is there an example someplace?

Piotr Roterski10:11:32

FYI I’m trying to maintain this sticky post on /r/fulcro https://www.reddit.com/r/fulcro/comments/dtzhsm/fulcro_links_and_resources/ - you might find some examples there 🙂

tbrooke15:11:16

@adam622 my next question was whether or not crux makes pathom redundant - I haven’t studied either in detail but your repo answers that - I’ll give it a try

Ahmed Hassan22:11:33

@U054219BT no, you can run Crux behind Pathom resolvers.

Ahmed Hassan22:11:49

Pathom parses the queries/mutations and returns result attributes, so data (attributes) can be fetched from relational DB, REST API, GraphQL, or other Pathom resolvers.

macrobartfast06:11:01

so thrilled Fulcro is rolling right along! I was very excited way back when it first came out, and just watched the Conj talk online, and the RAD video, and I'm more stoked than ever.

👍 8
macrobartfast06:11:34

thank you so much for the work and perseverance!

macrobartfast07:11:34

and the insanely great documentation.

👍 12
tony.kay15:11:02

@yannvahalewyn @adam622 and anyone else interested in Fulcro dev…I don’t like it that we lose history here. Ideas on using something else for collaborative dev? Discord?

adamfeldman15:11:57

Clojurians Zulip?

tony.kay16:11:26

Well, I already have Discord, and zulip is paid only for infinite scroll-back…going with Discord

adamfeldman16:11:26

👍 the Clojurians Zulip I think is a paid-plan workspace, given out to open source projects

💯 4
tony.kay17:11:24

So, I’m going with Discord. Anyone interested in participating in Fulcro dev of any kind (e.g. the new RAD stuff), please feel free to join. Real full names only, please: https://discord.gg/yxwMzj

thosmos23:12:10

I just tried to join that Discord and got an expired invite error

thosmos23:12:48

I’ve been working on a RAD-like thing using a React-Admin frontend talking to a data-driven Lacinia Graphql backend, but I’d much rather be doing this in Fulcro-RAD. Now it’s just a matter of whether I can get something built in time for my milestone …

yannvahalewyn15:11:52

Fulcro dev channel?

john-shaffer18:11:19

I'm using the example setup from http://book.fulcrologic.com/fulcro3/ with npx shadow-cljs server , but I'm getting a 404 for main.js and it's not producing any js files. What am I missing? My deps.endn & shadow-cljs.edn are just the examples

thheller18:11:53

server just launches the server. you need do the other steps it mentions. opening the UI, running the build or run npx shadow-cljs watch app

john-shaffer18:11:21

Oh, I get it. Thanks.

roklenarcic20:11:56

I am glad Fulcro got a talk in Conj and got more exposure

roklenarcic20:11:36

I’ve been on this train for years, but I hope we finally gain critical mass momentum

currentoor20:11:17

yeah going to that conference was a big investment, took a bunch prep and time

currentoor20:11:21

but seems like it was worth it

💯 20
mattsfrey02:11:02

conj is awesome, I havent been since 2016 but would like to hit it next year