--
till
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)
On Thursday, October 25, 2012 at 7:21 PM, Thomas Bruederli wrote:
> I'm taking this to the dev list again since the conversation became more
> general and interesting for all.
>
> till wrote:
> > On Thursday, October 25, 2012 at 6:59 PM, Thomas Bruederli wrote:
> >
> > > till wrote:
> > > >
> > > > On Thursday, October 25, 2012 at 11:00 AM, Thomas Bruederli wrote:
> > > >
> > > > > Cor Bosman wrote:
> > > > > > One thing that i find a little disappointing about this
> > > > > > packagist/composer combo is that it really just is a bookmark list.
> > > > > > Users have to actually move to github or google to fetch the plugin.
> > > > >
> > > > >
> > > > >
> > > > > That's true but on the other hand it encourages people to publish
> > > > > their
> > > > > stuff on github which clearly has it's advantages.
> > > >
> > > >
> > > >
> > > > Hey guys – there is a major confusion! ;-)
> > > >
> > > > What you do is this:
> > > >
> > > > Use the `composer.json` file in roundcubemail (currently available in
> > > > master only), and add this to repositories:
> > > >
> > > > "repositories": [{
> > > > "type": "composer",
> > > > "url": "http://plugins.roundcube.net/"
> > > > }]
> > > >
> > > > Then it require — something like
> > > >
> > > > "cor/message_highlighter"
> > > >
> > > > ./composer.phar install — and it's installed.
> > >
> > >
> > > I was now playing around with the composer scripts and tried to figure out
> > > a proper way how Roundcube plugins can actually be installed using
> > > composer. Here are some issue I came across:
> > >
> > > * one has to add the plugins wished to be installed to the required
> > > section
> > > of the composer.json file from the local Roundcube installation. That
> > > means
> > > one has to alter a file which is actually distributed with Roundcube. A
> > > possible solution could be to ship Roundcube with a file named
> > > composer.json.dist which one has to copy to a local copy named
> > > composer.json which can then be managed through composer.
> >
> >
> >
> > The .dist is a good idea.
> > >
> > > * Then all the components are installed into the "vendor" directory and
> > > not
> > > to plugins/. I already stitched together some scripts which hook into
> > > composer's "post-package-install" and "post-package-uninstall" hooks and
> > > then create or remove a symlink to the installed packaged within the
> > > plugins directory of Roundcube. They could even add or remove the
> > > particular entry to the plugins property in config/main.inc.php.
> >
> >
> >
> > Another idea would be this:
> >
> > We add a `"type": "roundcube-plugin"` and a custom installer to install
> > somewhere else.
> >
> > Then all the plugin authors need to do is set this type and require the
> > plugin installer.
> >
> > This wouldn't require post-install-cmd for every plugin — just a simple
> > type.
>
> Sounds good. What would it take to create such a customer installer? And
> how would it be shipped?
Not a whole lot — did this before for ZF1 modules to be installed in
`app/modules` to confirm to ZF's weird project structure:
https://github.com/easybib/EasyBib_Core_Composer_Zf1ModuleInstaller/blob/master/src/EasyBib/Core/Composer/Zf1ModuleInstaller.php
I'll port this later.
On shipping:
* the installer is a composer package itself (roundcube/plugin-installer)
* plugins 'require' it so it's ensured it's installed first
* done
>
> > > * The required PEAR packages are also installed into "vendor" while
> > > they're
> > > actually shipped with Roundcube itself. I suggest to remove them entirely
> > > from the composer.json file and only handle plugins there.
> >
> >
> >
> > I would rather not check them into GIT anymore.
> >
> > If you run from a git clone, you would `./composer.phar install` first and
> > get everything installed.
>
> That would only work for people who have PHP 5.3 with composer and who have
> shell access.
If you run round cube from a git-clone, you don't have these things? :-)
Besides, you can also do this:
* git clone …
* cd roundcubemail
* ./composer.phar install
And then FTP it up.
> >
> > Or you would download a complete release which includes all the
> > dependencies.
>
> I guess we still have to provide that for all the users who install
> Roundcube through FTP on a shared hosting or whatever.
It's not like in this case they could use `pear install something` either. You
can do it locally.
We can also see if we can figure out a frontend to pull in more plugins. But I
haven't done this yet.
> >
> > To create such a release, we would just `composer.phar install` before we
> > zip/tar it up?
>
> That's actually a good plan. However, it happens that Roundcube ships with
> modified PEAR packages which are not yet publicly available. But I guess
> for such cases we can put these modified libs into a separate repository
> which is again referenced through the composer.json.dist file.
Correct. The code should be in forks.
Maybe a separate thread, but we should also try to get the code into upstream.
Let me know if I can help.
> > >
> > > * If plugins require further components or libraries though their
> > > composer.json file, they'll also be installed into the local vendor
> > > directory but Roundcube might fail to load them. Therefore the Roundcube
> > > core would have to use the autoloading scripts installed by composer.
> > > That's something I still have to implement and test.
> >
> >
> >
> > if (file_exists("vendor/autoload.php")) {
> > require "vendor/autoload.php";
> > }
>
>
>
> That's what I had in mind, yes.
>
> > > The goal was to first evaluate whether composer would be a good base for
> > > Roundcube's plugin repository. While it seems to be OK for publishing
> > > plugins, their installation seems to be a bit tricky and limited to
> > > systems
> > > running PHP 5.3 because of composer's requirements and heavy use of
> > > namespaces.
> >
>
Just to make sure: Namespaces are not required in plugins. Only composer itself
needs 5.3. But it can install PHP 5.2 code as well.
> >
> >
> > In all honesty — PHP 5.3 has been out for forever. 5.2 EOL'd 2 years ago:
> > http://www.php.net/archive/2010.php#id2010-12-16-1
> >
> > Even Debian has 5.3 nowadays. ;-))
> >
> > But yeah — this would come with the requirement for 5.3. But I don't think
> > this will be a huge issue, unless we make it one.
>
> I guess we had that conversation recently in the list and some people still
> objected against dropping PHP 5.2 support.
I never said RoundCube itself would have to drop it.
But for the plugin installer, it's just a requirement. Plugins can also
leverage PHP 5.3 features — just add the PHP version in "require".
Till
_______________________________________________
Roundcube Development discussion mailing list
[email protected]
http://lists.roundcube.net/mailman/listinfo/dev