untangled

NEW CHANNEL: #fulcro
tony.kay 2017-03-07T00:04:32.005517Z

@tobias Try 0.8.1-SNAPSHOT

tony.kay 2017-03-07T00:04:36.005518Z

on clojars

2017-03-07T00:23:11.005519Z

It's still 'broken' with 0.8.1-20170307.000421

tony.kay 2017-03-07T00:23:33.005520Z

hm. strange. I thought that would be it for sure

tony.kay 2017-03-07T00:24:27.005521Z

feel free to look around. I'm done for the day. brain dead

2017-03-07T00:26:58.005522Z

Same here 🙂 Many thanks, I'll have a look tomorrow, I've put a simple test case here - https://github.com/tobiasquinn/untangled-template/tree/issue-67-test-case

tony.kay 2017-03-07T00:27:14.005523Z

thanks, that will probably help

urbank 2017-03-07T12:47:19.005526Z

I'm getting this error after bumping untangled client version to 0.8.0

urbank 2017-03-07T12:48:43.005527Z

could someone paste a :dependencies section of project.clj that's working with 0.8.0?

urbank 2017-03-07T12:51:31.005528Z

Never mind, I copied it from https://github.com/untangled-web/untangled-client/blob/develop/project.clj

tony.kay 2017-03-07T16:09:22.005529Z

@urbank what version of clojure are you using?

tony.kay 2017-03-07T16:09:56.005530Z

look at the deps in untangled-ui

urbank 2017-03-07T16:11:47.005531Z

@tony.kay I copied the ones from untangled client, they seem to be the same as the ones on untangled-ui. It works now. Before I had clojure 1.8 so that was probably the issue

tony.kay 2017-03-07T16:12:02.005532Z

yeah, spec is a 1.9 thing

tony.kay 2017-03-07T16:28:53.005533Z

@gardnervickers Is #66 fixed (data-path)?

gardnervickers 2017-03-07T16:30:22.005534Z

Yup! Thanks

tony.kay 2017-03-07T16:43:06.005535Z

@wilkerlucio Running through PRs. Can discuss yours in a bit if you'd like.

wilkerlucio 2017-03-07T16:45:44.005536Z

@tony.kay would love to, but I'm at work now, can you do in like 6 hours?

wilkerlucio 2017-03-07T16:49:44.005537Z

or we can do now, but I might get some delayed responses, hehe

wilkerlucio 2017-03-07T16:50:16.005538Z

I think the major point to discuss is about opening or not the option for the user to override Untangled reconciler definitions

wilkerlucio 2017-03-07T16:50:31.005539Z

why you think it's a bad idea?

tony.kay 2017-03-07T17:00:19.005541Z

Well, start with my comment I left on github. You can comment there or here. I'll have similar delays, so we can just do it in spurts 🙂

urbank 2017-03-07T17:17:26.005542Z

Does anyone know of any application examples on github using untangled? I'd like to read some source code to get some ideas and intuition about usage

tony.kay 2017-03-07T17:30:48.005543Z

@urbank You've found the cookbook?

tony.kay 2017-03-07T17:31:06.005544Z

the template?

tony.kay 2017-03-07T17:31:26.005545Z

or you're looking for something larger. I think the todoMVC is the biggest thing we've published, and it is full-stack

tony.kay 2017-03-07T17:31:36.005546Z

at least in the OSS space

urbank 2017-03-07T17:36:58.005547Z

@tony.kay Yeah, I think the cookbook has very specific projects showcasing specific solutions. I'll probably get something out of it, if I check it out again though. The todoMVC is great for a generic view, but it only has tow component types (aside from Root) where their relationship is parent child.

urbank 2017-03-07T17:37:13.005548Z

brb

tony.kay 2017-03-07T17:37:58.005549Z

I agree with you that part of what the community in general is missing is a larger "patterns library"

wilkerlucio 2017-03-07T17:38:06.005550Z

@urbank this is an open-source project I'm working on, you can check it for some reference: https://github.com/daveconservatoire/dcex-cljs

tony.kay 2017-03-07T17:38:11.005551Z

Om Next/Untangled both suffer from this

wilkerlucio 2017-03-07T17:40:21.005552Z

