Hacker News new | past | comments | ask | show | jobs | submit login

Congrats on the release! It must be very exciting after 10 years :)

If you don't mind the question: will there be more work on implementations for other languages in the future? I really like the idea of the format, but the main languages in our stack aren't supported in a way I'd use in a product.




This is indeed the main weakness of Cap'n Proto. I only really maintain the C++ implementation. Other implementations come from various contributors which can lead to varying levels of completeness and quality.

Unfortunately I can't really promise anything new here. My work on Cap'n Proto is driven by the needs of my main project, the Cloudflare Workers runtime, which is primarily C++. We do interact with Go and Rust services, and the respective implementations seem to get the job done there.

Put another way, Cap'n Proto is an open source project, and I hope it is useful to people, but it is not a product I'm trying to sell, so I am not particularly focused on trying to get everyone to adopt it. As always, contributions are welcome.

The one case where I might foresee a big change is if we (Cloudflare) decided to make Cap'n Proto be a public-facing feature of the Workers platform. Then we'd have a direct need to really polish it in many languages. That is certainly something we discuss from time to time but there are no plans at present.


Hmm, the main weakness of Cap'n Proto is that you have to already know so much stuff in order to understand why it makes all the great decisions it does. The weakness you're talking about matters to me, sure, I don't use Cap'n'Proto because it lacks the same tooling as gRPC, but it is better than gRPC from an ideas point of view.

I am not going to write those language implementations, I have other stuff I need to do, and gRPC is good enough. But the people who love writing language implementations might not understand why Cap'n Proto is great, or at least not understand as well as they understand Golang and Rust, so they will rewrite X in Golang and Rust instead.

Anyway, the great ideas haven't changed in whatever it is, almost 10-15 years you've been working on this, they've been right all along. So it is really about communication.

A comment on HN that really stuck with me was like: "Man dude, this is great, but try to explain to my team that it's Not React. They won't care."

I'm just a guy, I don't know how to distill how good Cap'n Proto is. But "The Unreasonable Effectiveness of Recurrent Neural Networks" is the prototype. What is the unreasonable effectiveness of Cap'n Proto? In games, which I'm familiar with, entity component systems, user generated content and their tooling have a lot in common with Cap'n Proto. "The Unreasonable Effectiveness of ECS" is deterministic multiplayer, but that is also really poorly communicated, and thus limits adoption. Maybe you are already facing the same obstacles with Cloudflare Workers. It's all very communications related and I hope you get more adoption.


Yeah, this has been the struggle with Sandstorm and self-hosting too. Ten years on, I'm still confident it's the best way to self-host, but to convince someone of that I have to sit them down and figure out how to get them to understand capability-based security, and most people lose interest about... immediately. :P

I suspect a lot of things will eventually look more like Cap'n Proto and Sandstorm, but it will take a lot of time for everyone else to get there.


I’m sold on Sandstorm, but the company folded before I could do anything with it. If someone makes another push at it, I have a lot of security-focused enterprise folks who want more robust & streamlined ways to self host stuff.


I have been pretty invested into Sandstorm for like ten years now, so I am very interested in getting that new push moving. If you know people interested in contributing to the project in any way, we are definitely interested in looking at ways to make it happen.

We will probably put out a blog post sometime soon with an update.


That's completely understandable, thank you for the answer! I'd love to try and help with at least one implementation for those languages, but there's a good chance that it would end up like the existing implementations due to lack of time.

Anyway, thank you for making it open source and for working on it all this time!


> if we (Cloudflare) decided to make Cap'n Proto be a public-facing feature of the Workers platform.

How likely is this? What would be the benefits and use-cases of doing this? Would it be a standardized JS offering, or something specific to Workers that is deserialized before it hits the runtime?


This really hasn't been fleshed out at all, it's more like: "Well, we're built on Cap'n Proto, it'd be really easy to expose it for applications to use. But is it useful?"

Arguably Cap'n Proto RPC might be an interesting way for a Worker running on Cloudflare to talk to a back-end service, or to a service running in a container (if/when we support containers). Today you mostly have to use HTTP for this (which has its drawbacks) or raw TCP (which requires bringing your own protocol parser to run in "userspace").

That said there's obviously a much stronger case to make for supporting gRPC or other protocols that are more widely used.


There are people who have tried to write the RPC layer without it simply being a wrapper around the C++ implementation, but it's a LOT of code to rewrite for not a lot of direct benefit.

Feel free to take a crack at it. People would likely be rather cooperative about it. However, know that it's just simply a lot of work.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: