storm-contrib is a community repository for modules to use with Storm. These include a variety of spouts/bolts for integrating with other systems (Redis, Kafka, MongoDB, etc), as well as code for common tasks a Storm developer encounters.
For more information about Storm itself, see the Storm GitHub repository.
storm-contrib is organized as a "super-project" with a sub-folder for each module. Each module is distributed independently and module owners are responsible for distribution.
Some storm-contrib modules are git submodules (links to external github repositories). This allows storm-contrib sub-projects to be maintained externally (so those projects can maintain branches and tags independently), but also included in storm-contrib to increase community visibility.
More information about how git submodules work can be found in the online git documentaton on submodules.
When you clone storm-contrib, the modules that are git submodules will appear as empty directories.
To initialize the git submodules use the following command:
git submodule init
To pull down the latest versions of submodules:
git submodule update
If you're interested in contributing a module to storm-contrib, send an email to the Storm mailing list. You will then be given commit rights to storm-contrib. The advantage of having your module be part of storm-contrib instead of your own project is more visibility for your code. However, if you'd rather maintain your module as its own project that's fine too!
Once you have signed the contributor licence agreement and been granted commit rights to storm-contrib, you can add your project as a git submodule with the following command:
git submodule add git://github.com/[username]/[projectname].git