@@ -191,17 +191,46 @@ Your PR does not have to be merged — what matters is that it demonstrates you
191191can read the codebase, write reasonable code, and engage with code review
192192feedback.
193193
194- ### What makes a good starter PR
194+ ### Finding an issue to work on
195195
196- Start with an existing issue — look through the
197- [ open issues] ( https://github.com/Netflix/metaflow/issues ) for ones tagged
198- ` good first issue ` , or ask in #gsoc if you're having trouble finding one that
199- fits. A well-scoped bug fix or small improvement tied to a real issue tells us
200- far more than a large, unsolicited feature.
196+ ** Do not create new issues** without discussing them with the team in #gsoc
197+ first. We want to make sure any new issue is worth tackling before effort goes
198+ into it.
201199
202- ** Before you start coding** , check whether someone else is already working on
203- the issue (look for linked PRs or comments claiming it). If there's no
204- activity, leave a comment saying you plan to work on it.
200+ ** Only work on issues tagged ` gsoc ` .** These are issues we've vetted as
201+ meaningful, appropriately scoped, and ready for contribution. If you're not
202+ sure what to pick, ask in #gsoc and we'll point you to something that fits
203+ your skills.
204+
205+ Multiple people may work on the same issue — this is expected. The best PR
206+ wins. If you want to mention in #gsoc that you're working on something,
207+ that's fine for coordination, but it doesn't reserve the issue.
208+
209+ ### Working on bug fixes
210+
211+ When you pick up a bug fix, ** reproduce the issue first.** Write a test that
212+ demonstrates the bug exists under normal conditions — not some pathological
213+ edge case. If you can't reproduce it, comment on the issue and ask for
214+ clarification before writing a fix.
215+
216+ Your test should be a real ** end-to-end test** , not just a unit test. Unit
217+ tests that mock out the system under test don't give us confidence that the
218+ fix actually works in practice. Look at the
219+ [ integration test suite] ( https://github.com/Netflix/metaflow/tree/master/test/core )
220+ for examples of the level of testing we expect — your fix should include a
221+ test at this level that fails before the fix and passes after.
222+
223+ ### Review burden
224+
225+ Every PR takes mentor time to review. We want to spend that time where it
226+ counts — actually helping you do meaningful work, not triaging PRs we can't
227+ use.
228+
229+ ** A contribution should be worth more to the project than the time it takes to
230+ review it.** Maintainer bandwidth is finite. PRs where the review effort
231+ exceeds the benefit to the project — bulk low-quality submissions, verbose
232+ AI-generated walls of text, or drive-by fixes — shift the validation burden
233+ onto us, and that's not sustainable.
205234
206235### What to avoid
207236
@@ -219,6 +248,11 @@ activity, leave a comment saying you plan to work on it.
219248 has an open PR for it. Multiple people independently building the same
220249 feature wastes everyone's time.
221250
251+ - ** Unit-test-only PRs.** A fix accompanied only by unit tests that mock
252+ the internals does not demonstrate that the fix works. Include an
253+ end-to-end test using the
254+ [ integration test framework] ( https://github.com/Netflix/metaflow/tree/master/test/core ) .
255+
222256- ** Docs PRs to the wrong repo.** Documentation lives in
223257 [ metaflow-docs] ( https://github.com/Netflix/metaflow-docs ) , not the main
224258 Metaflow repo.
@@ -234,6 +268,16 @@ If you use AI tools (LLMs, code generators, copilots, etc.) for any part of
234268your contribution or proposal, you must disclose it and be able to explain
235269every line you submit. This applies to both code and written proposals.
236270
271+ ** Human in the loop.** You must review and fully understand every line before
272+ submitting. You need to be able to explain and defend your changes
273+ independently.
274+
275+ ** Do not use an LLM to respond to review feedback.** When we ask a question
276+ about your code, we are evaluating whether * you* understand it. Responses that
277+ are clearly LLM-generated — whether copied verbatim or lightly edited — tell
278+ us you don't. If you can't engage with review feedback in your own words, the
279+ PR is not ready and will be closed.
280+
237281Proposals or PRs that appear to be unreviewed AI output will be rejected.
238282Using AI to assist your work is fine; using it to replace your understanding
239283is not.
0 commit comments