{
  "name": "Datamata Data Tool Momentum Index",
  "version": "1.0",
  "description": "Cross-signal momentum for open source data tools: GitHub stars, forks and 4-week star growth, PyPI and npm downloads, and active job demand. One row per tool from the most recent weekly snapshot, with a 0-100 momentum score.",
  "source": "https://www.datamatastudios.com/datasets/data-tool-momentum",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "generated_at": "2026-08-07T16:40:11.077Z",
  "latest_snapshot_date": "2026-08-02",
  "categories": [
    "ai",
    "bi",
    "ingestion",
    "ml",
    "mlops",
    "orchestrator",
    "processing",
    "quality",
    "streaming",
    "transform",
    "warehouse"
  ],
  "columns": [
    {
      "name": "snapshot_date",
      "type": "date",
      "description": "UTC date the latest snapshot was taken (YYYY-MM-DD)."
    },
    {
      "name": "tool",
      "type": "string",
      "description": "Tool name (e.g. dbt, Apache Airflow, DuckDB)."
    },
    {
      "name": "slug",
      "type": "string",
      "description": "Stable identifier used across Datamata surfaces."
    },
    {
      "name": "category",
      "type": "string",
      "description": "Tooling category: transform, orchestrator, processing, streaming, ingestion, bi, ml, ai, mlops, warehouse or quality."
    },
    {
      "name": "stars",
      "type": "integer",
      "description": "GitHub stargazers on the snapshot date."
    },
    {
      "name": "forks",
      "type": "integer",
      "description": "GitHub forks on the snapshot date."
    },
    {
      "name": "open_issues",
      "type": "integer",
      "description": "Open GitHub issues on the snapshot date."
    },
    {
      "name": "pypi_downloads_month",
      "type": "integer",
      "description": "PyPI downloads in the trailing month. Blank for tools not on PyPI."
    },
    {
      "name": "npm_downloads_month",
      "type": "integer",
      "description": "npm downloads in the trailing month. Blank for tools not on npm."
    },
    {
      "name": "job_listing_count",
      "type": "integer",
      "description": "Active job listings mentioning the tool. Blank for tools not in the skill taxonomy."
    },
    {
      "name": "star_growth_4w_pct",
      "type": "number",
      "description": "Change in GitHub stars over the trailing 4 weeks, as a percentage. Blank until 4 weeks of history exist."
    },
    {
      "name": "momentum_score",
      "type": "integer",
      "description": "0-100 percentile composite of stars, job demand, downloads and 4-week star growth."
    },
    {
      "name": "github",
      "type": "string",
      "description": "GitHub repository (owner/repo). Blank if not tracked on GitHub."
    },
    {
      "name": "website",
      "type": "string",
      "description": "Project homepage."
    }
  ],
  "row_count": 26,
  "rows": [
    {
      "snapshot_date": "2026-08-02",
      "tool": "LangChain",
      "slug": "langchain",
      "category": "ai",
      "stars": 143193,
      "forks": 23849,
      "open_issues": 462,
      "pypi_downloads_month": 301574714,
      "npm_downloads_month": null,
      "job_listing_count": 173,
      "star_growth_4w_pct": 1.6,
      "momentum_score": 86,
      "github": "langchain-ai/langchain",
      "website": "https://www.langchain.com"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Hugging Face Transformers",
      "slug": "transformers",
      "category": "ai",
      "stars": 163232,
      "forks": 34085,
      "open_issues": 2316,
      "pypi_downloads_month": 177442710,
      "npm_downloads_month": null,
      "job_listing_count": 132,
      "star_growth_4w_pct": 0.6,
      "momentum_score": 76,
      "github": "huggingface/transformers",
      "website": "https://huggingface.co"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Apache Airflow",
      "slug": "airflow",
      "category": "orchestrator",
      "stars": 46352,
      "forks": 17509,
      "open_issues": 1789,
      "pypi_downloads_month": 21595166,
      "npm_downloads_month": null,
      "job_listing_count": 439,
      "star_growth_4w_pct": 0.7,
      "momentum_score": 72,
      "github": "apache/airflow",
      "website": "https://airflow.apache.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Apache Spark",
      "slug": "spark",
      "category": "processing",
      "stars": 43763,
      "forks": 29298,
      "open_issues": 465,
      "pypi_downloads_month": 49284268,
      "npm_downloads_month": null,
      "job_listing_count": 1240,
      "star_growth_4w_pct": 0.5,
      "momentum_score": 72,
      "github": "apache/spark",
      "website": "https://spark.apache.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Grafana",
      "slug": "grafana",
      "category": "bi",
      "stars": 75914,
      "forks": 14440,
      "open_issues": 3356,
      "pypi_downloads_month": null,
      "npm_downloads_month": null,
      "job_listing_count": 426,
      "star_growth_4w_pct": 0.8,
      "momentum_score": 70,
      "github": "grafana/grafana",
      "website": "https://grafana.com"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Pandas",
      "slug": "pandas",
      "category": "processing",
      "stars": 49393,
      "forks": 20217,
      "open_issues": 2913,
      "pypi_downloads_month": 731944146,
      "npm_downloads_month": null,
      "job_listing_count": 138,
      "star_growth_4w_pct": 0.5,
      "momentum_score": 69,
      "github": "pandas-dev/pandas",
      "website": "https://pandas.pydata.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "scikit-learn",
      "slug": "scikit-learn",
      "category": "ml",
      "stars": 66851,
      "forks": 27250,
      "open_issues": 2112,
      "pypi_downloads_month": 222143948,
      "npm_downloads_month": null,
      "job_listing_count": 164,
      "star_growth_4w_pct": 0.4,
      "momentum_score": 69,
      "github": "scikit-learn/scikit-learn",
      "website": "https://scikit-learn.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "dbt",
      "slug": "dbt",
      "category": "transform",
      "stars": 13558,
      "forks": 2487,
      "open_issues": 1457,
      "pypi_downloads_month": 108386342,
      "npm_downloads_month": null,
      "job_listing_count": 521,
      "star_growth_4w_pct": 1.5,
      "momentum_score": 68,
      "github": "dbt-labs/dbt-core",
      "website": "https://www.getdbt.com"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "PyTorch",
      "slug": "pytorch",
      "category": "ml",
      "stars": 102116,
      "forks": 28637,
      "open_issues": 18379,
      "pypi_downloads_month": null,
      "npm_downloads_month": null,
      "job_listing_count": 372,
      "star_growth_4w_pct": 0.6,
      "momentum_score": 66,
      "github": "pytorch/pytorch",
      "website": "https://pytorch.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Apache Kafka",
      "slug": "kafka",
      "category": "streaming",
      "stars": 33350,
      "forks": 15391,
      "open_issues": 464,
      "pypi_downloads_month": null,
      "npm_downloads_month": null,
      "job_listing_count": 561,
      "star_growth_4w_pct": 0.7,
      "momentum_score": 62,
      "github": "apache/kafka",
      "website": "https://kafka.apache.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "MLflow",
      "slug": "mlflow",
      "category": "mlops",
      "stars": 27323,
      "forks": 6101,
      "open_issues": 2088,
      "pypi_downloads_month": null,
      "npm_downloads_month": null,
      "job_listing_count": 392,
      "star_growth_4w_pct": 1.7,
      "momentum_score": 60,
      "github": "mlflow/mlflow",
      "website": "https://mlflow.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "DuckDB",
      "slug": "duckdb",
      "category": "warehouse",
      "stars": 39893,
      "forks": 3508,
      "open_issues": 744,
      "pypi_downloads_month": 54469976,
      "npm_downloads_month": null,
      "job_listing_count": 3,
      "star_growth_4w_pct": 1.8,
      "momentum_score": 57,
      "github": "duckdb/duckdb",
      "website": "https://duckdb.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Prefect",
      "slug": "prefect",
      "category": "orchestrator",
      "stars": 23524,
      "forks": 2437,
      "open_issues": 824,
      "pypi_downloads_month": 11828888,
      "npm_downloads_month": null,
      "job_listing_count": 28,
      "star_growth_4w_pct": 3.3,
      "momentum_score": 55,
      "github": "PrefectHQ/prefect",
      "website": "https://www.prefect.io"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Apache Superset",
      "slug": "superset",
      "category": "bi",
      "stars": 74091,
      "forks": 18020,
      "open_issues": 604,
      "pypi_downloads_month": 1057461,
      "npm_downloads_month": null,
      "job_listing_count": 9,
      "star_growth_4w_pct": 0.6,
      "momentum_score": 53,
      "github": "apache/superset",
      "website": "https://superset.apache.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Metabase",
      "slug": "metabase",
      "category": "bi",
      "stars": 48487,
      "forks": 6702,
      "open_issues": 4230,
      "pypi_downloads_month": null,
      "npm_downloads_month": null,
      "job_listing_count": 12,
      "star_growth_4w_pct": 0.9,
      "momentum_score": 53,
      "github": "metabase/metabase",
      "website": "https://www.metabase.com"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Ray",
      "slug": "ray",
      "category": "processing",
      "stars": 43409,
      "forks": 7869,
      "open_issues": 3496,
      "pypi_downloads_month": 61308823,
      "npm_downloads_month": null,
      "job_listing_count": null,
      "star_growth_4w_pct": 0.7,
      "momentum_score": 52,
      "github": "ray-project/ray",
      "website": "https://www.ray.io"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Polars",
      "slug": "polars",
      "category": "processing",
      "stars": 39156,
      "forks": 2989,
      "open_issues": 2848,
      "pypi_downloads_month": 67930988,
      "npm_downloads_month": null,
      "job_listing_count": 7,
      "star_growth_4w_pct": 0.6,
      "momentum_score": 51,
      "github": "pola-rs/polars",
      "website": "https://www.pola.rs"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Dagster",
      "slug": "dagster",
      "category": "orchestrator",
      "stars": 15921,
      "forks": 2226,
      "open_issues": 2611,
      "pypi_downloads_month": 9090022,
      "npm_downloads_month": null,
      "job_listing_count": 43,
      "star_growth_4w_pct": 0.9,
      "momentum_score": 49,
      "github": "dagster-io/dagster",
      "website": "https://dagster.io"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Airbyte",
      "slug": "airbyte",
      "category": "ingestion",
      "stars": 21763,
      "forks": 5283,
      "open_issues": 2225,
      "pypi_downloads_month": null,
      "npm_downloads_month": null,
      "job_listing_count": 19,
      "star_growth_4w_pct": 0.9,
      "momentum_score": 42,
      "github": "airbytehq/airbyte",
      "website": "https://airbyte.com"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Apache Flink",
      "slug": "flink",
      "category": "streaming",
      "stars": 26233,
      "forks": 13999,
      "open_issues": 356,
      "pypi_downloads_month": 185937,
      "npm_downloads_month": null,
      "job_listing_count": 121,
      "star_growth_4w_pct": 0.3,
      "momentum_score": 40,
      "github": "apache/flink",
      "website": "https://flink.apache.org"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "dlt",
      "slug": "dlt",
      "category": "ingestion",
      "stars": 5685,
      "forks": 573,
      "open_issues": 433,
      "pypi_downloads_month": 7783192,
      "npm_downloads_month": null,
      "job_listing_count": null,
      "star_growth_4w_pct": 2.3,
      "momentum_score": 36,
      "github": "dlt-hub/dlt",
      "website": "https://dlthub.com"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Great Expectations",
      "slug": "great-expectations",
      "category": "quality",
      "stars": 11690,
      "forks": 1790,
      "open_issues": 39,
      "pypi_downloads_month": 26528128,
      "npm_downloads_month": null,
      "job_listing_count": null,
      "star_growth_4w_pct": 0.6,
      "momentum_score": 34,
      "github": "great-expectations/great_expectations",
      "website": "https://greatexpectations.io"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Feast",
      "slug": "feast",
      "category": "mlops",
      "stars": 7187,
      "forks": 1391,
      "open_issues": 387,
      "pypi_downloads_month": 617250,
      "npm_downloads_month": null,
      "job_listing_count": null,
      "star_growth_4w_pct": 1,
      "momentum_score": 32,
      "github": "feast-dev/feast",
      "website": "https://feast.dev"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Soda Core",
      "slug": "soda-core",
      "category": "quality",
      "stars": 2402,
      "forks": 281,
      "open_issues": 202,
      "pypi_downloads_month": 3415824,
      "npm_downloads_month": null,
      "job_listing_count": null,
      "star_growth_4w_pct": 0.9,
      "momentum_score": 31,
      "github": "sodadata/soda-core",
      "website": "https://www.soda.io"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Redash",
      "slug": "redash",
      "category": "bi",
      "stars": 28720,
      "forks": 4616,
      "open_issues": 800,
      "pypi_downloads_month": null,
      "npm_downloads_month": null,
      "job_listing_count": null,
      "star_growth_4w_pct": 0.2,
      "momentum_score": 30,
      "github": "getredash/redash",
      "website": "https://redash.io"
    },
    {
      "snapshot_date": "2026-08-02",
      "tool": "Mage",
      "slug": "mage",
      "category": "orchestrator",
      "stars": 8780,
      "forks": 979,
      "open_issues": 618,
      "pypi_downloads_month": 42717,
      "npm_downloads_month": null,
      "job_listing_count": null,
      "star_growth_4w_pct": 0.2,
      "momentum_score": 21,
      "github": "mage-ai/mage-ai",
      "website": "https://www.mage.ai"
    }
  ]
}