Hi all! Catching up on v3 after a long time (~1y?) away from electric. Initial feedback/thought process in thread for the curious
thanks for the feedback
there are several slack threads discussing v2 -> v3 migration, the changes are substantial enough that every LOC needs to be checked, strong recommendation to reproduce all the v3 examples relevant to your app before you start
1. http://1.it took me quite a while to find the gdoc tutorial that talks about tables/`e/amb` whereas https://electric.hyperfiddle.net uses e/diff-by but never talks about it. From there I looked at the source which mentions "tables" but doesn't define or talk about them
2. initial reaction to tables and auto-mapping: • two paragraphs in: oh no, auto-lifting. asymmetric structure smell, how will this work out? • four paragraphs in, "Tables are not a data type, they are built into the language itself as part of it's evaluation model." → okay, I'm seeing the point... 🤔 • "Then why is e/for needed at all, given the language's auto-mapping semantics?" → ok, now we're cooking
3. "Auto-mapping is really about cartesian products:" → checks out visually but not enough to grok at 7pm after workday
4. changelog.md last entry is v2-alpha-540 (v of my wip project), new gdoc changelog lists essentially no breaking changes. Not sure what migration to v3 will entail? v3 major change: e/for-by becomes e/for + e/diff-by, what else?
My 2 cents off the top of my head (I am not affiliated with the electric team)
• e/fn calling convention (new Foo) -> (Foo) or (e/call Foo)
• Semantics on what forces network transfers changed to effects vs siting (I am not being specific here as I don't know what I am talking about :P). I can't remember anymore but I think mixing client/server in v2 caused network transfers even if you didnt use the value, but that doesn't happen in v3 iiuc
• I think v3 is more concurrent and I had more places where I had to "wait" for something to happen because parallel expressions were racing dom3/Await-element was useful here for integrating with third party libraries that required html structure to render before calling javascript
• No try/catch yet in v3 as might not be the correct abstraction
• Forms libs changing and undocumented atm but can get pretty far stumbling around with them or using lower level utilities
• License terms