[{"data":1,"prerenderedAt":241},["ShallowReactive",2],{"project-17221221":3},{"id":4,"name":5,"line":5,"line_source":6,"title":7,"url":8,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":41,"post_text":43,"what":44,"said":71,"maker_in_thread":152,"shape":158,"grid":163,"attempts":200,"same_week":205,"maker_shows":38,"maker_hidden":234,"reader_version":235,"card":236},"17221221","Domain-tailored CRDTs for collaboration without server involvement","title","Show HN: Domain-tailored CRDTs for collaboration without server involvement","http:\u002F\u002Farchagon.net\u002Fblog\u002F2018\u002F03\u002F24\u002Fdata-laced-with-history\u002F","archagon.net","archagon",1528053717,2018,158,19,251,2155,12,"notable","languages","crdt data structures library","library",[23,24,25,26,27],"crdt","collaboration","data sync","offline first","conflict free replicated data types","curious",0.2,{"positive":31,"neutral":32,"mixed":33,"critical":34},5,8,0,2,15,{"idea":37,"performance":39,"docs":40},{"positive":38,"critical":34},3,{"positive":33,"critical":33},{"positive":34,"critical":33},[33,31,38,38,38,38,33,33,38,38,38,31,38,33,31,42,42,31,31],1,null,{"problem":45,"audience":43,"pricing":43,"motivation":52,"time_to_build":43,"stack":56,"openness":69,"stage":70,"team_size":69},{"value":46,"source":47,"evidence":48},"Enables document sync and collaboration built into the data itself, without server involvement","maker",[49],{"id":50,"by":10,"text":51},"17223026","Hi HN! I wanted to research more elegant ways to enable document sync and collaboration in my apps sometime last year, and ended up discovering a new class of data structure that…",{"value":53,"source":47,"evidence":54},"Wanted more elegant ways to enable document sync and collaboration in their apps",[55],{"id":50,"by":10,"text":51},[57,61,65],{"value":58,"source":47,"evidence":59},"Swift",[60],{"id":50,"by":10,"text":51},{"value":62,"source":47,"evidence":63},"iOS",[64],{"id":50,"by":10,"text":51},{"value":66,"source":47,"evidence":67},"macOS",[68],{"id":50,"by":10,"text":51},"unknown","prototype",{"praise":72,"objections":93,"requests":105,"questions":121,"alternatives":139},[73],{"value":74,"source":75,"evidence":76},"Clear, enjoyable walkthrough of the state of CRDTs","commenter",[77,81,85,89],{"id":78,"by":79,"text":80},"17322952","phyzome","Thank you for posting this -- it was a great walkthrough, and very clear. Cool stuff. :-)",{"id":82,"by":83,"text":84},"17226107","anilgulecha","> I admit that this revelation made some wily political thoughts cross my mind. Could this be the chance to finally break free from the shackles of cloud computing? It always…",{"id":86,"by":87,"text":88},"17222711","xenadu02","Nice overview of the state of the art on CDRTs. Like the op, I agreed that we are more likely than not to see large clarity brought to the field thanks to the latest compsci…",{"id":90,"by":91,"text":92},"17224639","hesdeadjim","Wonderful article, appreciate the detail. I've had great success in the past using event sourcing, so anything that is even remotely similar is always a fun read. Thanks!",[94],{"value":95,"source":75,"evidence":96},"Conflict resolution cannot be avoided when offline edits conflict; blind merging can silently produce wrong results",[97,101],{"id":98,"by":99,"text":100},"17227129","codetrotter","> Most obviously, users should be able to edit their documents immediately, without even touching the network [...] > The user should never be faced with a “pick the correct…",{"id":102,"by":103,"text":104},"17227624","repsilat","I think the author is ok with \"one of the edits wins,\" so long as all users agree on the one that will win (without communicating.) I'm still reading TFA, but this is probably…",[106],{"value":107,"source":75,"evidence":108},"Generalize the approach to source code revision control",[109,113,117],{"id":110,"by":111,"text":112},"17224073","urbit","Unfortunately I wouldn't expect a lot of substantive technical discussion for a post like this on HN -- this post will expire before anyone has time to read it properly and…",{"id":114,"by":115,"text":116},"17227824","kd5bjo","I've had some thoughts along the same lines, but haven't taken the opportunity to flesh them out nearly as far. A git repository is nearly a CRDT that represents a file system…",{"id":118,"by":119,"text":120},"17229957","blake8086","I suspect you could build such a thing if you could more rigidly define edit operations on source code files. The way we edit code now is roughly \"insert\u002Fedit\u002Fdelete string \u003Cx>…",[122,129],{"value":123,"source":75,"evidence":124},"How much metadata overhead do the CRDTs require compared to hash-based approaches",[125],{"id":126,"by":127,"text":128},"17225681","gritzko","1-3 is generally true for ORDTs (in archagon's terms). I wonder, how much metadata noms needs to achieve those features? CRDTs brute-force all those distributed\u002Fconcurrency…",{"value":130,"source":75,"evidence":131},"How does it compare to Noms and RON",[132,136],{"id":133,"by":134,"text":135},"17224829","aboodman","Hi archagon, Have you checked out Noms (https:\u002F\u002Fgithub.com\u002Fattic-labs\u002Fnoms)? > But studying Differential Sync further, I realized that a number of details made it a non-starter.…",{"id":137,"by":134,"text":138},"17229410","Hi gritzko! I hadn't seen RON It looks really interesting - I'll definitely take some time to play with it sometime soon. It's so great how much work is happening in this space…",[140,144,148],{"value":141,"source":75,"evidence":142},"Noms",[143],{"id":133,"by":134,"text":135},{"value":145,"source":75,"evidence":146},"RON",[147],{"id":126,"by":127,"text":128},{"value":149,"source":75,"evidence":150},"Git",[151],{"id":114,"by":115,"text":116},{"comments":34,"answered":33,"key":153},[154,155],{"id":50,"text":51},{"id":156,"text":157},"17222874","While true, I don't think this explains the disparity between regular CloudKit use and CloudKit Sharing use. For example, this snippet from Apple's CloudKit paper[1] particularly…",{"commenters":159,"max_depth":160,"maker_replies":34,"first_comment_mins":161,"lifespan_hours":162},14,6,49,288,[164,166,168,170,171,172,174,176,178,180,183,185,187,190,192,194,196,197,199],[50,33,33,165,10,42],"maker\u002Fneutral\u002Fidea",[110,33,31,167,111,33],"project\u002Fpositive\u002Fidea",[114,33,38,169,115,33],"project\u002Fneutral\u002Fidea",[118,33,38,169,119,33],[133,33,38,169,134,33],[126,33,38,173,127,33],"project\u002Fneutral\u002Fperformance",[137,33,33,175,134,33],"commenter\u002Fneutral\u002Fperformance",[177,33,33,175,127,33],"17229666",[179,33,38,173,134,33],"17229901",[181,33,38,173,182,33],"17229161","Jyaif",[184,33,38,173,134,33],"17229227",[78,33,31,186,79,33],"maker\u002Fpositive\u002Fdocs",[188,42,38,169,189,33],"17221515","saurik",[156,42,33,191,10,42],"commenter\u002Fneutral\u002Fnone",[82,34,31,193,83,33],"maker\u002Fpositive\u002Fidea",[98,38,42,195,99,33],"project\u002Fcritical\u002Fidea",[102,38,42,195,103,33],[86,198,31,193,87,33],4,[90,31,31,186,91,33],[201,204],{"id":202,"t":203,"points":42,"comments":33},"16871341",1524086728,{"id":4,"t":11,"points":13,"comments":14},[206,211,216,221,226,230],{"id":207,"name":208,"points":209,"category":210},"17226225","BitHubLab",318,"dev_tools",{"id":212,"name":213,"points":214,"category":215},"17242528","LogicEmu",210,"learning_science",{"id":217,"name":218,"points":219,"category":220},"17242136","Transity",190,"finance_crypto",{"id":222,"name":223,"points":224,"category":225},"17227564","Podscripter",153,"ai",{"id":227,"name":228,"points":229,"category":215},"17246136","CircuitVerse",145,{"id":231,"name":232,"points":233,"category":210},"17236967","blush",127,false,"v2",{"id":237,"name":5,"line":5,"ai":234,"cat":19,"year":12,"points":13,"comments":14,"rec":28,"s":29,"top":17,"kw":238,"maker":10,"domain":9,"tier":18,"attempts":34,"strip":239,"url":8,"mix":240,"praise":74,"objection":95,"sub":20},17221221,[23,24,25,26,27],"0533330033353051155",[31,32,33,34],1794036566594]