This has been discussed before, to an extent.
So, the idea is to have default extras, where the syntax would be something like:
rich[-markdown]
Assuming the package has markdown as a default extra, the default experience would then the same as what rich[markdown] is today and to get the equivalent of rich today, you’d have to do rich[-markdown].
There’s some details to figure out around this, like what to do if an extra deselects another extra and stuff.