Skip to content
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

Remove dependency on ZeroMQ? #3

Open
ntoll opened this issue Apr 8, 2016 · 2 comments
Open

Remove dependency on ZeroMQ? #3

ntoll opened this issue Apr 8, 2016 · 2 comments
Labels

Comments

@ntoll
Copy link

ntoll commented Apr 8, 2016

This is a straw man! Please feel free to kick it.

Currently NetworkZero relies upon ZeroMQ. This is not part of the standard Python library (and isn't likely to be). In an educational situation, the more dependencies associated with a package, module, library, application the less likely it is to get past the network administrator in a school.

Also, when pip install-ing the project you have to compile ZeroMQ. While it's fine for someone technical to do, for a teacher this is quite intimidating and therefore a barrier to entry and turn off.

Finally, from an educational perspective I would expect an ideal user journey to be (very roughly):

  • I know nothing about networking
  • I know how to use network zero to do simple network-y things and I understand concepts like an IP address, client and server
  • How the hell does this work? Let's look under the hood!

At stage three when kids want to learn more about how network zero works they'll encounter ZeroMQ which, as good as it is, ISN'T standard networking. Does this make sense?

@tjguk
Copy link
Owner

tjguk commented Apr 8, 2016

I'm going to sit on this for a bit. (Not least because whatever decision we come to shouldn't affect the public interface so we can as well make it later as earlier). I'm especially hesitant because I'm just about to add a further dependency on netifaces to overcome the gnarly problems which Linux has in discovering IP addresses via the socket module.

AIUI there are two separate issues here: the complexity of building / installing the ZeroMQ stack (on Unix -- on Windows it's trivial); and the loss of learning which results from what it hides.

I'm willing to bet that the two most likely *nix platforms for teachers are RPi and Mac OS/X. Is the situation the same for both? And can we work around it with clear instructions? Is it easier if it's installed not via pip but via apt-get / Mac-whatever?

To the second (missing out on learning) I think there are a few aspects:

  • ZeroMQ isn't very different from using raw sockets -- connect/bind send/recv. it's not an exact drop-in replacement but it's intended to be a familiar setting for those who've used sockets before.
  • It partly comes down to practicality vs purity. Getting sockets right is hard -- and I'm no expert. So I'm sitting on the shoulders of giants.
  • ZeroMQ is a fairly widely-used toolset: knowing how it works won't harm your CV!
  • Ultimately, though, as I say in the design notes, we're not stuck to ZeroMQ. For our purposes, it could even be a sledgehammer to crack a nut. If we can achieve a fairly robust solution without it, I'm up for it.

I'll come back to this later when I've thought a little more

@ntoll
Copy link
Author

ntoll commented Apr 8, 2016

Good points and totally understand (like I said, it's a straw man). OTOH it's a good thing that ZeroMQ abstracts away some of the lower level pain - we don't want to put up unnecessary hurdles to new learners so there's a good argument that the next step in learning should be ZeroMQ. ;-)

@tjguk tjguk added the question label Apr 12, 2016
@tjguk tjguk changed the title Remove dependency on ZeroMQ Remove dependency on ZeroMQ? Apr 12, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants