[HN Gopher] OCapN, Interoperable Capabilities over the Network ___________________________________________________________________ OCapN, Interoperable Capabilities over the Network Author : davexunit Score : 25 points Date : 2023-11-16 21:05 UTC (1 hours ago) (HTM) web link (spritely.institute) (TXT) w3m dump (spritely.institute) | jauntywundrkind wrote: | There's ucan too, which fills some similar-ish roles. It's | definitely not quite as comprehensive & featureful as ocapn, but | worth mentioning. https://ucan.xyz/ | dlahoda wrote: | comparison with capnproto? | couchand wrote: | That was my first question, too. From the fine article: | | > We've drawn from and built upon the contributions of many | others (the E programming language, Agoric, and Cap'n Proto to | name a few) and is actively being shaped by input from many | developers of those projects. | | The feature list includes distributed garbage collection, from | what I understand that's out of scope of capnproto rpc. | | Maybe Kenton is around and can add more details? | dlahoda wrote: | agoric is ibc. i know ibc app layer and partially core layer. | how at all, all things will work together. | | for example timeouts in ibc, client cannot timeout if server | is dead for example. ibc goes hand in hand with identity and | sagas. | kentonv wrote: | Ian "zenhack" Denhardt, a major Cap'n Proto contributor, was | working closely with the ocapn effort to try to ensure some | level of compatibility. Tragically, he passed away in July, | leaving that effort (and so much else) in limbo. | Unfortunately I have not had the bandwidth to keep up on | ocapn, so I can't really comment much myself. | | ------------ | | I'll say a bit about "distributed garbage collection". I'm | not caught up on what, exactly, the ocapn people mean here. E | always advertised support for "distributed _acyclic_ garbage | collection ", which in practice meant reference counting. | Cap'n Proto also implements reference counting in exactly the | same way. But I personally wouldn't call it "garbage | collection" if it can't collect cycles. Moreover, Cap'n Proto | applications commonly expect deterministic destruction when | references are dropped -- they wouldn't play well with GCs | that might arbitrarily delay collection. | | My personal take is that distributed GC is simply not | feasible. Garbage collection algorithms heavily lean on | heuristics and amortization to achieve any kind of | performance. In particular, most GCs will only actually | execute when they detect "memory pressure", i.e., that the | system is in need of freeing up some memory. If the system | doesn't need memory, why waste time finding some? However, in | a distributed system, it can easily be the case that the | _local_ system has plenty of memory, but is holding on to a | reference to a _remote_ object living on a system that _does_ | need memory. The reference may no longer be reachable. But, | the local GC isn 't going to run because it doesn't perceive | a need. Meanwhile, the remote system has no way to know that | the object it is hosting could be collected. | | To solve problems like this, you cannot just have each | machine running its own local GC, you must have a single | _distributed_ GC that can respond to memory pressure | _anywhere_ by triggering sweeps of the entire distributed | object graph. This seems extremely difficult to design, far | more so if the systems involved do not trust each other. | | Maybe it's possible, but certainly there's quite a lot of | research needed, and last I knew the ocapn people hadn't | actually demonstrated anything that works. But my personal | take is that GC in general is a terrible fit for systems | programming, because it is so bad at handling any kind of | external resource, which is what systems programming is all | about. Cap'n Proto is unlikely to support anything more than | reference counting. | BCM43 wrote: | I think Capt'n Proto is similar to CapTP, one of the three | draft specifications. There's talk of combining them and a | comparison here: | | https://github.com/Agoric/agoric-sdk/issues/1827#issuecommen... | ratmice wrote: | If you look at https://ocapn.org/ (linked within the original | submission, The group is comprised of: | | * Agoric | | * The Spritely Institute | | * Cap'n Proto | | * Many other independent experts and interested parties | | from Cap'n Proto I thought that zenhack was the primary | participant in ocapn, but see some other familiar names from | Cap'n Proto community. Essentially it's trying to create a | common protocol for these diverse implementations which all | have similarities because they happen to share a common | heritage. At least that is my understanding. | ocdtrekkie wrote: | The expectation I think that everyone is currently operating | under is that Spritely and Agoric will try to evolve into | pretty directly speaking OCapN, and Cap'n Proto will ideally | be able to communicate with OCapN via a bridge of some | flavor, as Cap'n Proto is too widely established to shift its | behavior much towards the direction Spritely and Agoric are | going. | | Unfortunately with Ian passing away, the Cap'n Proto side | isn't seeing a ton of attention, though several involved | parties are familiar with Cap'n Proto and reference it in | discussions with regards to maintaining similarities and | hopefully bridge-ability. ___________________________________________________________________ (page generated 2023-11-16 23:00 UTC)