Dataset reference

Adoption Signals

Cleaned software-package, container, and provider activity, organized around maintained project and company mappings.

Data referenceAdoption Signals. Delivered facts, source measures, mappings, versions, and quality controls.

Adoption Signals: quality and research use

Follow software distribution activity across mapped packages, containers and providers using cleaned and adjusted artifact-level series.

Source-native measures, stable artifact identities and separate cleaned/adjusted values preserve analytical context. Aggregate/version reconciliation checks support consistent activity totals.

01

Coverage and source collection

SoftwareIQ collects source-native activity from five public developer ecosystems on a daily operating schedule.

Current coverage includes npm and PyPI packages, Docker Hub repositories, NuGet packages, and Terraform Registry providers. Source-native artifact identifiers connect each observation to its ecosystem's reported distribution activity.

Source lineage records connect each series to its artifact and observation period. Normalization checks source continuity, while separate cleaned and adjusted values preserve the context behind changes in activity.

02

Projects, artifacts, and company mappings

The dataset retains source-level identity while supporting project- and company-level analysis.

An artifact is the source-native package, repository, or provider that produces an observation. A project is a maintained analytical entity that groups related artifacts representing the same software project or product family. A project can contain artifacts from more than one ecosystem.

A company association links a project to a covered company for analytical attribution. The mapping is researched and maintained separately from the source metric. It supports company and category aggregation, but it does not by itself assert legal ownership, exclusivity, commercial terms, or the share of activity attributable to paid use.

Project-level analysis does not require every mapped artifact to be added together. Some product-facing packages are independently adopted; others are shared dependencies installed mechanically with another package. Project membership alone does not establish that artifact counts are additive.

  • Use the source and artifact identifier to audit or reproduce an individual series.
  • Use the project identifier to combine related artifacts only when project-level analysis is intended.
  • Use the stable company identifier for cross-dataset joins; ticker and display name are descriptive attributes.
  • Company and category aggregates inherit the coverage boundaries of the mapped artifacts included on each date.
03

Metric definitions and time grain

Daily flows and cumulative snapshots are different measure types and require different aggregation rules.

EcosystemObserved objectCollection inputDelivered measure and grainDefinition and use
npmPackageDownloads during a calendar dayDaily intervalObserved package-distribution activity for the stated day. Values are flows and can be summed across non-overlapping dates.
PyPIPackageDownloads during a calendar day, excluding mirrorsDaily intervalObserved Python package-distribution activity for the stated day. Values are flows and can be summed across non-overlapping dates.
Docker HubRepositoryTotal pulls reported by the sourceDaily interval derived from cumulative counterDaily activity derived from changes in the cumulative source counter, subject to continuity and reset controls.
NuGetPackageTotal downloads reported for the exact package IDDaily interval derived from cumulative counterA cumulative source counter for the identified package; published activity measures changes in that counter.
Terraform RegistryProviderTotal downloads across the provider's published versionsDaily interval derived from cumulative counterDaily activity derived from changes in the cumulative provider counter, calculated from source version totals.

Published daily series represent interval activity. npm and PyPI provide daily activity inputs; Docker Hub, NuGet and Terraform activity is derived from changes in cumulative source counters. The source measures above describe collection inputs; delivered activity tables contain interval values.

The observation date describes the source period or snapshot date; the retrieval timestamp describes when SoftwareIQ collected it. Missing observations remain missing. They are not converted to zero and should not be bridged automatically when calculating changes.

Compare activity within the same ecosystem and metric. Package downloads, container pulls and provider downloads are different units and must not be added together.

04

Published values and quality controls

Published activity uses consistent identities, periods and units, with a separate event-adjusted aggregate view.

LevelDefinition
Cleaned activity (value)Published interval activity in source units, including estimates where applicable.
Event-adjusted aggregate (adjusted_value)Aggregate activity after published event adjustments; falls back to cleaned activity where no adjustment differs. Version rows omit this field.

Quality controls check source identity, continuity and consistency before publication.

Source counter resets are not negative activity. Missing values remain distinct from measured zero activity.

  • Valid zero: the source produced a defensible observation whose measured activity is zero.
  • Unavailable: activity is unknown for the artifact and period.
  • Inactive artifact: an artifact outside the current active coverage set; its history remains distinct from current activity.
  • Adjusted value: the event-adjusted aggregate view, delivered alongside cleaned aggregate activity.

