Crossbar.io's Technology Stack
Quick overview of the technology stack that Crossbar.io GmbH (the company) provides with background information.
Crossbar.io GmbH is a dedicated supporter of the open-source movement and open development communities. We use open-source technologies, contribute regularily to projects and release most of what we do as open-source.
Here is an overview of the technology stack that we originally created, which now has grown a community with active contributors and Crossbar.io's role:Top
WAMP (The Web Application Messaging Protocol) is an open standard networking protocol that provides the foundation for everything else we do. For details on WAMP, why we created it and and why we think it's great, please visit the protocol's Web site
We think of WAMP as an open ecosystem. And "open" in this context means that
- the specification is freely available, under a Creative Commons license
- anyone can implement it and immediately profit from the ecosystem
This has worked out great - there are multiple third-party WAMP implementations, and more are upcoming.
The open community approach has made WAMP technically better than what we ever could have achieved on our own. We originally released WAMP version 1 to the community to gain practical experience with real world applications and feedback from implementors and users. A lot of community feedback, reviewing and suggestions were collected and discussed (all in the open on GitHub), and this ultimately culmulated in WAMP version 2. Sure, there were (and to some degree still are) some frictions in this process. It is very much an IETF like approach rather than "comitee" paper-work design. I am convinced it is the only way of creating something that actually works.
WAMP has its own Web site and "brand" since as an open ecosystem, third party implementors should not run into the problem with users confusing their WAMP implementations with Autobahn or Crossbar (see below). Third parties are welcome to implement WAMP and we want everyone to profit from the WAMP ecosystem with no confusion with Autobahn or Crossbar.
Note on Patents. We (Crossbar.io GmbH or me, Tobias Oberstein) don't claim any patents in WAMP. Further, we are not aware of any patents that would be infringed by a WAMP implementation. However, this is no legal advice: we cannot guarantee non-infringement. It's use as you like, without guarantees.
Note on Trademarks. We do claim a trademark for the WAMP logo and WAMP wordmark (restricted to networking protocols). The reason is that we want to avoid miuses which would harm the WAMP ecosystem as a whole, like an implementation or vendor claiming to be "compatible" while in practice being not, or pursuing an "embrace-and-extend" strategy. It is NOT to deny the use of the WAMP logo or wordmark to anyone supportive of the ecosystem. Competitor or not.
Autobahn provides open-source implementations of WebSocket and WAMP in multiple programming languages:
- AutobahnPython - a Python WebSocket and WAMP implementation (client and server)
- AutobahnCpp - a C++ WAMP implementation (client)
- AutobahnAndroid - a Android/Java WebSocket and WAMP implementation (client - still at WAMP v1)
All Autobahn code is Apache 2.0 licensed, which is a very liberal license that allows you to use the code in both other open-source as well as proprietory closed-source projects. It is basically: do want you want, we don't give guarantees and don't sue us. This is no formal, legal advice - please consult a lawyer.
We started Autobahn since we recognized early on in 2011 that WebSocket would be an ideal transport for WAMP. At that time, WebSocket itself was still being under development. We actively participated on the IETF working group ("Hybi") during the specification, and Autobahn was one of the first WebSocket implementations. AutobahnPython was the first production ready Python WebSocket implementation. It is now one of the most widely used ones, as it supports both Python 2 and 3, as well as Twisted and asyncio.
Since we wanted WebSocket to succeed, and have interoperable, secure and robust implementations, we recognized the need for an automated testsuite, which lead to another Autobahn project: AutobahnTestsuite. This is a fully automated protocol testsuite that runs hundreds of tests using a technique know as fuzzing. Nowadays, the testsuite is virtually used all over the industry, and has become a defacto standard for WebSocket protocol compliance testing. Obviously, all Autobahn WebSocket implementations have best-in-class conformance and 100% passes.
I'd like to note that users of Autobahn generally fall into two classes:
- those who "only" need a rock-solid WebSocket implementation
- those who want to leverage WAMP
And we are committed to continue serving both user groups. Don't like/need WAMP? No problem. Use Autobahn at the WebSocket level and ignore the rest.
As an example for our continuing progress and support, AutobahnPython was the third WebSocket implementation with support for WebSocket compression anywhere (to the best of my knowledge). The first being pywebsocket, a WebSocket server implementation by Google intended for testing or experimental purposes only (mainly to prototype new WebSocket features for testing with Chrome I'd say), the second being Google Chrome. Of course AutobahnTestsuite has automated tests for WebSocket compression as well, and is used by implementors now catching up.Top
Crossbar.io is an open-source WAMP application router with advanced features and production use. It is built on AutobahnPython and Twisted and runs anywhere from your data-center big iron, SMP server down to a RaspberryPi or Arduino Yun.
Crossbar is built from the ground up for security, robustness, scalability and high-performance when run on PyPy and Linux or FreeBSD. To give you an idea of what performance to expect, here is a blog post with benchmarks on the Pi.
I case you've never heard about PyPy (which would be a pity): PyPy is an implementation of the Python language that works with a tracing JIT under the hood.
A tracing JIT will run your program, identify hot loops (code paths that are executed very often) and compile those Python loops into native machine code. PyPy also features an incredible powerful incremental Garbage Collector (GC). The GC is critical for consistent low-latency messaging performance. PyPy's GC is as capable or even outperforms JVM/HotSpot.
Crossbar is fully supported by Crossbar.io GmbH, and we provide consulting and professional services for users designing, building, deploying and operating applications on top of Crossbar.Top
Start experimenting and prototyping for IoT applications with Crossbar.io and Raspberry Pi!
Loaded with all the software you need to make the board part of WAMP applications!
- Crossbar.io's Technology Stack
- Security in the IoT
- WebSocket - persistent across page loads?
- WAMP user language survey
- Mixing Web and WAMP code with Twisted Klein
- Going asynchronous: from Flask to Twisted Klein
- Small demo of a pragmatic use of WAMP in Python