4 ms·
Show HN: Svix – Open-Source Webhooks Service Written in Rust
We are super excited to be open sourcing the Svix webhooks dispatcher!
Svix makes it easy to send webhooks. You send your payload to Svix, and Svix takes care of deliverability, retries, security, and more.
You can read more about why we built Svix in the original Show HN[0], though the gist is: our customers wanted webhooks to build integrations and workflows around our product, but we weren't willing to commit the engineering time, resources and ongoing maintenance required of a webhook delivery system.
Why open source?
On a personal level, I've been an open source maintainer and contributor for many years, and I care a lot about open source. So open-sourcing the Svix dispatcher was one of the first tickets I created on our issue tracker.
As for the company, webhooks are currently a mess, everyone does them differently, with differing levels of quality and features supported. This is something we really want to fix. The Svix service is already making a difference there (we're lucky enough to call some really cool companies our customers), and open-sourcing the dispatcher is the next logical step to increase our impact.
Why Rust?
It's really fast, it makes writing secure and correct code easier, it's easier to deploy and distribute (one static binary), and it's a lot more fun. :)
Webhooks are really cool, and I absolutely love what they enable. They make the web compose-able, interconnected, and enable people to automate a lot of their work! Our goal is to make them easy, reliable, and consistent, so that more services offer them and they are easier to consume.
I'd love to hear your feedback! We've incorporated most of the comments we got the last time[0] (thanks again everyone!), and we would love to know how we can improve the product further. Got any suggestions?
Homepage: https://www.svix.com https://www.svix.com
Repo: https://github.com/svix/svix-webhooks/ https://github.com/svix/svix-webhooks/
Docs: https://docs.svix.com/ https://docs.svix.com/
API reference: https://api.svix.com/ https://api.svix.com/
[0] https://news.ycombinator.com/item?id=26399672 https://news.ycombinator.com/item?id=26399672
- iRomain 5y agoThis looks great! Never thought of even searching for such a solution. Bookmarked!
- tasn 5y agoHaha, yeah. Before we created it (and looked around to see if anything existed) I wouldn't have thought of searching for something like this either! Edit: btw, it pains me that we don't, and we'll have one soon. :)
- kobyconrad 5y agoOhhh, congrats on going OSS! I've been watching you since I first saw your Show HN!
- tasn 5y agoThanks a lot! It's been a long time in the making!
- allisdust 5y agoOne common pattern I noticed among all rust projects is that they support a lot of languages by providing a native client except for rust. I always wonder why this is the case. Is it due to lack of demand for it or because anyway the code is in rust so it is expected to be used as is (sometimes not possible at all to directly use the code like the recent edgedb showhn - though they have a conditions apply rust client)
- tasn 5y agoIt's lack of demand. Unfortunately there aren't that many people building a backend in Rust (they should, it's great!), so building a Rust library is not a top priority unfortunately. :(
- allisdust 5y agoYa. I guess we need some more maturity in Rust web frameworks. Specifically something like RoR and with some corporate backing. Current solutions are okay but they don't inspire much confidence due to slow pace of development and gaps wrt to frameworks in other languages. I'm using warp currently and recently did a load test on my backend. Performance was stunning so its definitely worth it. But these gaps do decrease the overall dev velocity as we have to make custom solutions where there aren't any. For example, I had to write some custom code which auto generates all model classes from db schema including functions for lazy loading various properties on the classes and regular CRUD. Took me a solid couple of weeks which I could have spent else where if I was using Java with JPA or RoR. Same with another piece to generate a warp compatible routes file from annotations on functions (including generating the corresponding struct for gathering post bodies and calling the actual handler function with the struct members). Worth it? Definitely. Wish its already available as some framework? Definitely!
- tasn 5y agoWe (as you can see) use Axum. It's new but great. It reuses a lot of the Rust ecosystem (Tokio, Hyper, Tower, Serde, etc), so it keeps on improving even without them changing anything. It also relies on a very strong infrastructure.
- onassar 5y agoVery cool service. I built an experiment a few months back whereby I needed to trigger a webhook back to my server at a specific time in the future. Gonna share it here incase anyone else finds it useful: https://onassar.github.io/experiments/boomerang-webhooks https://onassar.github.io/experiments/boomerang-webhooks It uses AWS API Gateway, Lambda and S3 to allow you to register a URL to be triggered at some future date. Hope it's helpful!
- maith1 5y agoAh we've been happy user of Svix, this is super cool! Congrats on the OSS, this could be useful for us going forward!
- tasn 5y agoThanks a lot! Yeah, I think it's extremely useful for local development, and self-hosting when you don't need the extra Svix resilience.
- CyberShadow 5y agoWhat's with the "star and watch" animated GIF in the README? Should I start putting one in all my repositories? Should everyone be doing that as well?
- tasn 5y agoHaha, we actually took the idea from other projects. :P It helps people that don't know that you can watch to subscribe for updates.
- CyberShadow 5y agoMay I suggest placing it in a <details> tag. I'm finding it difficult to pay attention to anything on the page when there's a constantly blinking animation on it. > It helps people that don't know that you can watch to subscribe for updates. How would one fairly decide which project READMEs should have such an animation, and which shouldn't? It certainly calls a lot of attention to itself.
- tasn 5y agoNo idea to be honest, we just thought it was a cool idea. > May I suggest placing it in a <details> tag. I'm finding it difficult to pay attention to anything on the page when there's a constantly blinking animation on it. I tried, but it starts hidden by default, so misses the point.
- pxeger1 5y agoPlease don't turn GitHub into another YouTube - "don't forget to like and subscribe!!" :/
- fallat 5y agohttps://github.com/muennich/sxiv https://github.com/muennich/sxiv Well this is going to be confusing.
- tasn 5y agoNever heard of sxiv, but it is confusing, haha. I just typed "never heard of svix" when trying to type it. :P Anyhow, it's unavoidable, there is so much software around nowadays, similarities are bound to happen...
- techn00 5y agoAnother open source solution written in Go is https://getconvoy.io/ https://getconvoy.io/
- tasn 5y agoOne day I'll write a blog post about why we went with Rust rather than Go, but I'll resist the urge to hijack this thread for a Go rant. :P
- smashah 5y agoThanks for this OP. Looking forward to exploring how I can implement this in my own open-source project. Lots of users will find something like this useful.
- tasn 5y agoPing me at tom @ our domain (or see my profile), or come to our slack: https://www.svix.com/slack/ https://www.svix.com/slack/ We would be happy to help you set it up!