explaingit

apache/incubator-heron

Analysis updated 2026-05-18

3,636JavaAudience · dataComplexity · 5/5LicenseSetup · hard

TLDR

An Apache incubator project from Twitter for processing huge streams of real-time data, like tweets and clicks, as they happen.

Mindmap

mindmap
  root((repo))
    What it does
      Stream processing
      Real time events
    Tech stack
      Java
      Bazel
      Python
    Use cases
      High volume analytics
      Event processing
    Audience
      Developers
      Data engineers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Process a high volume real-time event stream, like clicks or activity logs, as it arrives.

USE CASE 2

Replace an existing Apache Storm based stream processing setup with an improved architecture.

USE CASE 3

Study how a large-scale distributed stream processing engine is designed.

What is it built with?

JavaPythonBazel

How does it compare?

apache/incubator-heronhuburt-hu/newbieguidespockframework/spock
Stars3,6363,6413,627
LanguageJavaJavaJava
Setup difficultyhardeasyeasy
Complexity5/52/52/5
Audiencedatadeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1day+

Requires Java 11, Python 3.6, and Bazel 6.0.0, plus a distributed infrastructure setup.

Free to use, modify, and distribute, even commercially, as long as you include the original copyright and license notice.

In plain English

Heron is a system for processing large streams of real-time data. It was originally built by Twitter to handle the enormous volume of events their platform generates every second, things like tweets, clicks, and user activity that need to be processed and analyzed as they happen rather than in batches hours later. The project was eventually donated to the Apache Software Foundation, where it entered the incubator program, which is how open-source projects graduate into full Apache projects. The "incubator-heron" name reflects that stage of the process. Heron is positioned as an improvement over an earlier stream processing system called Apache Storm, which Twitter had also used before building Heron. The README describes it as having a wide array of architectural improvements over its predecessor, though the short README does not go into detail about what those improvements are. The full documentation lives on a separate website at heron.apache.org. To run Heron you need Java 11, Python 3.6, and a build tool called Bazel. The project communicates through mailing lists and a Slack workspace, and there was a regular meetup group in the San Francisco Bay Area. Academic papers and blog posts from Twitter about the original design are linked from the README for those who want to understand the technical rationale behind the system. The README for this repository is quite sparse and serves mainly as a pointer to external documentation rather than a self-contained guide.

Copy-paste prompts

Prompt 1
Explain what makes stream processing different from batch processing using this project as an example.
Prompt 2
Help me understand what infrastructure I'd need to run Heron in production.
Prompt 3
What were the architectural improvements Heron made over Apache Storm?

Frequently asked questions

What is incubator-heron?

An Apache incubator project from Twitter for processing huge streams of real-time data, like tweets and clicks, as they happen.

What language is incubator-heron written in?

Mainly Java. The stack also includes Java, Python, Bazel.

What license does incubator-heron use?

Free to use, modify, and distribute, even commercially, as long as you include the original copyright and license notice.

How hard is incubator-heron to set up?

Setup difficulty is rated hard, with roughly 1day+ to a first successful run.

Who is incubator-heron for?

Mainly data.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.