Project Iris

Completely decentralized cloud messaging

Zero configuration, self organization and semantic addressing.
Perfect secrecy against passive and active attacks.
Beautiful, simple and language agnostic API.

Want to learn more? The book of Iris!

February 3, 2014: Iris at FOSDEM '14

Iris, open sourced!

Published: August 26, 2013

I'm very happy to announce, that as of today, Iris is open sourced.

Please note, that Iris is my PhD project, and as such, it is far from a production ready state. It started out as a research project, subject to a lot of heavy refactoring, with ideas being born midway. This, combined with it being my first Go program, means that the code can be greatly improved. Nonetheless, I did my best to release code that I'm actually proud of! :)

With this in mind, let the flame-war begin :D

Quick-start guide

Since I'm currently overwhelmed with my thesis, I'll have to postpone a full fledged guide/tutorial to a later point. Until then, the following very short guide will do as a rough intro into the system.

Before even downloading Iris, I suggest looking over the interactive teaser presentation. It is available for two language bindings: Go and Erlang. This should provide a fair amount of information of what Iris actually is, what it can and what it cannot do.

Got interested? I challenge you to re-implement the teaser demos locally! :)

After fetching the appropriate binary from the downloads section, you can start up a local development server with the -dev flag. This will generate it's own temporary parameters so you can get down to coding fast. After waiting for about 10 secs, it will boot reporting that it couldn't connect to any other remote Iris nodes.

$ ./iris -dev
Entering developer mode
Generating random RSA key... done.
Generating random cluster name... done.

2013/08/26 08:22:54 main: booting carrier...
2013/08/26 08:23:04 main: carrier converged with 0 remote connections.
2013/08/26 08:23:04 main: booting relay service...
2013/08/26 08:23:04 main: iris successfully booted, listening on port 55555.

You can now connect to the development node on port 55555 using the language bindings. If you want to terminate the node, just hit Ctrl-C and it will clean itself up.

2013/08/26 08:23:09 main: terminating relay service...
2013/08/26 08:23:09 main: terminating carrier...
2013/08/26 08:23:09 main: iris terminated.

If you want to try out distribution, you'll need to provide the startup parameters yourself: the RSA private key for security (-rsa) and the name of the cluster to create (-net). In order to find each other, the nodes currently require a non-firewalled environment: they use a fixed pool of UDP ports for locating and random TCP ports for connecting.

Random thoughts

As mentioned already, Iris is currently in a RFC state. There are a lot of bugs to be fixed and a lot of features planned. The goal of the release is to initiate a healthy and constructive feedback loop to guide the development forward. For this purpose, I invite any and all to share your thoughts on the project-iris mailing list.

My current goals are the implementation of federation and a decent load balancer. Hence, the next release(es) will also be feature previews, but hopefully afterwards I'll have the time to fully focus on stability.

P.S. Since I don't have (or very sporadically) access to a decent cluster, testing the system is quite difficult. If you have any suggestions on this front, do share :)