Master Branch: [![Travis CI](https://travis-ci.org/apache/storm.svg?branch=master)](https://travis-ci.org/apache/storm)

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, [is used by many companies](http://storm-project.net/documentation/Powered-By.html), and is a lot of fun to use!

The [Rationale page](http://storm-project.net/documentation/Rationale.html) explains what Storm is and why it was built. [This presentation](http://vimeo.com/40972420) is also a good introduction to the project.

Storm has a website at [storm-project.net](http://storm-project.net). Follow [@stormprocessor](https://twitter.com/stormprocessor) on Twitter for updates on the project.

## Documentation

Documentation and tutorials can be found on the [Storm website](http://storm-project.net/documentation/Home.html).

Developers and contributors should also take a look at our [Developer documentation](DEVELOPER.md).


## Getting help

__NOTE:__ The google groups account storm-user@googlegroups.com is now officially deprecated in favor of the Apache-hosted user/dev mailing lists.

### Storm Users
Storm users should send messages and subscribe to [user@storm.apache.org](mailto:user@storm.apache.org).

You can subscribe to this list by sending an email to [user-subscribe@storm.apache.org](mailto:user-subscribe@storm.apache.org). Likewise, you can cancel a subscription by sending an email to [user-unsubscribe@storm.apache.org](mailto:user-unsubscribe@storm.apache.org).

You can also [browse the archives of the storm-user mailing list](http://mail-archives.apache.org/mod_mbox/storm-user/).

### Storm Developers
Storm developers should send messages and subscribe to [dev@storm.apache.org](mailto:dev@storm.apache.org).

You can subscribe to this list by sending an email to [dev-subscribe@storm.apache.org](mailto:dev-subscribe@storm.apache.org). Likewise, you can cancel a subscription by sending an email to [dev-unsubscribe@storm.apache.org](mailto:dev-unsubscribe@storm.apache.org).

You can also [browse the archives of the storm-dev mailing list](http://mail-archives.apache.org/mod_mbox/storm-dev/).

### Which list should I send/subscribe to?
If you are using a pre-built binary distribution of Storm, then chances are you should send questions, comments, storm-related announcements, etc. to [user@storm.apache.org](user@storm.apache.org).

If you are building storm from source, developing new features, or otherwise hacking storm source code, then [dev@storm.apache.org](dev@storm.apache.org) is more appropriate.

### What will happen with storm-user@googlegroups.com?
All existing messages will remain archived there, and can be accessed/searched [here](https://groups.google.com/forum/#!forum/storm-user).

New messages sent to storm-user@googlegroups.com will either be rejected/bounced or replied to with a message to direct the email to the appropriate Apache-hosted group.

### IRC
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

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.


## Project lead

* Nathan Marz ([@nathanmarz](http://twitter.com/nathanmarz))

## Committers

* James Xu ([@xumingming](https://github.com/xumingming))
* Jason Jackson ([@jason_j](http://twitter.com/jason_j))
* Andy Feng ([@anfeng](https://github.com/anfeng))
* Flip Kromer ([@mrflip](https://github.com/mrflip))
* David Lao ([@davidlao2k](https://github.com/davidlao2k))
* P. Taylor Goetz ([@ptgoetz](https://github.com/ptgoetz))
* Derek Dagit ([@d2r](https://github.com/d2r))
* Robert Evans ([@revans2](https://github.com/revans2))
* Michael G. Noll ([@miguno](https://github.com/miguno))
* Kishor Patil ([@kishorvpatil](https://github.com/kishorvpatil))
* Sriharsha Chintalapani([@harshach](https://github.com/harshach))
* Sean Zhong ([@clockfly] (http://github.com/clockfly))
* Kyle Nusbaum ([@knusbaum](https://github.com/knusbaum))
* Parth Brahmbhatt ([@Parth-Brahmbhatt](https://github.com/Parth-Brahmbhatt))

## Contributors

* Christopher Bertels ([@bakkdoor](http://twitter.com/bakkdoor))
* Michael Montano ([@michaelmontano](http://twitter.com/michaelmontano))
* Dennis Zhuang ([@killme2008](https://github.com/killme2008))
* Trevor Smith ([@trevorsummerssmith](https://github.com/trevorsummerssmith))
* Ben Hughes ([@schleyfox](https://github.com/schleyfox))
* Alexey Kachayev ([@kachayev](https://github.com/kachayev))
* Haitao Yao ([@haitaoyao](https://github.com/haitaoyao))
* Dan Dillinger ([@ddillinger](https://github.com/ddillinger))
* Kang Xiao ([@xiaokang](https://github.com/xiaokang))
* Gabriel Grant ([@gabrielgrant](https://github.com/gabrielgrant))
* Travis Wellman ([@travisfw](https://github.com/travisfw))
* Kasper Madsen ([@KasperMadsen](https://github.com/KasperMadsen))
* Michael Cetrulo ([@git2samus](https://github.com/git2samus))
* Thomas Jack ([@tomo](https://github.com/tomo))
* Nicolas Yzet ([@nicoo](https://github.com/nicoo))
* Fabian Neumann ([@hellp](https://github.com/hellp))
* Soren Macbeth ([@sorenmacbeth](https://github.com/sorenmacbeth))
* Ashley Brown ([@ashleywbrown](https://github.com/ashleywbrown))
* Guanpeng Xu ([@herberteuler](https://github.com/herberteuler))
* Vinod Chandru ([@vinodc](https://github.com/vinodc))
* Martin Kleppmann ([@ept](https://github.com/ept))
* Evan Chan ([@velvia](https://github.com/velvia))
* Sjoerd Mulder ([@sjoerdmulder](https://github.com/sjoerdmulder))
* Yuta Okamoto ([@okapies](https://github.com/okapies))
* Barry Hart ([@barrywhart](https://github.com/barrywhart))
* Sergey Lukjanov ([@Frostman](https://github.com/Frostman))
* Ross Feinstein ([@rnfein](https://github.com/rnfein))
* Junichiro Takagi ([@tjun](https://github.com/tjun))
* Bryan Peterson ([@Lazyshot](https://github.com/Lazyshot))
* Sam Ritchie ([@sritchie](https://github.com/sritchie))
* Stuart Anderson ([@emblem](https://github.com/emblem))
* Lorcan Coyle ([@lorcan](https://github.com/lorcan))
* Andrew Olson ([@noslowerdna](https://github.com/noslowerdna))
* Gavin Li ([@lyogavin](https://github.com/lyogavin))
* Tudor Scurtu ([@tscurtu](https://github.com/tscurtu))
* Homer Strong ([@strongh](https://github.com/strongh))
* Sean Melody ([@srmelody](https://github.com/srmelody))
* Jake Donham ([@jaked](https://github.com/jaked))
* Ankit Toshniwal ([@ankitoshniwal](https://github.com/ankitoshniwal))
* Adam Lewis ([@supercargo](https://github.com/supercargo))
* Alexander Yerenkow ([@yerenkow](https://github.com/yerenkow))
* Brenden Matthews ([@brndnmtthws](https://github.com/brdnmtthws))
* Bryan Baugher ([@bbaugher](https://github.com/bbaugher))
* Danijel Schiavuzzi ([@dschiavu](https://github.com/dschiavu))
* David James ([@xpe](https://github.com/xpe))
* David Losada ([@tuxpiper](https://github.com/tuxpiper))
* Francois Dang Ngoc ([@darthbear](https://github.com/darthbear))
* Gangrui Li ([@davidlgr](https://github.com/davidlgr))
* John Gilmore ([@jsgilmore](https://github.com/jsgilmore))
* Julien Nioche ([@jnioche](https://github.com/jnioche))
* Muneyuki Noguchi ([@mnogu](https://github.com/mnogu))
* Niels Basjes ([@nielsbasjes](https://github.com/nielsbasjes))
* Padma Priya Chitturi ([PadmaCh](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=PadmaCh))
* Prabeesh K ([@prabeesh](https://github.com/prabeesh))
* Sean Zhong ([@clockfly](https://github.com/clockfly))
* Sriharsha Chintalapani ([@harshach](https://github.com/harshach))
* Srinivas Prasad Gumdelli ([@srinivasgumdelli](https://github.com/srinivasgumdelli))
* Steven Phung ([@stphung](https://github.com/stphung))
* Suresh Srinivas ([@sureshms](https://github.com/sureshms))
* thinker0 ([@thinker0](https://github.com/thinker0))
* Troy Ding ([@troyding](https://github.com/troyding))
* Aaron Zimmerman ([@aaronzimmerman](https://github.com/aaronzimmerman))
* Albert Chu ([@chu11](https://github.com/chu11))
* Krystian Nowak ([@krystiannowak](https://github.com/krystiannowak))
* Parth-Brahmbhatt ([@Parth-Brahmbhatt](https://github.com/Parth-Brahmbhatt))
* Adrian Petrescu ([@apetresc](https://github.com/apetresc))
* DashengJu ([@dashengju](https://github.com/dashengju))
* Jungtaek Lim ([@HeartSaVioR](https://github.com/HeartSaVioR))
* Li Jiahong ([@Gvain](https://github.com/Gvain))
* Aaron Levin ([@aaronlevin](https://github.com/aaronlevin))
* Masatake Iwasaki ([@iwasakims](https://github.com/iwasakims))
* Milad Fatenejad ([@icksa](https://github.com/icksa))
* Ryan Liu ([@shell0dh](https://github.com/shell0dh))
* Dave Parfitt ([@metadave](https://github.com/metadave))
* Jo Liss ([@joliss](https://github.com/joliss))
* averykhoo ([@averykhoo](https://github.com/averykhoo))
* Curtis Allen ([@curtisallen](https://github.com/curtisallen))
* Raghavendra Nandagopal ([@RaghavendraNandagopal](https://github.com/RaghavendraNandagopal))
* Boris Aksenov ([@miofthena](https://github.com/miofthena))
* Itai Frenkel ([@itaifrenkel](https://github.com/itaifrenkel))
* Naresh Kosgi ([@NareshKosgi](https://github.com/NareshKosgi))
* Sean T Allen ([@SeanTAllen](https://github.com/SeanTAllen))
* Gabriel Ciuloaica ([@devsprint](https://github.com/devsprint))
* wurstmeister ([@wurstmeister](https://github.com/wurstmeister))
* Marc Beitchman ([@mbeitchman](https://github.com/mbeitchman))
* Dan Blanchard ([@dan-blanchard](https://github.com/dan-blanchard))
* Mykhailo "Michael" Pershyn ([@pershyn](https://github.com/pershyn))
* Dave Golombek ([@dgolombek](https://github.com/dgolombek))
* Edison Xu ([@EdisonXu](https://github.com/EdisonXu))
* Ariel Valentin ([@arielvalentin](http://blog.arielvalentin.com/))
* Dane Hammer ([@danehammer](https://github.com/danehammer))
* Christophe Carre' ([@chrisz](https://github.com/chrisz))
* Anya Tchernishov ([@anyatch](https://github.com/anyatch))
* Ahmet DAL ([@javrasya](https://github.com/javrasya))
* Kai Sasaki ([@Lewuathe](https://github.com/Lewuathe))
* Matthew Siegel ([@msiegel07](https://github.com/msiegel07))
* Jun Xia ([@tedxia](https://github.com/tedxia))
* caofangkun ([@caofangkun](https://github.com/caofangkun))
* Mansheng Yang ([@lightyang](https://github.com/lightyang))
* Rick Kilgore ([@rick-kilgore](http://github.com/rick-kilgore))
* 周向涛 ([@taojoe](https://github.com/taojoe))
* Gianmarco De Francisci Morales ([@gdfm](https://github.com/gdfm))
* zhangjinlong ([@BuDongDong](https://github.com/BuDongDong))
* Paul DelRe ([@pdelre](https://github.com/pdelre))
* Zhihui Jiao ([@onlychoice](https://github.com/onlychoice))
* Hari Sekhon ([@harisekhon](https://github.com/harisekhon))
* iBuddha ([@iBuddha](https://github.com/iBuddha))
* Dave Katten ([@dkatten](https://github.com/dkatten))
* Mark Davis ([@markdav](https://github.com/markdav))
* Zhuo Liu ([@zhuoliu](https://github.com/zhuoliu))
* jangie ([@jangie](https://github.com/jangie))
* Hailei Zhang ([@Hailei](https://github.com/Hailei))
* Gabor Liptak ([@gliptak](https://github.com/glibtak))
* Chuck Burgess ([@ashnazg](https://github.com/ashnazg))

## Acknowledgements

YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: [YourKit Java Profiler](http://www.yourkit.com/java/profiler/index.jsp) and [YourKit .NET Profiler](http://www.yourkit.com/.net/profiler/index.jsp).

