Methodology
How we compute the metrics and grades shown on oosmetrics.com.
Data Collection
We fetch repository statistics from the GitHub API once per night using a GitHub App installation (15,000 requests/hour). Raw daily values (star count, fork count, open issues, contributor activity, release history) are stored as timestamped snapshots.
Before computing any metric, raw daily deltas are smoothed using an Exponential Moving Average (EMA) with α = 0.3:
ema_today = 0.3 × raw_today + 0.7 × ema_yesterday
This reduces the impact of single-day spikes (viral posts, sudden traffic) and surfaces sustained trends.
Star Growth Rate
Growth rate is computed as a CAGR-style (Compound Annual Growth Rate) daily rate over a rolling window:
growth_rate(N) = (stars_today / stars_N_days_ago)^(1/N) − 1
We report both the 7-day and 30-day growth rates. The 7-day rate is more responsive to recent momentum; the 30-day rate is more stable. Both are computed on EMA-smoothed star counts.
A value of +0.018 means the repository gains approximately +1.8% of its star count each day.
Acceleration
Acceleration is the linear regression slope of the last 7 daily growth_rate_7d values:
acceleration = slope of OLS fit over growth_rate_7d[last 7 days]
A positive slope means the growth rate itself is increasing — the repository is gaining momentum. We label acceleration into five categories:
| Label | Slope threshold |
|---|---|
| Surging | > +0.005 |
| Rising | +0.001 to +0.005 |
| Steady | −0.001 to +0.001 |
| Cooling | −0.005 to −0.001 |
| Declining | < −0.005 |
Innovation Score
The innovation score (0–100) is a weighted composite of four activity signals, each normalised against the corpus maximum observed that day:
innovation_score = 0.30 × commit_frequency_norm + 0.30 × contributor_growth_norm + 0.20 × issue_resolution_norm + 0.20 × release_cadence_norm
| Component | Weight | Measures |
|---|---|---|
| Commit frequency | 30% | Average commits per week over the last 30 days |
| Contributor growth | 30% | Unique new contributors in the last 30 days |
| Issue resolution | 20% | Ratio of issues closed to issues opened (last 30 days) |
| Release cadence | 20% | Number of releases published in the last 30 days |
Each component is capped at 1.0 before weighting, so a single outlier repo cannot compress the rest of the distribution.
Percentile Grades
Every metric is graded by percentile rank within the tracked corpus — not on an absolute scale. A grade of A+ means the repository is in the top 2–5% for that metric across all tracked repos on that day.
| Grade | Percentile range |
|---|---|
| S | Top 1% |
| A+ | Top 2–5% |
| A | Top 5–10% |
| B+ | Top 10–20% |
| B | Top 20–35% |
| C | Top 35–55% |
| D | Top 55–75% |
| F | Bottom 25% |
Grades are recomputed nightly after every ingestion run. A repository's grade can change even if its absolute metric value is unchanged, because the rest of the corpus changes too.
Rising Stars
Repositories created fewer than 90 days ago are excluded from the main rankings. They appear in a dedicated “Rising Stars” section with their own grade pool, preventing very new repos from distorting the overall distribution.
Update Frequency
All data is refreshed once per night (00:00 UTC). The timestamp shown on each repository page reflects when the snapshot was last recorded.