cljzmq icon indicating copy to clipboard operation
cljzmq copied to clipboard

Use JeroMQ by default

Open trevorbernard opened this issue 11 years ago • 6 comments

trevorbernard avatar Dec 05 '13 16:12 trevorbernard

I vote that this waits until jeromq implements libcurve.

Using 0mq from clojure is painful right now. It should be, if only because plain-text transmissions should never be the default.

The alternative (hey, everybody else does it) is tempting, but it's also wrong. If I really want to transmit a plain-text message, that should be my choice...but it really should be more painful than sending it securely.

Let's get the native wrapper working securely. Then we can worry about getting security experts to worry about translating the details into java. Then this step makes sense.

That's my vote, anyway. FWIW.

jimrthy avatar Dec 22 '13 16:12 jimrthy

Doing a secure transmission will always require more work; you have to prepare long term keys at either side, configure the 0MQ sockets to use them, and handle authentication requests at the server.

There's no sense in asking that plain text communications be more difficult than this. No-one would use such software.

-Pieter

On Sun, Dec 22, 2013 at 5:41 PM, jimrthy [email protected] wrote:

I vote that this waits until jeromq implements libcurve.

Using 0mq from clojure is painful right now. It should be, if only because plain-text transmissions should never be the default.

The alternative (hey, everybody else does it) is tempting, but it's also wrong. If I really want to transmit a plain-text message, that should be my choice...but it really should be more painful than sending it securely.

Let's get the native wrapper working securely. Then we can worry about getting security experts to worry about translating the details into java. Then this step makes sense.

That's my vote, anyway. FWIW.

— Reply to this email directly or view it on GitHubhttps://github.com/zeromq/cljzmq/issues/31#issuecomment-31090704 .

hintjens avatar Dec 22 '13 18:12 hintjens

Yes, you're absolutely correct. I went way too far and missed overstepped the basic point.

That doesn't change my vote (FWIW): I think it's a mistake to switch to jeromq as a default until it implements curve.

jimrthy avatar Jan 02 '14 05:01 jimrthy

Hello, Is there a way to force cljzmq to use jeromq if both jzmq and jeromq are in classpath?

Thanks

kul avatar Feb 07 '14 11:02 kul

@kul I would try loading one earlier in the classpath and see what happens but you really shouldn't be loading both in the same classpath since you can get non-deterministic behaviour.

trevorbernard avatar Feb 09 '14 23:02 trevorbernard

I think using jzmq / native bindings is a more sensible default. It seems like libzmq is basically the "core product" of ZeroMQ, so the most straightforward way to provide ZeroMQ to Java developers is to allow them to use libzmq via native bindings.

That said, I prefer JeroMQ personally, as native dependencies in Java are a bit of a nightmare, and it's nice not to have to require end-users to install them.

It seems like it will take some time for JeroMQ to catch up to the state of the art in libzmq, but I think that even when that happens, using libzmq via native bindings is still probably a better default.

Also, FWIW, I don't find it too cumbersome to exclude jzmq from the dependencies and use JeroMQ when using cljzmq. Maybe instead of making JeroMQ the default, we could add a more obvious note about excluding jzmq to use JeroMQ in the README, instead of tucked away in the FAQ in the wiki.

daveyarwood avatar Oct 09 '16 03:10 daveyarwood