@tony.kay My worry is about get limited/stuck by the library, since this happened before and might happen again (like shared case, now this, and I'm afraid at some point someone might want to extend it). I don't think we need to document how to extend each option, a simple "WARNING: overriding reconciler keys can break how Untangled works, only override if you know what you are doing.". The way I see, Untangled should make easy to do the right thing, but without getting on the way when someone wants to change some behavior.

tony.kay 2017-03-07T17:42:46.005553Z

I'm with you, as I said in the comment. But from a practical perspective we do want to limit things. Should they be able to supply a parser? If they do, how do they compose in the correct data fetch story?

tony.kay 2017-03-07T17:44:01.005554Z

If they are supplying a parser, shouldn't they just use Om Next? A lot of what Untangled supplies might be better as plug-ins for Om Next, but that then makes the "reusable library of components" harder, because you need some of the decisions we've made to be in place to have a stable foundation for such libraries.

tony.kay 2017-03-07T17:44:24.005555Z

Go off and choose DataScript, and you've lost many of the benefits

tony.kay 2017-03-07T17:45:02.005556Z

The File Upload is a great example of both your point and mine. I had to expand the internals to accomodate what I wanted

tony.kay 2017-03-07T17:45:27.005557Z

but that needed to be done as an expansion of the Untangled system, not an ad-hoc add-on

tony.kay 2017-03-07T17:45:57.005558Z

willy-nilly overrides on the reconciler worry me

tony.kay 2017-03-07T17:46:18.005559Z

I'd rather address them one-at-a-time as we find compelling reasons to open them up

tony.kay 2017-03-07T17:46:35.005560Z

or open up all of the ones we don't care about

tony.kay 2017-03-07T17:46:57.005561Z

and treat the ones we manage as ones to be discussed as the community finds a need to mess with them

tony.kay 2017-03-07T17:47:29.005562Z

in particular the networking, remotes, and merge behaviors should not be generally open at this time IMO

tony.kay 2017-03-07T17:47:57.005563Z

(any more open than they are in 0.8, that is)

tony.kay 2017-03-07T17:48:36.005564Z

multiple remote + custom networking is already available, and we've got a standard database format with merge behavior that is somewhat advanced and nuanced.

wilkerlucio 2017-03-07T17:52:22.005565Z

one example I can think of changing the parser is to still be able to use explicit remote calls on the way Untangled does (which I would choose every time over how base Om.next does), and do a custom parsing (maybe Datascript?), I agree with you that this should not happen most of the times, I'm seeing this as a last resource, something that can be sold as "Untangled does all this management for you, but you can always override things if you are in a very edgy case"

tony.kay 2017-03-07T17:53:08.005566Z

I'd rather cover that case with a reader plugin

tony.kay 2017-03-07T17:53:28.005567Z

don't break mutation...it is a critical part of reusable components

tony.kay 2017-03-07T17:53:42.005568Z

but yes, having read parsing be hackable would be possibly useful

urbank 2017-03-07T17:54:04.005569Z

@wilkerlucio Thanks for the link, quite a lot of code, looking forward to studying it!

tony.kay 2017-03-07T17:54:32.005570Z

I'd rather see that as a pluggable chain, with db->tree at the end. You compose in ala Ring

tony.kay 2017-03-07T17:54:40.005571Z

something like that

tony.kay 2017-03-07T17:54:45.005572Z

again, not the raw reconciler option

tony.kay 2017-03-07T17:55:15.005573Z

more like what we do with the new server modules support

tony.kay 2017-03-07T17:55:26.005574Z

if one parser doesn't handle it, then the next in the chain does

wilkerlucio 2017-03-07T17:55:34.005575Z

@urbank have fun, if you don't understand something feel free to ping me, I'll be happy to try on clarifying 😉

tony.kay 2017-03-07T17:55:34.005576Z

actually, that is exactly how I'd do it

tony.kay 2017-03-07T17:56:01.005577Z

you can compose in a custom parser in front of Untangled's. If it returns nil on a request, we run ours

wilkerlucio 2017-03-07T17:56:10.005578Z

@tony.kay ok, so, which keys you think need to be locked?

tony.kay 2017-03-07T17:56:12.005579Z

that would let you plug into the read and write side

wilkerlucio 2017-03-07T17:56:50.005580Z

I like the chained parser idea, agreed that can work for parser overriding

tony.kay 2017-03-07T17:58:32.005582Z

locked ones:

:merge-ident
:merge-tree
:remotes
:send 
:state
:parser
:normalize
We already allow customization of a few (e.g. :state isn't really locked, but it has logic in front of it). :migrate, :shared, and :pathopt already allow overrides (be careful around :migrate...`tempid-migrate` has to be the default).

tony.kay 2017-03-07T18:00:59.005586Z

and send really isn't networking, it is the pipeline story that eventually connects to networking

tony.kay 2017-03-07T18:01:16.005587Z

so networking is already fully pluggable

tony.kay 2017-03-07T18:01:59.005588Z

We could open a separate issue for parser chaining. I don't need it, but possibly someone will contribute it

tony.kay 2017-03-07T18:11:38.005589Z

or you can do it while you're there 😉

wilkerlucio 2017-03-07T18:16:36.005590Z

hehe, maybe another time, but later today I can change the merge order, so Untangled keys don't get overwritten 😉

wilkerlucio 2017-03-07T18:53:45.005591Z

@tony.kay in the meantime I think we should create an issue for the chained parsers, so if other people have interest they can discuss about it on the issue

tony.kay 2017-03-07T20:00:53.005592Z

k, thanks

2017-03-07T20:04:51.005593Z

re: om-css in cljc: I have something, just want to play with it a bit until I am confident it works well and I'll raise a PR then.

✅ 1