Skip to content
/ pyZOCP Public
forked from z25/pyZOCP

Python ZOCP implementation (Z25 Orchestration Control Protocol)

License

Notifications You must be signed in to change notification settings

sphaero/pyZOCP

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyZOCP

Python ZOCP implementation (Z25 Orchestration Control Protocol)

ZOCP: Trying to control multiple computers in live performances is a challenging task. Often
computers intercommunicate using fixed or manual parameters. However when projects expand across
many devices this is hard to maintain. Especially in situations where the parameters tend to
change. ZOCP is a new protocol which facilitates flexibility and autonomous setups in an
orchestrated environment.

The ZOCP protocol is designed with the following in mind:

  • KISS (Keep it simple and stupid): We want this protocol not be in our way and we want to be able to understand it easily.
  • Zero Configuration: The protocol should be able to handle most, if not all configuration by itself. There is no need for setting up specific parameters unless requested, aka convention over configuration.
  • Runs on anything TCP/IP: Since TCP/IP is the de facto standard for devices to communicate the technology should be able to run on any device that is able to talk TCP/IP
  • Open Standards: All used technologies, software, protocols should be freely and openly available.
  • Low latency, when needed
  • Reliability, when needed
  • Unintrusive debugging and monitoring

Read more …

Quick installation on Ubuntu/Debian

Either clone the repo or use pip:

clone:


sudo apt-get install python3-zmq
git clone https://github.com/zeromq/pyre.git
git clone https://github.com/z25/pyZOCP.git
cd pyZOCP/examples
PYTHONPATH=“../..:../src” python3 simple_node.py

pip: (On some system use pip3 instead of pip for Python3 as we only support python3 currently)

pip install pyzmq
pip install https://github.com/zeromq/pyre/archive/master.zip
pip install https://github.com/z25/pyZOCP/archive/master.zip

Quick installation on OSX

Install Python3 from Python.org

After Python3 installation open a terminal and execute the following:


sudo pip3 install pyzmq
sudo pip3 install https://github.com/zeromq/pyre/archive/master.zip
sudo pip3 install https://github.com/z25/pyZOCP/archive/master.zip

Quick installation on Windows

Install Python3.4 or newer, make sure it sets your PATH etc. Also make sure you get Pip

After Python3 installation open a DOS window and execute the following:


pip install pyzmq
pip install https://github.com/zeromq/pyre/archive/master.zip
pip install https://github.com/z25/pyZOCP/archive/master.zip

Frequently asked questions

What is the security model of ZOCP

There is none. As we are mostly focused on performance and security is always a performance killer. Of course encryption can be implemented on a message level or transport level very easily. However designing with all security in mind makes a protocol like ZOCP absurdly complicated.

Can I declare capabilities or register parameters at runtime?

Yes you can. Another node can even do that!

Do I need a server

No, ZOCP uses the ZRE protocol which discovers and interconnects nodes without any outside help.

How can I use this on the internet

Discovery on WAN networks is still a topic of research. You can traverse layer 3 networks by using multicast. This implies the network supports multicast. There is also gossip support in ZRE but we don’t use that yet in ZOCP.

Is there a version of ZOCP in C?

You should understand that ZOCP is a protocol. A protocol is just a defined set of agreements. We have a reference prototype written in Python because prototyping in Python is great. Prototyping in C is not. So once we deem the protocol stable enough we will write a C implementation. This is also very easy from Python. So “No” there is not yet a C implementation of ZOCP but there will be as soon as we can. The ZRE protocol does have a C version already called Zyre!

Is there any documentation?

We are working on it. The protocol is still very much in beta. One of our goals is to make ZOCP as easy as possible mentally. Asynchronous computing is already very challenging for the brain. Therefore changes to the protocol will probably have a big impact on the documentation. We don’t want to confuse you already.

About

Python ZOCP implementation (Z25 Orchestration Control Protocol)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%