This project looks awesome, and something I've been waiting for for years.
Something I noticed was not touched on very heavily was the topic of where this fits in the "complexity hierarchy" of existing tools, and not really calling out complexity or minimal complexity as a goal/non-goal.
I imagine Caddy is a point of inspiration for the project to some degree, given the automatic tls provisioning - something else I think worth looking at Caddy for is the Caddyfile, and the way they approach layered complexity. Caddy does a really, really good job at making it dead simple to have an https proxy up and running with completely sane defaults. I'd hate to see River go down the route of nginx, haproxy or envoy requiring either extensive configuration (like nginx, envoy), or using very technical vocabulary and organizational concepts (like haproxy, envoy) to do the basics. On the other hand, in no way does a simple entrypoint for common usecases preclude the full complexity and scope of those other projects - it just needs to be "layered".
Power users and beginners who have never used a reverse proxy should be able to pick up River and do what they need to without significant unexpected behavior or poor defaults. This will end up with more work on the "thoughtful interfaces" side of building river, but I think the investment is worth it.
Anecdotally, I understand that Caddy lacks in the power, performance, and reliability that the other mentioned proxies have - but still I use it as my default to start because of how easy it is to configure, and the automatic tls. It would be amazing for River to still be able to fill that same role, because then it may be close to a real zero-compromises experience :)
This project looks awesome, and something I've been waiting for for years.
Something I noticed was not touched on very heavily was the topic of where this fits in the "complexity hierarchy" of existing tools, and not really calling out complexity or minimal complexity as a goal/non-goal.
I imagine Caddy is a point of inspiration for the project to some degree, given the automatic tls provisioning - something else I think worth looking at Caddy for is the Caddyfile, and the way they approach layered complexity. Caddy does a really, really good job at making it dead simple to have an https proxy up and running with completely sane defaults. I'd hate to see River go down the route of nginx, haproxy or envoy requiring either extensive configuration (like nginx, envoy), or using very technical vocabulary and organizational concepts (like haproxy, envoy) to do the basics. On the other hand, in no way does a simple entrypoint for common usecases preclude the full complexity and scope of those other projects - it just needs to be "layered".
Power users and beginners who have never used a reverse proxy should be able to pick up River and do what they need to without significant unexpected behavior or poor defaults. This will end up with more work on the "thoughtful interfaces" side of building river, but I think the investment is worth it.
Anecdotally, I understand that Caddy lacks in the power, performance, and reliability that the other mentioned proxies have - but still I use it as my default to start because of how easy it is to configure, and the automatic tls. It would be amazing for River to still be able to fill that same role, because then it may be close to a real zero-compromises experience :)