Page MenuHomePhabricator

Design schema and render-time lookup with an eventual opt-out / blocklist mode in mind
Open, MediumPublic

Description

Design the schema and the render-time lookup with an eventual opt-out / blocklist mode in mind, without implementing it.

M2 is strictly an opt-in milestone — sysops configure a list of topics to surface in mainspace, and nothing else is rendered — but it is anticipated that, further out than this quarter and not next either, some communities may want to invert that logic so that the default becomes "show all available abstract articles" and the configuration becomes a blocklist rather than an allowlist. M2 does not ship that mode, but the decisions M2 takes must not actively preclude it. Concretely: the schema should be versionable or extensible (so that a mode: opt-in | opt-out field can be added later without breaking the existing shape); the render-time lookup should not hard-code assumptions that only work for an allowlist (an opt-out mode would need to know all cached QIDs and their potential local titles, not just a configured subset, which is a genuinely different data-shape problem rather than a flag flip); and internal documentation, type names, class names, and API names should avoid baking "opt-in" into their surface where a more neutral term such as "mainspace display configuration" would survive the inversion. The cost of carrying that flexibility now is small; the cost of retrofitting it into a shipped opt-in-only implementation would be meaningful. This bullet captures the intent to bear the flexibility in mind, not a commitment to build opt-out support now.