DataTalksClub / DataTalksClub/website
Remove obsolete community-notes sections from current Zoomcamp lessons
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Outcome
Remove the obsolete “Community notes” contribution furniture from every current, non-legacy Zoomcamp curriculum and prevent it from returning through zoomcamp-ops. This is a source-content and source-contract change, not a website-template suppression.
Normative references:
zoomcamp-ops/docs/shared-curriculum-v2.mdzoomcamp-ops/STRUCTURE.mdzoomcamp-ops/templates/unit.md_docs/runbooks/course-content-push-and-pull.md_docs/architecture/database-only-content.md
Boundary and content decision
- “Current, non-legacy” means the public root curriculum: for schema v2, root
NN-modulematerial selected bycourse.yaml.current_cohort/curriculum: current; for schema v1, the existing root current curriculum graph. It includes lesson Markdown and GitHub-facing current module indexes, and live or self-paced delivery. legacy: true,curriculum: github_archive, and historicalcohorts/<id>trees are excluded and immutable. Stock Markets Analytics remains schema v1; removing its one obsolete current-root section does not authorize a schema migration.- Remove normalized
Community notesheadings, “Did you take notes?”/“Add links above this line” prompts, empty sentinels, and note links whose only purpose is that obsolete contribution block. - Do not silently discard a resource that is part of the taught material. During inventory, a link with independent curricular value must either be moved under a specific topic/resources heading with a short reviewed rationale or be escalated for course-owner decision. Generic personal-note collections are removed.
- Machine Learning’s 86 ordinary
## Noteslesson sections contain substantial inline learner-authored summaries/code and are explicitly preserved. They are not contribution placeholders and must not be matched by the new rule.
Scope
- Inventory every occurrence, case-insensitively, across current root lesson files and current module
README.mdfiles in all six public Zoomcamp repositories; classifyempty prompt,note-link collection, orpotential curricular resource. The grooming audit found 32 affected current files: AI Dev Tools 4, Data Engineering 7, LLM 5, Machine Learning 9, MLOps 6, and Stock Markets Analytics 1; implementation must reconcile to that baseline or explain drift. - Apply the reviewed removal/reclassification in each of those six source repositories.
- Update
zoomcamp-opstemplates, structure/curriculum guidance, checker, diagnostic catalogue, fixtures, and tests so current v2 material cannot reintroduce this obsolete section/prompt. The currenttemplates/unit.mdinstruction that community notes “stay” must be removed/replaced. - Push focused reviewed commits per source repository and a separate
zoomcamp-opscontract commit, then sync the website from accepted source SHAs and verify rendered current lessons.
Non-goals
- Editing any legacy/archive cohort or migrating the schema-v1 Stock Markets course.
- Removing ordinary authored uses of the words “community” or “notes” in lesson prose.
- Deleting topic-specific external resources merely because a community member created them.
- Removing or rewriting Machine Learning’s 86 substantive
## Noteslesson sections. - Hiding source content with CSS/template filters or adding a website-side sanitizer/fallback.
- Combining changes with actual-homework publication (#423) or video/navigation work (#425).
- Redesigning lesson pages.
Dependencies and safety
- Land the
zoomcamp-opscontract/checker change before or with source cleanups so regressions fail CI. Source repositories must consume the accepted checker revision according to their existing workflow. - AI Dev Tools and Data Engineering had unrelated dirty work during grooming. Use clean pinned worktrees or coordinate ownership; never stash, overwrite, or mix those edits.
- #423 and #425 overlap some repositories but are not hard dependencies. Keep separate commits, validation, sync runs, and rollback units.
Acceptance criteria
- A repository/path inventory reconciles the 32-file/six-repository grooming baseline and records why each matched link/block was removed, retained/reclassified, or escalated.
- Current root material contains no normalized
Community notesheading and no solicitation/sentinel such as “Did you take notes?”, “Share community notes…”, or “Add … notes above this line.” - Note links that existed only inside the obsolete contribution block are removed. Any retained external resource has a topic-specific placement and a recorded curricular rationale.
- No file under a
legacy: true,github_archive, or historical cohort tree changes. Stock Markets changes only its one reviewed current-root obsolete section; its schema/route/content model does not migrate. - All 86 substantive Machine Learning
## Notessections remain present and byte-stable unless a source-owner-approved move is recorded; the checker treats them as valid content. -
zoomcamp-opsno longer recommends Community notes intemplates/unit.mdor normative guidance. New current v2 lessons/module indexes containing the normalized obsolete heading or sentinel fail with a named, actionable diagnostic; archive fixtures remain accepted. - Checker tests cover heading case/level variations, exact/near sentinel phrases, v1/v2 current lesson and module-index scope, ordinary prose false positives, substantive
## Notes, retained topic-specific resources, and archive exclusion. - Every affected source repository passes its own checks plus the accepted
zoomcamp-opschecker. Commits are focused and pushed tomain; SHAs and rollback commits are recorded. - Website sync/import from those SHAs succeeds and replays as a no-op. Rendered current lesson bodies contain no obsolete block; database-owned source provenance points to the accepted commit.
- Current lesson/module routes, headings, images, code links, navigation, and legacy routes remain unchanged apart from the reviewed content removal/reclassification.
Verification scenarios
Repository
- Run the inventory before and after; after-state is zero obsolete matches in current scope, 86 preserved ML
## Notessections, and an unchanged count/digest for archive scope. - Add checker fixtures for current and archived versions of the same heading/prompt; assert only current content is rejected.
- Run each affected repository’s prescribed checks from a clean worktree, then run the website course-source parser/import tests.
- Sync each accepted SHA twice into an isolated database and compare row identities/counts/provenance.
Browser
- Open representative current lessons that previously showed an empty prompt, a note-link collection, and a reclassified curricular resource; compare with the source decision table.
- Verify desktop and 390px mobile in light/dark mode: no blank section gap, stray divider, or broken adjacent heading/navigation remains.
- Open a representative legacy/archive cohort and verify its route/content is unchanged.
Blocker rule
If a link’s curricular value cannot be determined from the surrounding current source, stop on that link and request course-owner disposition rather than deleting it by assumption.
Evidence to attach
- Before/after inventory with source SHAs and classifications.
zoomcamp-opscontract/checker test output and per-course check output.- Website sync/replay output and representative rendered screenshots.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read the linked zoomcamp-ops docs, especially templates/unit.md, STRUCTURE.md, docs/shared-curriculum-v2.md, and the checker guidance, then inventory the six repositories against the 32-file baseline. Use the current-root and archive boundaries before changing source Markdown. Done means reviewed removals or reclassifications, preserved ML Notes and archives, passing checker tests, and successful website sync verification.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, github, markdown, python, yaml
- Domain
- content, documentation, release, testing-qa, tooling
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100