CONTRIBUTION STRATEGY

Two Labor Markets

TDS Jan 2026 · Project 1 Analysis

March 2026

On March 24, 2026, a single recommendation in a public forum changed the trajectory of 446 student pull requests. Not because the advice was mandatory. Because it was efficient.

A Question That Seemed to Reward Real Work

The PR Merge question asked students to submit a pull request to any open-source repository and get it merged. The wording suggested genuine contribution: find a project, improve it, convince its maintainers to accept your work. It rewarded skill, persistence, and the ability to navigate unfamiliar codebases. At least, that's what it looked like.

The Two Markets

Sink Repos

PR
PR
PR
0.1hmedian merge
1.9%human review

🔍 Long-tail Repos

PR
PR
👤
17.4hmedian merge
18.9%human review

Two entirely different markets, hiding inside a single question.

The Two Markets Don't Even Compete — They Serve Different Goals

Long-tail Repos
n = 175 PRs
Sink Repos
n = 626 PRs
18.9%
Human Review
1.9%
11.4%
Required Edits
13.7%
14.3%
Code-like PRs
0.8%
9.75
Avg Score
6.63
17.4h
Merge Latency
0.1h

Long-tail repos offered 3× the score (9.75 vs 6.63) and real human review. Sink repos offered a 174× speed advantage (0.1h vs 17.4h). These are not comparable.

The Day Everything Shifted

On March 24, a recommendation appeared in the public discussion forum: kana-dojo, a repository specifically designed to accept simple Japanese character corrections, had a near-100% merge rate and merged in minutes. Within days, the composition of submissions had changed permanently.

"A single forum post redirected 446 pull requests — and nobody had to follow it."

Before and After March 24: A Forum Post Rewrote the Market

Before (n = 355)
kana-dojo share
29.3%
Sink family share
71.8%
Code-like PRs
7.3%
Median latency
0.0h
After (n = 446)
kana-dojo share
56.3%
Sink family share
83.2%
Code-like PRs
0.9%
Median latency
0.1h

kana-dojo's share nearly doubled overnight. Code-like contributions essentially vanished.

As Deadline Approached, Quality Collapsed to Zero

The most striking pattern wasn't the recommendation effect — it was what happened near the deadline. With more than three weeks to go, 29% of PRs were still going to non-sink repos. With one day left, that number was below 16%. Code-like work — PRs that involved actual programming — hit exactly 0% on the final day.

The Countdown: How Deadline Pressure Killed Real Contribution

Every percentage point the deadline ticked closer, sink-repo share rose and code quality fell. On the final day, real code work was statistically absent.

The Question Was Really Two Questions

The PR Merge question was designed to measure one thing: can you make a meaningful contribution to an open-source project? The data suggests it was measuring two things simultaneously. For students with time, it measured contribution quality. For students near the deadline, it measured deadline navigation ability — the capacity to identify the fastest path to a passing grade.

Neither measurement is wrong. Both are real skills. But they are different skills, and the grading rubric only intended to measure one of them.

"The PR question was measuring public value AND deadline navigation. Near the deadline, deadline navigation won."

The Other Five Percent

Not everyone went for the fast lane. Here are five PRs that represent the long-tail market at its best — contributions that required real work, engaged real maintainers, and passed real code review.

Fix typo and improve docstring formatting

Fixed misspelling of parameters and converted multi-line # comments to proper docstrings in _has_fully_masked_sequence() and prepare_lstm_weights. Minor cuDNN capitalization fixes.

📄 2 files +45 −18 ⚙ 2 commits 💬 5 discussions ⏱ 18.2h to merge

Why it matters: Keras has 63,000+ GitHub stars. Docstrings are used to auto-generate official API docs, so this change propagates to documentation read by millions of ML practitioners.

Add pyramid pattern printing program

Added a beginner-friendly pyramid pattern program (19 lines) with full type hints and doctests, fixing issue #13462. Followed the strict CONTRIBUTING.md checklist with 3 follow-up commits after review feedback.

📄 2 files +19 −0 ⚙ 4 commits 💬 3 discussions ⏱ open

Why it matters: TheAlgorithms/Python has 200,000+ stars — one of the most visited algorithm learning repos. Educational pattern programs are frequently referenced by CS learners.

