Files with the highest combination of change frequency and waste ratio. These are candidates for refactoring or closer review.
Cumulative contribution over time. Watch developers race as positions shift month by month.
Commit activity distribution by hour and day of week across all contributors in this repository.
Performance has many faces. Navigara breaks down the effort to visualize what parts of codebase has been changed and where energy flowed. Our Architect AI can break the performance even further into particular components and patterns.
Breakdown of file changes over time. Play the timeline to see how change types evolved across periods.
Monthly overview of bugs introduced and fixed, based on symbol-level commit analysis. Fixes show whether the original author fixed their own bug (self-fix) or someone else did (cross-fix).
Bug attribution uses symbol-level matching from commit history. For each fix commit, we look at the changed symbols (functions, classes, methods) and trace backwards to find who last modified that symbol in a non-fix commit. This person is the probable bug introducer. The algorithm only works when commits have symbol-level data from the Navigara analysis engine β the coverage rate shows what percentage of fix commits had this data available.
The current metrics model has a semantic inversion: when developer A creates a feature with a bug, they receive grow (positive). When developer B fixes that bug, they receive waste (negative). The bug creator is rewarded while the fixer is penalized. Bug attribution addresses this by explicitly tracking who introduced bugs and who fixed them, providing a more accurate picture of code quality contributions.
Currently computed client-side from commit data. Ideal server-side endpoint:
POST /v1/repositories/{repositoryId}/bug-attributions
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z"
}
Response:
{
"totalBugsAttributed": 42,
"selfFixRate": 35,
"coverageRate": 78,
"attributions": [
{
"filePath": "src/lib/auth.ts",
"symbol": "validateToken",
"introducer": { "name": "Alice", "email": "alice@co.com", "commitSha": "abc123" },
"fixer": { "name": "Bob", "email": "bob@co.com", "commitSha": "def456" },
"fixedAt": "2025-06-15T10:30:00Z",
"isSelfFix": false
}
]
}Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment β the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits in this repository.
| Hash | Message | Author | Effort |
|---|---|---|---|
| 6e5c870 | Sort live editor image navigation by visual position | Sumit Kumar | grow |
| 2d9e47f | fbsource//fbandroid/libraries/fresco/viewport/src/main/java/com/facebook/fresco/viewport:viewport | generatedunixname1639725887221340 | β |
| ab1ca93 | Remove unused local variables (batch 8/8) | Sebastian Barroso | β |
| 7cb6c9d | Modernize fresco_native_image_filters | Erin Avllazagaj | maint |
| d1396cb | Fix broken tests for fresco oncall (BasePoolTest, BetterImageSpanMarginTest) | Artem Kholodnyi | maint |
| 4ae0648 | Fix broken fbsource//fbandroid/libraries/fresco/imagepipeline/src/test/java/com/facebook/imagepipeli | generatedunixname1431085361989520 | maint |
| b1d5807 | Remove unused private methods from AnimatedRepeatedPostprocessorProducerTest | Martin Szauer | β |
| 846cb4b | Fix DecodeProducer scan number ordering + add lightweight mode to DebugOverlayHandler | Oluwatobi Victor Ateniola | grow |
| 5d4e804 | Add scan number provider + wire scan from imageInfo extras in IgVitoHelper | Oluwatobi Victor Ateniola | grow |
| 3c90678 | Add @Nullsafe annotation to 27 imagepipeline test files | Alexander Oprisnik | maint |
Sort live editor image navigation by visual position
fbsource//fbandroid/libraries/fresco/viewport/src/main/java/com/facebook/fresco/viewport:viewport
Remove unused local variables (batch 8/8)
Modernize fresco_native_image_filters
Fix broken tests for fresco oncall (BasePoolTest, BetterImageSpanMarginTest)
Fix broken fbsource//fbandroid/libraries/fresco/imagepipeline/src/test/java/com/facebook/imagepipeli
Remove unused private methods from AnimatedRepeatedPostprocessorProducerTest
Fix DecodeProducer scan number ordering + add lightweight mode to DebugOverlayHandler
Add scan number provider + wire scan from imageInfo extras in IgVitoHelper
Add @Nullsafe annotation to 27 imagepipeline test files
Average context complexity and engagement score of file changes over time. Higher complexity means more intricate changes; higher impact means broader effect on the codebase.
Contributors ranked by total performance (ETV) from analyzed commits.
| # | |||||
|---|---|---|---|---|---|
| 1 | Andy Wu79 commits | 16.1 | 1.2 | 14.7 | 0.2 |
| 2 | Artem Kholodnyi68 commits | 12.4 | 1.9 | 10.3 | 0.2 |
| 3 | generatedunixname537391475639613150 commits | 7.7 | 0 | 7.5 | 0.2 |
| 4 | Alexander Oprisnik76 commits | 6.3 | 3.3 | 1.7 | 1.4 |
| 5 | generatedunixname8900200528756451 commits | 2.9 | 0 | 2.8 | 0.1 |
| 6 | Nivaldo BondanΓ§a5 commits | 2.3 | 0 | 2.3 | 0 |
| 7 | S sumitfb15 commits | 1.9 | 0.9 | 0.6 | 0.5 |
| 8 | L lewjs7 commits | 1.5 | 0.3 | 0 | 1.2 |
| 9 | Joshua Selbo18 commits | 1.4 | 0 | 1.4 | 0 |
| 10 | N nehgupta129 commits | 1.3 | 0.5 | 0.6 | 0.3 |
| 11 | Kartavya Ramnani17 commits | 1.3 | 0.4 | 0.9 | 0 |
| 12 | V veeren9 commits | 0.9 | 0.5 | 0.5 | 0 |
| 13 | S stephenai6 commits | 0.8 | 0.2 | 0.6 | 0 |
| 14 | B borashim3 commits | 0.7 | 0.7 | 0 | 0 |
| 15 | K kalyanavarathan1 commits | 0.7 | 0 | 0.7 | 0 |
| 16 | N noreply+8313965266023205 commits | 0.5 | 0 | 0.5 | 0 |
| 17 | Peter Abbondanzo15 commits | 0.5 | 0.1 | 0.4 | 0 |
| 18 | A albocoder3 commits | 0.5 | 0 | 0.4 | 0.1 |
| 19 | G gubby2 commits | 0.3 | 0 | 0 | 0.3 |
| 20 | H hblonski1 commits | 0.3 | 0 | 0.3 | 0 |
| 21 | R rkaczmarczyk2 commits | 0.3 | 0.1 | 0.2 | 0 |
| 22 | A ameymeher3 commits | 0.3 | 0.3 | 0 | 0 |
| 23 | L lingqi2 commits | 0.2 | 0.2 | 0 | 0 |
| 24 | E etai1 commits | 0.2 | 0 | 0 | 0.2 |
| 25 | C chrohlf5 commits | 0.2 | 0 | 0 | 0.2 |
| 26 | I iliyas2 commits | 0.2 | 0 | 0 | 0.2 |
| 27 | D drhill4 commits | 0.2 | 0 | 0.2 | 0 |
| 28 | J jessechenz1 commits | 0.2 | 0.1 | 0 | 0 |
| 29 | N noreply+9244404033839613 commits | 0.2 | 0 | 0.2 | 0 |
| 30 | A ateniolatobi2 commits | 0.2 | 0.1 | 0 | 0 |
| 31 | N niclarke1 commits | 0.1 | 0 | 0.1 | 0 |
| 32 | L lielcohen1 commits | 0.1 | 0.1 | 0 | 0 |
| 33 | J jtighe2 commits | 0.1 | 0.1 | 0 | 0 |
| 34 | N noreply+16702620041343681 commits | 0.1 | 0 | 0.1 | 0 |
| 35 | Christoph Purrer1 commits | 0.1 | 0 | 0 | 0.1 |
| 36 | S shridhar1 commits | 0.1 | 0.1 | 0 | 0 |
| 37 | I iliazas3 commits | 0.1 | 0.1 | 0 | 0 |
| 38 | E ermatt1 commits | 0.1 | 0 | 0.1 | 0 |
| 39 | A andrewcox1 commits | 0.1 | 0.1 | 0 | 0 |
| 40 | K kamil.godlewski1 commits | 0.1 | 0 | 0 | 0.1 |
| 41 | A anafin2 commits | 0.1 | 0 | 0.1 | 0 |
| 42 | K kevinlin1 commits | 0.1 | 0 | 0.1 | 0 |
| 43 | T tomrozanski3 commits | 0.1 | 0 | 0.1 | 0 |
| 44 | L limeng1 commits | 0.1 | 0.1 | 0 | 0 |
| 45 | H halsibai3 commits | 0.1 | 0 | 0 | 0 |
| 46 | A alehkot3 commits | 0.1 | 0 | 0 | 0 |
| 47 | P pierrem2 commits | 0.1 | 0 | 0.1 | 0 |
| 48 | N noreply+20042171371445861 commits | 0.1 | 0 | 0.1 | 0 |
| 49 | A afadli1 commits | 0.1 | 0 | 0 | 0 |
| 50 | N nidhia1 commits | 0.1 | 0.1 | 0 | 0 |
| 51 | N noreply+15079798342236826 commits | 0.1 | 0 | 0.1 | 0 |
| 52 | J jfmoon2 commits | 0.1 | 0 | 0.1 | 0 |
| 53 | R rratmansky2 commits | 0.1 | 0 | 0.1 | 0 |
Repository
fresco
An Android library for managing images and the memory they use.
Average Developer Performance (ETV)
Year-by-year Trend:+1047%