h1. 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:
"Read more ...":http://www.z25.org/static/_rd_/zocp_init_plab/index.html
h2. 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
h2. Quick installation on OSX
Install Python3 from "Python.org":https://www.python.org/downloads/mac-osx/
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
h2. 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
h2. Frequently asked questions
h3. 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.
h3. Can I declare capabilities or register parameters at runtime?
Yes you can. Another node can even do that!
h3. Do I need a server
No, ZOCP uses the ZRE protocol which discovers and interconnects nodes without any outside help.
h3. 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.
h3. 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":http://github.com/zeromq/zyre already called Zyre!
h3. 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.