On Mon, Sep 26, 2011 at 8:13 AM, Olivier Beaton <olivier.beaton(a)gmail.com>wrote;wrote:
I've started a Request for comment on MW for the
decorification of MW
features into extensions. I am not talking about removing features that we
distribute to our users. Simply how we include them in the mediawiki
software (core vs extensions) especially now that our new installer allows
us to package extensions in the distribution.
http://www.mediawiki.org/wiki/Requests_for_comment/decorify_into_extensions
I would appreciate hearing the community's thoughts on this. Even if you
feel we're not at that point yet, ask yourself when you will be, and if
it's
better to start on a different path now.
Having sat in on some of today's IRC chat along these lines, my basic
comments come down to:
* Broadly speaking, putting modular self-contained features in extensions is
good practice
* Bundling some extensions with the default installer is something I
advocate
I tend to reject parts of your premise though: most
Wikimedia/Wikipedia-specific work today is in fact already being done in
extensions -- and they don't magically migrate to core, they actually mostly
stay as extensions.
Allow me to list the extensions referenced in the config for all our
Wikimedia sites, all of which are extensions and not in core:
include( $IP . '/extensions/PagedTiffHandler/PagedTiffHandler.php' );
include( $IP . '/extensions/timeline/Timeline.php' );
include( $IP . '/extensions/wikihiero/wikihiero.php' );
include( $IP . '/extensions/SiteMatrix/SiteMatrix.php' );
include( $IP . '/extensions/CharInsert/CharInsert.php' );
include( $IP . '/extensions/CheckUser/CheckUser.php' );
include( $IP . '/extensions/ParserFunctions/ParserFunctions.php' );
require( $IP . '/extensions/Cite/Cite.php' );
include( $IP . '/extensions/InputBox/InputBox.php' );
include( $IP . '/extensions/ExpandTemplates/ExpandTemplates.php' );
include( $IP . '/extensions/ImageMap/ImageMap.php' );
include( $IP . '/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php'
);
include( $IP . '/extensions/DoubleWiki/DoubleWiki.php' );
include( $IP . '/extensions/Poem/Poem.php' );
include( $IP . '/extensions/UnicodeConverter/UnicodeConverter.php' );
require( $IP . '/extensions/CategoryTree/CategoryTree.php' );
include( $IP . '/extensions/ProofreadPage/ProofreadPage.php' );
include( $IP . '/extensions/LabeledSectionTransclusion/lst.php' );
include( $IP . '/extensions/SpamBlacklist/SpamBlacklist.php' );
include( $IP . '/extensions/UploadBlacklist/UploadBlacklist.php' );
include( $IP . '/extensions/TitleBlacklist/TitleBlacklist.php' );
include( "$IP/extensions/Quiz/Quiz.php" );
include( "$IP/extensions/Gadgets/Gadgets.php" );
include( $IP . '/extensions/OggHandler/OggHandler.php' );
include( $IP . '/extensions/AssertEdit/AssertEdit.php' );
include( "$IP/extensions/ContactPageFundraiser/ContactPage.php" );
include( "$IP/extensions/FormPreloadPostCache/FormPreloadPostCache.php"
);
include( "$IP/extensions/SkinPerPage/SkinPerPage.php" );
include( "$IP/extensions/skins/Schulenburg/Schulenburg.php" );
include( "$IP/extensions/skins/Tomas/Tomas.php" );
include( "$IP/extensions/skins/Donate/Donate.php" );
include(
"$IP/extensions/ContributionReporting/ContributionReporting.php" );
include( "$IP/extensions/ExtensionDistributor/ExtensionDistributor.php"
);
include( $IP . '/extensions/GlobalBlocking/GlobalBlocking.php' );
include( $IP . '/extensions/TrustedXFF/TrustedXFF.php' );
include( $IP . '/extensions/ContactPage/ContactPage.php' );
include( $IP . '/extensions/SecurePoll/SecurePoll.php' );
include( "$IP/extensions/EmailCapture/EmailCapture.php" );
include "$IP/extensions/TitleKey/TitleKey.php";
include( $IP . '/extensions/OAI/OAIRepo.php' );
include( $IP . '/extensions/intersection/DynamicPageList.php' );
include( $IP . '/extensions/Renameuser/SpecialRenameuser.php' );
include( $IP . '/extensions/Nuke/SpecialNuke.php' );
include( "$IP/extensions/AntiBot/AntiBot.php" );
include( "$IP/extensions/TorBlock/TorBlock.php" );
include( "$IP/extensions/RSS/RSS.php" );
require( $IP . '/extensions/ScanSet/ScanSet.php' );
require( $IP . '/extensions/Cite/SpecialCite.php' );
require( "$IP/extensions/UserThrottle/UserThrottle.php" );
require( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
require( "$IP/extensions/ConfirmEdit/FancyCaptcha.php" );
require( "$IP/extensions/Oversight/HideRevision.php" );
include $IP . '/extensions/AntiSpoof/AntiSpoof.php';
include "$IP/extensions/CentralAuth/CentralAuth.php";
require(
"$IP/extensions/DismissableSiteNotice/DismissableSiteNotice.php" );
include "$IP/extensions/CentralNotice/CentralNotice.php";
include "$IP/extensions/WikimediaMessages/WikimediaMessages.php";
include "$IP/extensions/WikimediaMessages/WikimediaLicenseTexts.php";
include "$IP/extensions/SimpleAntiSpam/SimpleAntiSpam.php";
include "$IP/extensions/Collection/Collection.php";
include "$IP/extensions/NewUserMessage/NewUserMessage.php";
include "$IP/extensions/CodeReview/CodeReview.php";
include "$IP/extensions/AbuseFilter/AbuseFilter.php";
include ( "$IP/extensions/ClientSide/ClientSide.php" );
include ( "$IP/extensions/CommunityVoice/CommunityVoice.php" );
include ( "$IP/extensions/PdfHandler/PdfHandler.php" );
require( "$IP/extensions/Vector/Vector.php" );
require( "$IP/extensions/WikiEditor/WikiEditor.php" );
require_once( "$IP/extensions/PrefStats/PrefStats.php" );
require_once( "$IP/extensions/PrefSwitch/PrefSwitch.php" );
require "$IP/extensions/UserDailyContribs/UserDailyContribs.php";
require "$IP/extensions/ClickTracking/ClickTracking.php";
include "$IP/extensions/CustomUserSignup/CustomUserSignup.php";
require_once( "$IP/extensions/ReaderFeedback/ReaderFeedback.php" );
require_once( "$IP/extensions/LocalisationUpdate/LocalisationUpdate.php"
);
require_once( "$IP/extensions/LandingCheck/LandingCheck.php" );
require "$IP/extensions/FundraiserPortal/FundraiserPortal.php";
require_once(
"$IP/extensions/DonationInterface/donate_interface/donate_interface.php" );
require_once(
"$IP/extensions/DonationInterface/payflowpro_gateway/payflowpro_gateway.php"
);
require_once( "$IP/extensions/GlobalUsage/GlobalUsage.php" );
require_once( "$IP/extensions/ArticleFeedback/ArticleFeedback.php" );
require_once(
"$IP/extensions/StrategyWiki/ActiveStrategy/ActiveStrategy.php" );
require_once( "$IP/extensions/CommunityHiring/CommunityHiring.php" );
require_once(
"$IP/extensions/CommunityApplications/CommunityApplications.php" );
include( "$IP/extensions/VariablePage/VariablePage.php" );
include( "$IP/extensions/ContributionTracking/ContributionTracking.php"
);
require_once( "$IP/extensions/UploadWizard/UploadWizard.php" );
require_once( "$IP/extensions/Narayam/Narayam.php" );
include( "$IP/extensions/GoogleNewsSitemap/GoogleNewsSitemap.php" );
require_once( "$IP/extensions/cldr/cldr.php" );
require_once( "$IP/extensions/DisableAccount/DisableAccount.php" );
require_once( "$IP/extensions/WikimediaIncubator/WikimediaIncubator.php"
);
require_once( "$IP/extensions/WikiLove/WikiLove.php" );
require_once( "$IP/extensions/EditPageTracking/EditPageTracking.php" );
require_once( "$IP/extensions/MoodBar/MoodBar.php" );
require_once( "$IP/extensions/MobileFrontend/MobileFrontend.php" );
include( "$IP/extensions/SubPageList3/SubPageList3.php" );
require_once( "$IP/extensions/Math/Math.php" ); // Math move out from
core in MW 1.18
require_once( "$IP/extensions/Babel/Babel.php" );
Things like LanguageConverter have been in MediaWiki for several years and
date to younger times for the extension interface. Math wasn't broken out
into an extension until 1.18 because it predates the extension interface
entirely! Some also work along both language- and functional lines --
LanguageConverter could perhaps turn into its own module, but then where do
we bundle the language rules?
In general, things that are infrastructural -- that provide bases for other
things to work with -- are probably not unreasonable to leave where they
are.
-- brion