-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optional dependencies concidered harmful #420
Comments
Before we consider solutions, what's actually gone wrong for our users after #419? Is it that they now need to do The original historical reason for supporting both OpenSSL and OCaml TLS in conduit is that the latter wasn't mature enough. But now, the reverse is true: the ssl bindings seem to be less well maintained than OCaml TLS. I'm tempted to suggest dropping support for the OpenSSL in Conduit -- perhaps we should canvas opinions on this from discuss.ocaml.org. |
yes, or more usually this is already in the chain of dependencies so people don't have to think about it. Similarly This is just some examples among many other simply showing how things like |
One quick way to fix this with minimum risk to our users would be to simply make |
Required for cohttp (via conduit): mirage/ocaml-conduit#420
Required for cohttp (via conduit): mirage/ocaml-conduit#420
The change in #419 is causing nasty problems at runtime everywhere (users upgrading to tls >= 0.16.0 and trying to run software that previously expected a dependency toward
tls
to be enough for conduit to use/enable tls at all)In my opinon, implicit/optional dependencies are harmful to any ecosystem all users and should only be used when strictly necessary, as a last resort. In the case of Conduit, I'm not versed in how it is designed but it feels like the following can be done:
conduit-lwt-unix
's optional dependencies into 3 new sub-packages (conduit-lwt-unix-tls
,conduit-lwt-unix-ssl
,conduit-lwt-unix-launchd
)Conduit_lwt_unix
so this module knows how deal with the TLS/SSL backend chosenConduit_lwt_unix
module requires.The text was updated successfully, but these errors were encountered: