Hey! Author of the post responding here :) Unfortunately max/min-length is a global invariant and not one that can be reinforced by CRDTs without coordination
bloom-lang.net is a really cool project working on trying to figure out what types of program state actually require coordination at compile time
Right - I think what Sam is wondering about is if there’s a better way to maintain some of those invariants when decoding the CRDT data or at least preserve user intent with more fidelity by taking the invariants into account. For example, if a ProseMirror schema says “figure can have one caption child”, then a CRDT library can assist by making Child a LWW register instead of an array; or picking the last item in the array instead of the first when limiting length.
To me it seems mostly a composition problem; we need a better way of expressing these kinds of application constraints in a formal schema so we can encode/decode application data structures to CRDTs without requiring invasive intermixing of the two concerns in a way that explodes complexity of both the app and the CRDT details.
I would argue that the internet nowadays feels very one-directional. You intake information but individuals rarely have influence over the future direction of that information. It's more of a lecture than a dialogue. Of corse, many internet forums like HN or Twitter serve as counter examples but the vast majority of content like blogs are like that.
I think the main value I see in grad school is the community of learners rather than the actual knowledge imparted itself.