fix: preserve SVG <use> elements and href attributes in sanitization ⭐

Fixed a bug where DOMPurify was stripping SVG <use> elements and href attributes during sanitization, causing Matplotlib SVG output to not render. Added ADD_TAGS: ["use"] and ADD_ATTR: ["href", "xlink:href"] to the DOMPurify config and updated tests to confirm the fix.

📄 2 files +51 −2 ⚙ 4 commits 💬 6 discussions ⏱ 69.3h to merge

Why it matters: Marimo is a next-generation Python notebook tool. This fixed a real rendering bug (issue #8316) for all users displaying Matplotlib SVGs — a common scientific visualization workflow. The student found a security-relevant sanitization bug and fixed it safely.

Fixed Bug: Hide "Mute all" option when all participants are moderators

Fixed a UI bug where the "Mute all" button appeared even when all participants were moderators (who can unmute themselves, making the button meaningless). Added getNumberOfNonModeratorParticipants() and used it to gate isMuteAllVisible.

📄 2 files +24 −18 ⚙ 3 commits 💬 5 discussions ⏱ 18.0h to merge

Why it matters: Jitsi Meet is used by millions for video conferencing. A confusing "Mute all" button in moderator-only meetings creates UX confusion at scale — this bug was previously reported in issue #15460.

[#13461] Remove dev server login page usage in E2E tests

Removed the UI-based DevServerLoginPage login flow from E2E tests and replaced it with direct cookie injection, eliminating the overhead of page navigation, form filling, and redirect waiting on every login call. Net −28 lines — a rare shrink-the-codebase PR.

📄 2 files +10 −38 ⚙ 4 commits 💬 3 discussions ⏱ 25.2h to merge

Why it matters: TEAMMATES is an education tool used by universities across Singapore, USA, and India. Faster E2E tests speed up the entire development cycle — and this PR deleted more code than it added.

Deadline Pressure: Full Data

Time to Deadline PRs (n) Sink % Code-like % Median Latency (h)
≥21 days out18970.9%12.2%0.0
7–20 days16373.0%1.8%0.0
2–6 days19782.2%0.5%0.2
1 day6584.6% 0.0%0.1
<24 hours18783.4%1.6%0.1
Theory & Practice

What Economics and Psychology Would Say

The two-market split wasn't an accident of student laziness. It was a rational response to information and incentives — and every major theory of rational behavior would have predicted it.

Schelling's Focal Points explains the kana-dojo cascade. When students faced an unconstrained search problem ("find a repo that will merge your PR"), they converged on the same answer not because it was the best answer, but because it was the most visible. The forum recommendation created a focal point — a coordination equilibrium that required no communication to sustain. Once enough students chose kana-dojo, choosing kana-dojo became even more obviously correct. Focal points don't just explain coordination; they explain how a single forum post can redirect 446 pull requests.

Goodhart's Law is the deeper principle at work. "When a measure becomes a target, it ceases to be a good measure." The PR merge assignment was designed to measure a student's ability to contribute to open-source software. Once students discovered that any merged PR satisfied the criterion, the measure collapsed. The sink repos were a Goodhart trap — technically valid responses that were behaviorally trivial. The 0.8% code-change rate in sink repos is Goodhart's Law expressed as a single number.

Cialdini's Social Proof accelerated the cascade. Students didn't evaluate kana-dojo and first-contributions on their merits. They evaluated them on the signal that others had already chosen them. After the March 24 recommendation, each new sink-repo submission became additional social proof for the next student. The self-reinforcing loop explains why the shift from 29.3% to 56.3% kana-dojo share happened in under a week.

For educators: If you want to measure open-source contribution, the criterion needs to specify the type of contribution — or students will find the path of least resistance and call it done. A rubric that distinguishes code changes from documentation edits from typo fixes isn't pedantry; it's the minimum necessary to prevent Goodhart collapse. The long-tail students proved that the assignment, as designed, was entirely soluble with a 30-second PR to a repo that exists to absorb them.

For students: The top-5 PRs listed above took longer, required real work, and were accepted by maintainers who didn't know they were students. Those students learned something the kana-dojo contributors didn't: how to navigate real review, respond to feedback, and write code that strangers trust. The score was the same. The skill gap was not.