Daily npm version activity is estimated. Reconstructed recovery intervals are also estimates. Cleaned activity can include these estimates; the adjusted view is not an estimate indicator.

05

Version observations

Version series describe known activity for exact software-version identities.

Version activity is supported for npm, PyPI, NuGet and Terraform where published. Docker Hub supplies aggregate activity only. Version metadata provides the exact version label, membership kind and first/last observation dates. Observation dates are not release dates; release dates and release-channel classifications are not delivered fields.

Version membership is sparse. An absent point is unknown, not zero. Preserve named, other and unattributed members. Compare version activity with cleaned aggregate activity over compatible known coverage; version rows never carry aggregate event adjustments. An initial version week can be partial.

Daily history is up to 730 calendar days where supported. Stored weekly history can extend further. Maintained history incorporates corrections; retain dated extracts and publication identities for reproducible research.

06

Daily and weekly fact tables

Four delivered tables separate aggregate and software-version activity at daily and weekly grains.

value is cleaned interval activity, which can include estimates. Aggregate adjusted_value is a separate event-adjusted view and falls back to value where no adjustment differs. Raw source responses and cumulative counters are outside these fact tables. No per-point estimation flag is delivered.

adoption_daily

Grain: One aggregate activity point per artifact and day. Primary key: point_id.

FieldLogical typeNullableDefinition
point_idSTRINGNoStable adoption observation identity from artifact, optional version, grain and period end; shared with the logical MCP projection.
company_idSTRINGYesCanonical SoftwareIQ company join key. Resolve through companies; a ticker is not a stable replacement.
product_idSTRINGYesCanonical product identity (offeringId) the artifact belongs to. Product dictionaries are additional MCP resources, not current bulk tables.
artifact_idSTRINGYesCanonical package/container/provider artifact identity; source/entity_id/metric describe it in the bulk fact.
sourceSTRINGYesAdoption ecosystem: npm, pypi, nuget, docker or terraform. Unlike ecosystems have unlike units.
entity_idSTRINGYesExact source package/container/provider identity.
metricSTRINGYesSource-native activity measure; downloads/pulls/provider activity are not users, seats or revenue.
period_startDATEYesInclusive economic period start date. Job API date filters select this field.
period_endDATEYesInclusive economic period end date. Adoption API date filters select this field.
valuedecimal256(76,38)YesKPI resolved value in the stated unit; adoption cleaned activity in its source-native measure. Preserve null and exact bulk decimal representation.
adjusted_valuedecimal256(76,38)YesAggregate activity after published event adjustments, falling back to cleaned value where no adjustment differs; null remains unknown.

adoption_weekly

Grain: One aggregate activity point per artifact and complete Monday–Sunday week. Primary key: point_id.

FieldLogical typeNullableDefinition
point_idSTRINGNoStable adoption observation identity from artifact, optional version, grain and period end; shared with the logical MCP projection.
company_idSTRINGYesCanonical SoftwareIQ company join key. Resolve through companies; a ticker is not a stable replacement.
product_idSTRINGYesCanonical product identity (offeringId) the artifact belongs to. Product dictionaries are additional MCP resources, not current bulk tables.
artifact_idSTRINGYesCanonical package/container/provider artifact identity; source/entity_id/metric describe it in the bulk fact.
sourceSTRINGYesAdoption ecosystem: npm, pypi, nuget, docker or terraform. Unlike ecosystems have unlike units.
entity_idSTRINGYesExact source package/container/provider identity.
metricSTRINGYesSource-native activity measure; downloads/pulls/provider activity are not users, seats or revenue.
period_startDATEYesInclusive economic period start date. Job API date filters select this field.
period_endDATEYesInclusive economic period end date. Adoption API date filters select this field.
valuedecimal256(76,38)YesKPI resolved value in the stated unit; adoption cleaned activity in its source-native measure. Preserve null and exact bulk decimal representation.
adjusted_valuedecimal256(76,38)YesAggregate activity after published event adjustments, falling back to cleaned value where no adjustment differs; null remains unknown.

adoption_versions_daily

Grain: One known activity point per artifact, software version and day. Primary key: point_id.

