Requests for comment/Custom inter-namespace tabs

This is a request for comment about adding custom inter-namespace tabs (13228).

Background
Certain wikis currently have an additional namespace tied to the classic (and traditional) article–talk combination. For example, on the English Wikinews, there's a third tab for "Opinions" which leads to a corresponding page in the Comments namespace.

The current implementation has issues, namely:


 * it's in JavaScript (n:MediaWiki:Comments.js) which means that
 * it's available only to JavaScript-enabled browsers;
 * it's doing an extra AJAX request for tab color; and
 * it's a pain in the ass to localize and customize per project.

Use-cases

 * "Opinions" tab for the Comments namespace on the English Wikinews
 * "Citations" tab for the Citations: namespace alongside the ns:0 and Talk namespaces on English Wiktionary
 * "Source" (fonte) tab for the Index namespace alongside the main namespace page on Italian Wikisource (example: Voci di campanili links s:it:Indice:Albini - Voci di campanili.djvu)

Considerations

 * Put code in a MediaWiki extension or in core???
 * Localizable tab name
 * Configurable in LocalSettings.php with an array or something?
 * Tab has to account for page existence

Plan
The considerations above need to be resolved. Once they have been, this should no more than an hour's worth of coding time, I think. It'll be much more time trying to get the code reviewed and deployed than it will be the write the damn feature.

There's code at User:Svippong/AdditionalTabs and at , also #37569. Given changes to MediaWiki, however, it may make sense to start from scratch. Again, it depends how this is going to be implemented (extension or in core).

JavaScript
Code base: n:MediaWiki:Comments.js.

Pros:
 * no need to mess with server-side

Cons:
 * available only to JavaScript-enabled browsers
 * inconfigurable
 * excessive API requests
 * inconsistent localization

Core
Patch-set: I14351aa5.

Pros:
 * localizable

Cons:
 * configuration in MediaWiki namespace
 * hackish implementation & redundant core feature
 * doesn't cover JavaScript implementation

Extension
See documentation: Extension:NamespaceRelations.

Features:
 * localizable
 * multiple custom tabs per Subject
 * allows to decide whether to show tab on Main Page (if attached to Main namespace)
 * additional query params attached for red-link tabs
 * tab sorting (e.g. Opinions|Article|Talk)
 * allows to hide Talk tab