Page MenuHomePhabricator

Ensure code under includes/libs does not depend on MediaWiki code
Open, Needs TriagePublic

Description

Code under includes/libs should be self-contianed and must not depend on code outside that directory. This is mostly the case, but some unwanted dependencies have crept in, which should be fixed.

Reference: https://www.mediawiki.org/wiki/Library_infrastructure_for_MediaWiki
Code search: https://codesearch.wmcloud.org/search/?q=use+MediaWiki%5C%5C&files=%5Eincludes%2Flibs&excludeFiles=&repos=MediaWiki+core

Event Timeline

Change #1107959 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] filebackend: Remove dependencies on MediaWiki code

https://gerrit.wikimedia.org/r/1107959

Tgr renamed this task from Ensure code under includes/libs does not depen on MediaWiki code to Ensure code under includes/libs does not depend on MediaWiki code.Jan 2 2025, 5:22 PM

Change #1107969 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] HttpStatus: remove dependency on HeaderCallback

https://gerrit.wikimedia.org/r/1107969

Change #1107973 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] MimeAnalyzer: move ZipDirectoryReader to library

https://gerrit.wikimedia.org/r/1107973

The hardest dependency to fix seems to be the one in MultiHttpClient, see the discussion at the bottom of T202352.

(Ideally, of course, we would not have two separate HTTP components, just one that's librarized and uses a PSR standard. That's T110022: Move HTTP-related code from MW to its own library.)

Change #1108122 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] filebackend: Improve debug messages by passing native context or CSV

https://gerrit.wikimedia.org/r/1108122

Change #1108126 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] mime: Add missing `@group` to ZipDirectoryReaderTest

https://gerrit.wikimedia.org/r/1108126

Change #1107973 merged by jenkins-bot:

[mediawiki/core@master] MimeAnalyzer: move ZipDirectoryReader to library

https://gerrit.wikimedia.org/r/1107973

Change #1108126 merged by jenkins-bot:

[mediawiki/core@master] mime: Add missing `@group` to ZipDirectoryReaderTest

https://gerrit.wikimedia.org/r/1108126

Change #1108122 merged by jenkins-bot:

[mediawiki/core@master] filebackend: Improve debug messages by passing native context or CSV

https://gerrit.wikimedia.org/r/1108122

Change #1107959 merged by jenkins-bot:

[mediawiki/core@master] filebackend: Remove dependencies on MediaWiki code

https://gerrit.wikimedia.org/r/1107959

Change #1107969 merged by jenkins-bot:

[mediawiki/core@master] HttpStatus: remove dependency on HeaderCallback

https://gerrit.wikimedia.org/r/1107969

Seems like the only thing left here to do is renamespacing TempFSFileFactory?

Change #1113132 had a related patch set uploaded (by Gergő Tisza; author: Gergő Tisza):

[mediawiki/core@master] filebackend: Renamespace TempFSFileFactory to match rest of library

https://gerrit.wikimedia.org/r/1113132

Seems like the only thing left here to do is renamespacing TempFSFileFactory?

That and T296433

Also, globals (as we found out while trying to librarize Message).

codesearch

Mostly just wfDeprecated (I think we can just replace that with trigger_error); a few wfTimestamp, which is more tricky (I guess MWTimestamp would have to be librarized?).

I wonder if PHPCS could enforce this?

Change #1113132 merged by jenkins-bot:

[mediawiki/core@master] filebackend: Renamespace TempFSFileFactory to match rest of library

https://gerrit.wikimedia.org/r/1113132

I wonder if PHPCS could enforce this?

For things in the MediaWiki namespace, and a handful of well known global functions, etc. But I really want to start using deptrac for this, because we could in the future use that to enforce more complex rules, such as "only special pages can depend on special pages". See T383887.

a few wfTimestamp, which is more tricky (I guess MWTimestamp would have to be librarized?).

The ConvertibleTimestamp lib should cover that I think.

Hm right, wfTimestamp uses MWTimestamp but doesn't seem to make use any of its MW-specific additions.

Change #1128553 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Fix uses of TempFSFileFactory's old class alias

https://gerrit.wikimedia.org/r/1128553

Change #1128553 merged by jenkins-bot:

[mediawiki/core@master] Fix uses of TempFSFileFactory's old class alias

https://gerrit.wikimedia.org/r/1128553

Change #1130724 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] GlobalFunctions: Use ConvertibleTimestamp directy in wfTimestamp()

https://gerrit.wikimedia.org/r/1130724

Change #1130724 merged by jenkins-bot:

[mediawiki/core@master] GlobalFunctions: Use ConvertibleTimestamp directy in wfTimestamp()

https://gerrit.wikimedia.org/r/1130724