Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:100217 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 58282 invoked from network); 15 Aug 2017 13:04:21 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 15 Aug 2017 13:04:21 -0000 Authentication-Results: pb1.pair.com header.from=danack@basereality.com; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=danack@basereality.com; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain basereality.com from 74.125.83.43 cause and error) X-PHP-List-Original-Sender: danack@basereality.com X-Host-Fingerprint: 74.125.83.43 mail-pg0-f43.google.com Received: from [74.125.83.43] ([74.125.83.43:36231] helo=mail-pg0-f43.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 12/2B-34801-451F2995 for ; Tue, 15 Aug 2017 09:04:21 -0400 Received: by mail-pg0-f43.google.com with SMTP id i12so5340895pgr.3 for ; Tue, 15 Aug 2017 06:04:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=basereality-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4B1wSdkPfT/mYgKQMqxG7aC/RaYpmK9wnOgWgpnOHRo=; b=beQXJp3pCI1rdjC1FQqWU3++UvuKYHmY2FLoYQeC18x3ntqunAQUDcDq4e6LEH/yp5 YcbNLyNGDt+kIMb6qyohi7Ni47+8ZuO55YAJ8BdhNqqgjG9OqVnBPFkFNADB/Ikb4X+q pEGfo+YTuC6sFhyYjtlRL/TplgchBADFikZgOs+8vF+Ch6iR0+hVtqqzknUvHIbpMfIq Wc46UkPZCAjryewr6eJtLcfXoG/Ztu4IayrUDSwlyisc4K/Lpbgv3gCvmV5QYsGBFmlm O+u78cD9VM1qYeBehWUS9aWdDo/M4HZFtpKoKJTJieoZTdjYiz4EHMLr35VGevijijcS oaVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=4B1wSdkPfT/mYgKQMqxG7aC/RaYpmK9wnOgWgpnOHRo=; b=uLu4xcySqYq78FmFD3r/8X+ere0r0WSZjkRzJxpVTKwVk1/xTha/Vy+XaZ9HGs8PqI qgAozugOt7KiYkKWrIZGP0jlmy4MMnf22oyc1bOY8ANkiAQVEKX1ApTpF/pFNCpzeeCl 89kJz+hKEbQO3AV7A1carlBs93Yxyq9/ppZlQmTYSgoVLUNpndkSVrniDq/xtzQcR2gf +96mQw6YwwuKCpKrxPI9C3SZTuwj+FSYMGHPKQmIuHxvtZPDfkpvpkP4z4fUlewJMuh5 IpElLaRlUqTValJSNWkOLSPtHCTbkoalUhNtgrWzcm4OTpRnu/Ugqj8FdQS/lLXJrV2d 1upA== X-Gm-Message-State: AHYfb5ihmiZUfISDFykYYdzfRm3v7/rPgpgeeCb288fdALb+JRskV+mR fEa2SDgaxWXica8jsTFzrLsedRqOqYybshUapQ== X-Received: by 10.84.232.204 with SMTP id x12mr31250532plm.362.1502802258100; Tue, 15 Aug 2017 06:04:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.100.180.133 with HTTP; Tue, 15 Aug 2017 06:04:17 -0700 (PDT) X-Originating-IP: [81.143.203.71] In-Reply-To: References: Date: Tue, 15 Aug 2017 14:04:17 +0100 Message-ID: To: Kalle Sommer Nielsen Cc: Rasmus Schultz , PHP internals Content-Type: text/plain; charset="UTF-8" Subject: Re: [PHP-DEV] GD vs Imagick From: danack@basereality.com (Dan Ackroyd) On 15 August 2017 at 12:11, Kalle Sommer Nielsen 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