back
docs

Open-Source Repository Scoring Matrix

A comprehensive framework for evaluating the quality, health, and maturity of an open-source repository. Each category is scored 0-10, with weighted importance reflecting modern (2025) expectations.


1. First Impressions & Discoverability (Weight: 8%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
Repository nameCryptic, unclear purposeSomewhat descriptiveImmediately conveys purpose, memorable
Description / taglineMissing or vaguePresent but genericConcise, compelling, includes key differentiators
Topics / tagsNoneA few relevant tagsWell-chosen tags covering language, domain, and use case
Social proof signals< 10 stars, no forksModerate engagementStrong star count, forks, used-by count, sponsor badges
Logo / brandingNoneBasic iconProfessional logo, consistent visual identity

2. README Quality (Weight: 12%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
Hero sectionNo overview, jumps into detailsBasic descriptionClear value prop, badge row (build, coverage, version, license), optional banner image
Quick start / installationMissing or brokenPresent but incompleteCopy-paste ready, multiple package managers, verified working
Usage examplesNoneOne basic exampleProgressive examples (basic to advanced), real-world scenarios
Feature overviewNot listedBullet list of featuresFeature matrix with status indicators, comparison to alternatives
Architecture overviewNoneBrief mentionDiagrams (Mermaid or images), clear explanation of how it works under the hood
Table of contentsMissing on long READMEsPresentAuto-generated, well-organized sections
BadgesNone1-2 badgesBuild status, coverage, version, downloads, license, Discord/community link
Demo / screenshotsNoneStatic screenshotGIF/video demo, live playground link, interactive examples
”Why this over X?”No positioningBrief mentionHonest comparison table with alternatives, clear differentiation

3. Documentation (Weight: 12%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
Docs siteREADME onlyGitHub wiki or basic docs folderDedicated docs site (Docusaurus, Starlight, VitePress, etc.) with search
API referenceNonePartial or auto-generated onlyComplete, auto-generated from source with hand-written guides layered on top
Tutorials / guidesNoneOne getting-started guideProgressive learning path: quickstart, guides, deep dives, cookbook/recipes
Doc information architecture (Diataxis)Unstructured docs in README onlySome separation (e.g. a docs folder)Clear Diataxis structure: tutorials, how-to, reference, explanation
Conceptual docsNoneBriefExplains mental models, architecture decisions, and “why” behind design choices
Migration guidesNoneChangelog mentions breaking changesDedicated migration guides per major version with codemods where applicable
SearchNoneBasicFull-text search with good relevance ranking
Versioned docsNoneLatest onlyDocs versioned per release, easy switching between versions
i18nEnglish only (acceptable for most)Partial translationsCommunity-driven translations with clear contribution process

4. Code Quality & Architecture (Weight: 15%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
Code organizationFlat file dump, no clear structureBasic folder structureClear module boundaries, consistent naming conventions, logical separation
Type safetyNo types, any-heavyPartial typingFull type coverage, exported types for consumers, strict mode
Linting & formattingNoneLinter present but inconsistentEnforced via CI (ESLint/Biome/Clippy/etc.), consistent style, no warnings
Error handlingSilent failures, bare throwsTry-catch with generic errorsTyped errors, error codes, actionable error messages, recovery paths
Dependency hygieneBloated deps, outdated, abandoned packagesReasonable depsMinimal deps, well-maintained deps, lockfile present, dependency policy documented
Bundle size / footprintNo considerationReasonable but not optimizedTree-shakeable, documented size, size-limit CI checks
Abstraction qualityLeaky abstractions, god filesDecent separationClean interfaces, single responsibility, composable design, escape hatches
ConfigurationHardcoded valuesBasic config supportLayered config (defaults, env, file, runtime), validated, well-documented options
Backward compatibilityBreaks frequently without noticeSemver mostly followedStrict semver, deprecation warnings before removal, codemods for migrations

5. Testing (Weight: 10%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
Unit testsNone or trivialCore paths coveredComprehensive coverage including edge cases, readable test names
Integration testsNoneBasic happy pathsTests against real dependencies (databases, APIs) or high-fidelity mocks
E2E testsNoneMinimalCritical user flows covered, runs in CI, cross-browser/platform
Coverage trackingNoneCoverage report existsCoverage gates in CI, trend tracking, meaningful thresholds (not vanity 100%)
Test qualityTests that test nothing, brittle mocksDecent assertionsTests document behavior, test titles read as specs, minimal mocking
Snapshot / visual regressionNoneBasic snapshotsVisual regression testing for UI components, reviewed snapshots
Performance / benchmark testsNoneBasic benchmarksRegression benchmarks in CI, comparison against alternatives published
Fuzz / property testingNoneNone (acceptable for most)Property-based or fuzz testing for parser/serialization/security-critical code

6. CI/CD & Automation (Weight: 8%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
CI pipelineNoneBasic test run on pushMulti-stage: lint, type-check, test, build, size check, security scan
CI speed> 20 min5-20 min< 5 min with caching, parallelization, incremental checks
PR checksNoneTests must passRequired checks: tests, lint, type-check, size, changelog entry, preview deploy
Release automationManual copy-pasteSemi-automatedFully automated: changesets/conventional commits, auto-changelog, auto-publish
Multi-platform CISingle OSPrimary OS + one otherMatrix testing across OS, runtime versions, and dependency versions
Bot automationNoneDependabot/RenovateDependency updates, stale issue management, auto-labeling, auto-merge for deps
Preview deploymentsNoneNone (acceptable)PR preview deployments for docs/demo sites

7. Security (Weight: 10%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
SECURITY.mdNoneBasic contact infoClear vulnerability reporting process, response time SLA, scope definition
Dependency scanningNoneDependabot alerts enabledAutomated scanning (Snyk, Trivy, etc.) in CI, blocking on critical/high
Supply chainNo protectionsLockfile presentSigned commits, provenance attestation, SLSA compliance, minimal install scripts
Secret managementSecrets in code (critical fail)No secrets in codeSecret scanning enabled, documented practices, rotate-on-leak procedures
Audit historyNoneNone (acceptable for small projects)Third-party audits for security-critical code, published reports
Permission modelOverly permissiveReasonablePrinciple of least privilege, documented permissions, scoped tokens
CVE responseNo track recordSlow patchesFast response, advisories published, backported fixes to supported versions

8. Community & Governance (Weight: 10%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
CONTRIBUTING.mdNoneBasic “PRs welcome”Detailed guide: setup, workflow, testing, commit conventions, PR process
Code of conductNoneTemplate CoC, not enforcedAdopted CoC with clear enforcement process and named enforcers
Issue templatesNoneBasic templateSeparate templates for bugs, features, questions with required fields
PR templateNoneBasic checklistChecklist covering tests, docs, breaking changes, linked issues
Discussion forumsNoneGitHub Issues used for everythingGitHub Discussions, Discord/Slack, clear separation of support vs. bugs vs. features
Governance modelSingle maintainer, no processInformal collaborationDocumented governance (BDFL, committee, RFC process), clear decision-making
Contributor recognitionNoneContributors listed in READMEAll-contributors bot, release notes credit, contributor spotlight
RoadmapNoneVague mentions in issuesPublic roadmap (GitHub Projects, dedicated page), community input process
ResponsivenessIssues/PRs ignored for monthsWeeks for responseMedian first response < 48h, clear SLA expectations set

9. Maintenance & Project Health (Weight: 10%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
Commit frequencyDead for 6+ monthsSporadic burstsRegular commits, consistent cadence (doesn’t need to be daily)
Release cadenceNo releases or years betweenIrregular releasesPredictable release schedule, clear versioning, LTS policy for mature projects
Issue triageHundreds of untriaged issuesSome labelingActive triage, labeled, prioritized, stale issues managed
PR review turnaroundPRs rot for monthsWeeksDays for first review, clear feedback, mentoring tone for new contributors
Bus factorSingle maintainer, no succession plan2-3 active contributorsMultiple maintainers across organizations, documented succession/transition plan
Funding / sustainabilityNo funding modelGitHub Sponsors or similarSustainable funding (corporate sponsors, foundation, Open Collective), transparent finances
Deprecation communicationBreaking changes without noticeChangelog mentionsDeprecation warnings in code + docs, migration path, reasonable sunset timeline
Backward supportOnly latest versionOne prior major versionDefined support policy, security backports to supported versions

10. Developer Experience (DX) (Weight: 10%)

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
Time to first working exampleHours of config, dependency hell15-30 min< 5 min from clone to working example, or instant via playground
Error messagesCryptic stack tracesReadable errorsActionable messages with fix suggestions, links to relevant docs
IDE supportNo types, no intellisenseBasic typesFull type inference, JSDoc/docstrings, IDE plugin if applicable
Debug experienceconsole.log onlyBasic debug supportSource maps, debug mode with verbose logging, named objects in devtools
Local dev setupUndocumented, fragileDocumented manual setupOne-command setup (devcontainer, docker-compose, Nix flake, Makefile)
Playground / REPLNoneNone (acceptable)Online playground, Stackblitz/CodeSandbox template, REPL
ChangelogNone or auto-generated noiseMaintained CHANGELOG.mdWell-written, categorized (breaking, features, fixes), linked to PRs/issues
Escape hatchesLocked in, no extensibilityPlugin system or hooksWell-documented extension points, middleware/plugin API, raw access when needed

Criteria0-3 (Poor)4-6 (Adequate)7-10 (Excellent)
LICENSE fileMissing (critical fail)PresentPresent, standard OSI-approved license, SPDX identifier in package manifest
License clarityAmbiguous, custom licenseStandard but potentially confusing (dual license)Clear single license, FAQ addressing common questions
CLA / DCONo contributor agreementInformalClear CLA or DCO process, automated (CLA bot or DCO sign-off)
License compatibilityDependencies with incompatible licensesMostly compatibleAudited dependency licenses, SBOM generation, all compatible
Commercial use clarityUnclear if commercial use is allowedLicense technically allows itExplicitly stated, no rug-pull risk (see recent BSL/SSPL drama)

Scoring Summary Template

CategoryWeightScore (0-10)Weighted Score
First Impressions & Discoverability8%
README Quality12%
Documentation12%
Code Quality & Architecture15%
Testing10%
CI/CD & Automation8%
Security10%
Community & Governance10%
Maintenance & Project Health10%
Developer Experience (DX)10%
Licensing & Legal5%
Total100%/10

Scoring Guide

  • 9-10: Best-in-class. Reference implementation others should study.
  • 7-8: Production-ready. Trustworthy for critical infrastructure.
  • 5-6: Usable with caveats. Acceptable for non-critical use, shows investment.
  • 3-4: Risky. Significant gaps that create real costs for adopters.
  • 0-2: Avoid or fork. Fundamental issues that signal abandonment or carelessness.

Context-Dependent Adjustments

Not every repo needs a 10 in every category. Apply these modifiers:

  • Solo hobby project: Relax governance, community, and release cadence expectations. Weight code quality and README higher.
  • Critical infrastructure / security tooling: Weight security, testing, and maintenance much higher. Expect audits and formal processes.
  • Developer tool / library: Weight DX, documentation, and bundle size higher. Time-to-first-example is king.
  • Framework: Weight architecture, backward compatibility, migration guides, and ecosystem/plugin support higher.
  • Data / ML project: Add criteria for reproducibility, dataset documentation, model cards, and compute requirements.
  • Early-stage / pre-1.0: Accept lower scores on governance and release cadence, but README and quick start should still be strong.

Red Flags (Automatic Deductions)

These are signals that should raise immediate concern regardless of other scores:

  1. No license file - legally unusable
  2. Secrets committed to repo history - security failure
  3. No tests at all - reliability unknown
  4. Last commit > 12 months ago with open critical issues - likely abandoned
  5. Maintainer hostility in issues/PRs - toxic community
  6. Relicensing history without clear communication - trust issue
  7. Vendored/copied code without attribution - legal/ethical risk
  8. Force-pushed to main with no branch protection - governance failure
  9. Single massive file (> 5000 LOC) - maintainability nightmare
  10. README says “TODO” in critical sections - not ready for adoption