Storm is a distributed realtime computation system. Similar to how Hadoop provides a set of general primitives for doing batch processing, Storm provides a set of general primitives for doing realtime computation. Storm is simple, can be used with any programming language, and is a lot of fun to use!

## Documentation

Documentation and tutorials can be found on the [Storm wiki](http://github.com/nathanmarz/storm/wiki).

## Getting help

Feel free to ask questions on Storm's mailing list: http://groups.google.com/group/storm-user

You can also come to the #storm-user room on [freenode](http://freenode.net/). You can usually find a Storm developer there to help you out.

## License

The use and distribution terms for this software are covered by the
Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
which can be found in the file LICENSE.html at the root of this distribution.
By using this software in any fashion, you are agreeing to be bound by
the terms of this license.
You must not remove this notice, or any other, from this software.

## Contributors

* Nathan Marz ([@nathanmarz](http://twitter.com/nathanmarz))
* Jason Jackson ([@jason_j](http://twitter.com/jason_j))
* Christopher Bertels ([@bakkdoor](http://twitter.com/bakkdoor))
