On 15 August 2017 at 12:11, Kalle Sommer Nielsen <ka...@php.net> wrote:
> the maintainer of Imagick,

Hey, that's me!

> and work together with the maintainer of Imagick,

Actually, it would be lovely if anyone contributed to Imagick.

I've been the maintainer of the extension for a little over three
years and have spent a significant amount of time:

* increasing the test coverage.
* working with the ImageMagick guys upstream to fix memory access issues.
* porting the extension to PHP 7.
* extending the extension to compile against both ImageMagick 6 and 7.
* adding to the documentation in the PHP manual
* creating a site that has working examples http://phpimagick.com/

In that time, other than minor bug fixes there have been almost no
contributions from other people.

> then I don't see any showstoppers for why it

There are some serious downsides to shipping Imagick with PHP.

1. Imagick is a thin wrapper around the ImageMagick library, as
opposed to full-fledeged api to an external service, like PDO is. This
means Imagick is only guaranteed to work with the version of
ImageMagick it was compiled against.

This is also true of GD, but we ship the GD library as part of PHP src.

We would need to either also ship the ImageMagick source with PHP, or
people would need to recompile PHP whenever they upgraded the
ImageMagick library. Either of those choices would more exciting than
hoped for.

2. Releasing Imagick with PHP means that the release cycles would need
to be sync'ed. This has proven to be inconvenient in the past when an
extension has wanted to change the api, but was forced to wait due to
needed to wait for the next minor/major version of PHP.

3. There are significant chunks of work that ought to be done for a
version 4 of Imagick, that probably ought to be done before thinking
about bringing it in as a core extension. The two main things that
spring to mind are:

i) The code that allows iterating over Imagick objects that contain
multiple images is just bogus, and doesn't do what anyone would expect
it to do. Just removing the iterating, and making people explicitly
access images inside an Imagick object, is probably the right thing to
do, but obviously a major breaking change.
https://github.com/mkoppanen/imagick/issues/122

ii) A significant amount of functionality was added to ImageMagick 7.
Exposing this functionality through Imagick is going to take quite a
bit of work, and may result in some breaking changes.

There are probably other issues, but those are the big ones I can
think of right now.

To summarise, even if it is a good idea to ship Imagick as a core
extension, it will take a significant portion of time to make it
happen.

Some what ironically _I have never used Imagick in production_, so
I've been maintaining a reasonably large code base for no personal
benefit, other than the 'glory' of being an open source maintainer*.
I've already been thinking of ways to remedy that, but that is a
discussion for another day.

While I'm working a full time job, I wouldn't be able to commit to
spending anything close to the amount of time required to do this.
No-one else has touched the source code in multiple years, and aren't
up-to-speed with what is happening in the ImageMagick 6 -> 7
migration, so the first steps to even consider moving Imagick to be a
core extension would either be:

i) Someone else step up and start helping with maintaining Imagick and
then in a few months have them look at the work required.

ii) Finding a company/someone to hire me for the multiple months
required to get Imagick into a position where it would be conceivable
to ship it as a core extension.

cheers
Dan
Ack

* my landlord does not accept 'open source glory' in lieu of rent payment.
Also, a related tweet - https://twitter.com/MrDanack/status/895797231923671040

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to