z25 / pyZOCP

Python ZOCP implementation (Z25 Orchestration Control Protocol)
GNU Lesser General Public License v3.0
33 stars 5 forks source link

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.