For 2.06 I'd like to switch to using composer to manage our dependencies on third party packages.
I'll try to list some of the pros and cons of using composer vs using nothing.
- One location for all third party php code. (Currently we have most of it in application/third_party, but some Yii extensions are in application/extensions)
- No more importing for third party code, Composer creates an autoloader for all installed dependencies.
- Smaller repository size.
- Cleaner commit history (an upgrade of Yii will show a 1 line change in composer.json instead of a 100 file change).
- Easier way to upgrade dependencies, no longer finding out where they came from and downloading a zip file.
- Can automatically download dependencies after each git pull via post-merge hook.
- Better dependency control, we can require a version range thereby allowing us to get updates of dependencies as long as they dont break compatibility.
1. When you initially clone the repository you will have to run composer install (and add the post-merge hook for auto updating.
2. The build server will need to use composer to get the appropriate depedencies.
Composer (www.getcomposer.org) has been gaining a lot of traction amongst many different PHP frameworks and CMSes.
If you want to checkout how it would work for you as a developer you can do the following:
1. Clone limesurvey repository (this is my fork which uses composer)
2. Go into limesurvey directory
2. Get composer:
4. Install dependencies
php composer.phar install
Optionally you can run composer install automatically after each git merge (git pull also calls git merge) by adding a post-merge hook.
If we decide to use composer we could add a simple script that initializes the hooks.
Please let me know your thoughts and opinions. Also if you feel I have left out any pros or cons list them so we can make an informed decision.