FieldLogical typeNullableDefinition
point_idSTRINGNoStable adoption observation identity from artifact, optional version, grain and period end; shared with the logical MCP projection.
company_idSTRINGYesCanonical SoftwareIQ company join key. Resolve through companies; a ticker is not a stable replacement.
product_idSTRINGYesCanonical product identity (offeringId) the artifact belongs to. Product dictionaries are additional MCP resources, not current bulk tables.
artifact_idSTRINGYesCanonical package/container/provider artifact identity; source/entity_id/metric describe it in the bulk fact.
sourceSTRINGYesAdoption ecosystem: npm, pypi, nuget, docker or terraform. Unlike ecosystems have unlike units.
entity_idSTRINGYesExact source package/container/provider identity.
metricSTRINGYesSource-native activity measure; downloads/pulls/provider activity are not users, seats or revenue.
period_startDATEYesInclusive economic period start date. Job API date filters select this field.
period_endDATEYesInclusive economic period end date. Adoption API date filters select this field.
valuedecimal256(76,38)YesKPI resolved value in the stated unit; adoption cleaned activity in its source-native measure. Preserve null and exact bulk decimal representation.
version_idSTRINGYesCanonical software-version identity within an artifact.
versionSTRINGYesExact version label, including residual/synthetic labels.
kindSTRINGYesVersion membership kind: named, other or unattributed. Preserve residual members; membership is bounded and sparse.

adoption_versions_weekly

Grain: One known activity point per artifact, software version and Monday–Sunday week; initial coverage can be partial. Primary key: point_id.

FieldLogical typeNullableDefinition
point_idSTRINGNoStable adoption observation identity from artifact, optional version, grain and period end; shared with the logical MCP projection.
company_idSTRINGYesCanonical SoftwareIQ company join key. Resolve through companies; a ticker is not a stable replacement.
product_idSTRINGYesCanonical product identity (offeringId) the artifact belongs to. Product dictionaries are additional MCP resources, not current bulk tables.
artifact_idSTRINGYesCanonical package/container/provider artifact identity; source/entity_id/metric describe it in the bulk fact.
sourceSTRINGYesAdoption ecosystem: npm, pypi, nuget, docker or terraform. Unlike ecosystems have unlike units.
entity_idSTRINGYesExact source package/container/provider identity.
metricSTRINGYesSource-native activity measure; downloads/pulls/provider activity are not users, seats or revenue.
period_startDATEYesInclusive economic period start date. Job API date filters select this field.
period_endDATEYesInclusive economic period end date. Adoption API date filters select this field.
valuedecimal256(76,38)YesKPI resolved value in the stated unit; adoption cleaned activity in its source-native measure. Preserve null and exact bulk decimal representation.
version_idSTRINGYesCanonical software-version identity within an artifact.
versionSTRINGYesExact version label, including residual/synthetic labels.
kindSTRINGYesVersion membership kind: named, other or unattributed. Preserve residual members; membership is bounded and sparse.

Nullability describes the physical bulk transport schema; semantic constraints also apply. Aggregate gaps remain null. Version membership is sparse and absence is unknown. API/MCP activity uses JSON numbers; bulk Parquet preserves decimal256(76,38) and CSV preserves exact decimal text.

Bulk includes companies, company_dataset_coverage and dataset_catalog reference tables. Extended project, artifact, version and event dictionaries are separately available through entitled API/MCP resources.

Adoption Signals are available programmatically through MCP, including daily and weekly activity, project and artifact mappings, version histories, and events. S3 bulk delivery uses the listed fact and reference tables. Snowflake provisioning is discussed separately by arrangement.

Review the Adoption Signals bulk tables and loading reference.

MCP setup and agent access · Discuss bulk delivery

07

Research interpretation

Adoption Signals reveal how software distribution activity evolves across mapped artifacts, versions and ecosystems.

Package downloads, container pulls, and provider downloads can contribute evidence about adoption, developer engagement, distribution intensity, and changes in a product ecosystem. Their meaning depends on the source population, packaging model, release process, automation, mirrors, and the artifacts included in the maintained mapping.

  • Compare like measures and ecosystems; a package download and a container pull are not equivalent units.
  • Review artifact coverage and mapping changes before interpreting a company- or category-level inflection.
  • Use level and change measures consistently, particularly for cumulative source counters.
  • Do not interpret activity as revenue, paid seats, unique users, market share, or management-reported consumption unless independent evidence establishes that relationship.