Joshua Smithrud
90d · built 2026-09-10
Performance
What Joshua Smithrud shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+0.8engineers
delivers like 1.8 (1.8x pre-AI)
Output (ETV)
17.9ETV
+312.7% vs 4.3 prior
Features share
8.5%
−8.1 pp vs prior window
Fixes share
0.8%
−6.6 pp vs prior window
Work mix
8.5% Features7.5% Maintenance16.1% Tests67% Docs0.8% Fixes
47 commits over 90 days, ending 2026-09-10.
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 70 %
- By Features share
- Top 97 %
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
| Repo | Commits | ETV |
|---|---|---|
| FluidFramework | 39 | 18.1 |
Most impactful commits
Top 10 by ETV in the last 90 days.
- 3.6ETVdocs: Update Client Requirements template for 3.0 release (#27802) Updates the Client Requirements template with updates for 3.0. This content is embedded in the majority of our library package READMEs. [AB#78964](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/78964)github.com-microsoft-FluidFramework · a12075a9 · 2026-08-24
- 1.9ETVdocs: Port remaining github wiki documentation to `docs` directory (#27731) Also enables a couple more linter rules to enforce common structure (single top-level heading as document title). Contents from the wiki were copied as-is, save for the following changes: - Links were updated to use relative file paths where appropriate - Line formatting was updated to follow our guidelines - All documents were given top-level headings - Other misc. formatting/linting violations were fixed per the linter configurations - An obsolete document on our breaking changes policy (pre-2.0) was removed, and redirect notice pages were removed This PR also sets up LFS for binary asset storage, with associated documentation. --------- Co-authored-by: Alex Villarreal <716334+alexvy86@users.noreply.github.com>github.com-microsoft-FluidFramework · 72b09c62 · 2026-07-31
- 1.7ETVdocs: Update help template to fix wiki link (#27963) The wiki was migrated into the repo, but this template was not correctly updated to match.github.com-microsoft-FluidFramework · feeefc59 · 2026-08-13
- 1.6ETVdocs: Update generated README content to use Simplified Technical English (#28082) Updates markdown-magic templates and all derived collateral to use ASD-STE100 Simplified Technical English for better accessibility. ### Reviewer Guidance Most of the changed files are derived content. I recommend reviewing the changes under `tools/markdown-magic` first.github.com-microsoft-FluidFramework · 2c07249f · 2026-08-27
- 1.4ETVdocs: Update contribution guidelines to fix wiki link (#27960) The wiki was migrated into the repo, but this template was not correctly updated to match.github.com-microsoft-FluidFramework · e5f44926 · 2026-08-13
- 1.1ETVimprovement(website): Enhanced `ApiLink`s (#28033) Updates the website infra's `ApiLink` "shortcode" react component to support TSDoc-like reference syntax. The implementation leverages metadata produced by the API docs build for richer link support. This removes the need for documentation authors to know generated filenames and heading IDs. For a simple API link, redundant child content can now be omitted: ```mdx // Before <ApiLink packageName="fluid-framework" apiName="TreeView"> TreeView </ApiLink> // After <ApiLink package="fluid-framework" api="TreeView" /> ``` Members can be addressed directly instead of using a generated heading ID: ```mdx // Before <ApiLink packageName="fluid-framework" apiName="TreeView" headingId="upgradeSchema-method" > upgradeSchema </ApiLink> // After <ApiLink package="fluid-framework" api="TreeView.upgradeSchema"> upgradeSchema </ApiLink> ``` TSDoc selectors distinguish declarations that share a name and select overloads when necessary: ```mdx <ApiLink package="fluid-framework" api="(Tree:variable)" /> <ApiLink package="fluid-framework" api="(Widget:class).(run:2)" /> ```github.com-microsoft-FluidFramework · 87c1f5df · 2026-09-01
- 0.7ETVbuild: Add `docs` directory with lint/formatting tooling, prepopulated with a subset of content from our github wiki (#27712) "Guidelines" content copied from github wiki to serve as initial validation of the new directory + tooling. More content will be ported in future PRs.github.com-microsoft-FluidFramework · e238a6bd · 2026-07-20
- 0.6ETVtest(tree): Update sandboxing demo to use a MessagePort for communication between the Host and the Guest (#28149) The Host and the Guest send runtime data changes and acknowledgments through a real `MessagePort`. The permutation test uses a two-channel relay to control message delivery in each direction.github.com-microsoft-FluidFramework · 4c3f2a69 · 2026-09-08
- 0.5ETVtest: Update example packages to use playwright instead of jest + puppeteer (#27964) Migrate the repository's example packages and related DevTools end-to-end tests from Jest + Puppeteer to [Playwright](https://playwright.dev/). This removes the Jest-Puppeteer configuration and type workaround package, adds shared Playwright configuration, and updates build and CI wiring to run and publish Playwright test results. The `client-utils` browser hash tests bundle and execute the production browser entry point so regressions in the browser implementation cannot be masked by copied test logic. To facilitate the new Playwright configurations, Tinylicious now supports selecting its listening port via command line argument. [AB#78597](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/78597)github.com-microsoft-FluidFramework · 5e1fc825 · 2026-08-21
- 0.5ETVrefactor(website): Enhance API shortlinks to support staged renames (#28151) The website publishes from `main`, but it consumes API documentation artifacts from release branches. As a result, documentation cannot normally link to a new or renamed API until the related API changes are released. `ApiLink` and `PackageLink` now support temporary transitions for these cases. ### New APIs Add `newApi` when the published API documentation does not contain the target. The component renders inline code until the target exists. It then renders a link and writes a cleanup warning. ```mdx <ApiLink package="fluid-framework" api="NewApi" newApi /> <PackageLink package="new-package" newApi /> ``` ### Renamed APIs and packages Use `{ previous, new }` to support both sides of a rename. The component links to `new` when it exists and otherwise links to `previous`. ```mdx <ApiLink package="fluid-framework" api={{ previous: "OldApi", new: "(NewApi:class)" }} /> <PackageLink package={{ previous: "old-package", new: "new-package" }} /> ``` When the new target becomes available, the build writes a warning. Replace the transition object with the new value: ```mdx <ApiLink package="fluid-framework" api="(NewApi:class)" /> <PackageLink package="new-package" /> ``` Invalid and ambiguous API references remain build errors. Explicit child content is preserved in all transition states.github.com-microsoft-FluidFramework · 1f0cc67d · 2026-09-08