Skip to content

Layered Complexity in Configuration #1

Description

@johnpyp

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 :)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    F-ConfigurationFunctionality relating to configuration

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions