In T407153, we provided an additional lint source for wikitext editing, so now we have both WikiLint and Parsoid linting running side-by-side. They will often overlap, and potentially disagree.
We should provide preference(s) permitting users to select which linters they want (none, one or the other, or both).
Technical notes
We currently only support boolean preferences in CodeMirror. We can get away with the status quo here because we want to allow users to toggle each linter off independently, meaning they can live as separate preferences. However, it might make things a bit clunky; For example the new preferences for WikiLint and Parsoid would need to be dependent on the "Lint the code" preference.
I think more ideally, the existing lint preference could take a string or numerical ID, so 0 for no linting, wikilint / 1, or parsoid/ 2. Strings will be more future-proof as linters change, but IDs are better for storage. If we go the route of non-boolean preferences, this will need to be carefully thought out. $wgCodeMirrorDefaultPreferences is also ill-prepared for this, as it interprets true/false as whether the preference should be on or off by default, and string values as content models and numbers as namespace IDs. Thus we'll likely need something like $wgCodeMirrorDefaultPreferenceValues that supplements the existing config setting. It would only be used for preferences that take non-boolean values, as a means to specify which value should be the default. Whether the preference is on or off by default, and for which namespace and/or content model, would still be dictated by $wgCodeMirrorDefaultPreferences.
CodeMirrorPreferences should be able to interpret all config settings and generate a sensible UI without any knowledge of what the preferences are or what they mean. This will mean we can freely add and remove features without having to maintain anything beyond configuration.