Le 02/07/13 18:30, Jeroen De Dauw a écrit :
> Over the past few months a number of people have been poking at Composer
> [0] support for MediaWiki [1]. Today I had a look at this and found that
> though we are close to getting this to work, there are a few remaining
> problems to be tackled.
<snip>
> 1. MediaWiki needs to load the composer autoloader when present.
> 2. Installing extensions leaves the composer.json file modified.
> 3. Not clear how to best install an extension
<snip>

Hello,

At first, thank you Jeroen from bringing this topic there and for all
your investment on Composer =)


== creating a project the composer way ==

I talked a bit with #composer people (there are some available during
European business hours).   Here is a rough summary of my conversation
with them this morning.

Composer being a dependency manager for your project, if you create a
wiki locally you should create your own composer.json then require
mediawiki/core and your extensions.   IE MediaWiki itself would just be
a dependency for your site project.  So the process would be something like:

 mkdir mysite && cd !:1
 composer init -n --name=hashar/mysite --stability=dev

 // Then install MediaWiki
 composer require mediawiki/core:dev-REL1_21

 // And the abuse filter extension with its dependencies:
 composer require  mediawiki/abuse-filter:dev-REL1_21

You end up with the following hierarchy:

 /extensions/AbuseFilter
 /extensions/AntiSpoof
 /vendor/composer
 /vendor/mediawiki/core

The vendor/autoload.php is supposed to be required in your site and you
would get everything you need.   MediaWiki core does not provide an
autoload entry in its composer.json.


== custom bundle ==

I have been pointed to https://github.com/symfony/symfony-standard which
is a basic application making use of the Symfony framework. It has a few
dependencies one of them being symfony/symfony (the full framework).

If one wanted to update the 'upstream' framework or ship additional
dependency, he would just have to edit the symfony-standard
composer.json and add them there.


== Composer hooks ==

Seldaek on IRC pointed to Composer hooks such as pre-update-cmd and
pre-install-cmd.  They could be used in MediaWiki core composer.json to
load an extensions.json and inject dependencies on the fly.  This way
people could git clone mediawiki/core and then edit their local json to
add extensions they want.

Some basic doc is at http://getcomposer.org/doc/articles/scripts.md


== Embedded Composer ==

The idea is to get Composer inside your application this way it can
fetch the dependencies it needs.

Doc:
https://github.com/dflydev/dflydev-embedded-composer#why-would-i-want-to-embed-composer

Presentation:
http://srcmvn.com/blog/2013/05/23/symfony-live-2013-portland-embedded-composer/



If we want to do it the composer way, MediaWiki should be a standalone
framework that you install under vendor and don't care much about.  Then
you could add to your project the extensions you need.   Ideally your
/index.php would be something like:

 <?php
 require 'vendor/autoload.php'
 $wgSomeFeature = 'bah';

 new MediaWiki()->run();



-- 
Antoine "hashar" Musso


_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to