Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:97060 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 67598 invoked from network); 19 Nov 2016 17:42:15 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Nov 2016 17:42:15 -0000 Authentication-Results: pb1.pair.com smtp.mail=kalle.php@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=kalle.php@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.223.195 as permitted sender) X-PHP-List-Original-Sender: kalle.php@gmail.com X-Host-Fingerprint: 209.85.223.195 mail-io0-f195.google.com Received: from [209.85.223.195] ([209.85.223.195:34080] helo=mail-io0-f195.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id BB/01-62522-5FE80385 for ; Sat, 19 Nov 2016 12:42:14 -0500 Received: by mail-io0-f195.google.com with SMTP id n13so1569913ioe.1 for ; Sat, 19 Nov 2016 09:42:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=Q1QSA5KRaaHLtf0UEpa7JvSn4HL5r44Y+yKYJfdUrMk=; b=KUlxNXIrGloACqwLR6VcszbxuqIErIRAxceqxe94e0tQddjv00lk78EkX0hm/jd+7Y tKvuL1vT0T+BUufavHKLs+ATOja+6gWLZQ1ost7bWwETRSSr8hO2d+WC/VhgJ/CzMC/i gy3UY5+MjS3eEKZzhH1zRLdcjqB1i5BKj8ftvju6Swm+coGDUaLdz6SqdYWWVM1o9568 v3aPRwj0dUK9t5P1fN0gKbsM4Ok4mGik+T880/uzhBtwTOWHohuXXKJNfw60CNb9gy3t 3tr6t/f40QgRe9tf0M8zTm9g7OfNhM6HsjijEmakA8DG93eZapiaMIN9kN/oqwRbB3zm lpYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=Q1QSA5KRaaHLtf0UEpa7JvSn4HL5r44Y+yKYJfdUrMk=; b=GvIpoIt8dexkf4s9zMErm6fVwdqZDdAPLSwgecrZZ3uImnZVCmTY/Z+OVG0K6/yDs2 LFtRhNhs1WWRl0AsvP1ruRXsp/cUpq6VeyZlmdDwGYpbTxJZgSZrIO9Tr/kPF56SU6pS YqAsMwTxY40lIr2ZhkIQnRHfKKcBH7SrjlSgn3fkYlppnK5EmgoWUHMztEvKMlVZdcYY 3MCTsjtlzqAu3/YBJJZrCA8Ff+DnXHp/7II9fCihUA7T7ZrISePfMhsc/cDitLh9nold c3LGQeN7OgJcoQ5Fy0SqSUpJiI0dFkxv/7J6pbAbcHbtHDBhtfTKiW09ZTXO1ZZ9QUYx 8Zww== X-Gm-Message-State: AKaTC01Qq+xJIW7CqIX3Vy88H49NabilbEGT31cy7LQ9E1vp4EbLVtTaS3nwT/3VmCNqIrr2A6n70GL0dkOJwQ== X-Received: by 10.107.174.88 with SMTP id x85mr4512837ioe.125.1479577330661; Sat, 19 Nov 2016 09:42:10 -0800 (PST) MIME-Version: 1.0 Sender: kalle.php@gmail.com Received: by 10.107.138.234 with HTTP; Sat, 19 Nov 2016 09:42:10 -0800 (PST) In-Reply-To: <94840a5a-39e2-5255-e9c5-c011f00d392b@gmail.com> References: <94840a5a-39e2-5255-e9c5-c011f00d392b@gmail.com> Date: Sat, 19 Nov 2016 18:42:10 +0100 X-Google-Sender-Auth: QzLdVOOZS2yYeneM7wL4LkAqRvA Message-ID: To: Rowan Collins Cc: Internals Content-Type: text/plain; charset=UTF-8 Subject: Re: [PHP-DEV] [RFC] Deprecations for PHP 7.2 From: kalle@php.net (Kalle Sommer Nielsen) Hi Rowan 2016-11-19 18:23 GMT+01:00 Rowan Collins : > On a broader note, I would like to restate my desire for some kind of road > map or plan of roughly when 8.0 is expected, to inform decisions on things > like this. Does "deprecate in 7.2" mean removal in 2 years time, or 5, or > 10? > > Previously I've been answered with "the Big Feature of 8.0 will be JIT", but > I am not a fan of tying the deprecation and feature policy to "whenever we > happen to have a rewrite of the engine ready"; it muddles product branding > with API versioning. If JIT isn't ready for 10 years, does that mean we have > to wait 10 years to break BC? And if it's ready in 2018, does that mean > everything deprecated in 7.2 has to be immediately dropped after just one > year? Should we decouple the Zend Engine version from the language version, > and use separate semantic versions for each? I kinda liked the model we had back in the late 5.x series (namely starting with 5.3 from 2009), although that was before we had a release plan decided, it did make a lot of sense to deprecate some features, of course taking into consideration what they are and the impact they have. The model we had was deprecate in x.z, then remove in z+1, things to this list include safe_mode, register_globals for example, not that these were as ground breaking changes because of the movement to use PHP5. I think create_function(), as mentioned, is a feature worthy of being deprecated in one version, then removed in the next. Like you also mention, major versions are really rare and I think it should be kept that way, or at least until we reach a point where we literally cannot improve PHP7 anymore without major changes, such as the case for PHP 5.6 was. Side note, I still think that with the amount of work, changes and features, PHP 5.3 was almost worth the role of being a major version, but lets not side track the subject ;-) With our current model, that means that when we deprecate something, users got a year to upgrade their code, if they are bleeding edge users, but most are likely not, so they have more time to upgrade the code, and to be fair, we try to do the removals in moderate parts to not overwhelm developers who are upgrading their code, or projects that supports a wide range of PHP versions, such as phpB which support PHP 5.3.0+. After that 1 year, we do offer 2 years additional security fixes support, so I think that there is more than enough time for our community to update their code bases. PHP 7.0 was a great success externally for migration. So to answer your question in a short without much more rambling: I think we should deprecate in x.z, then remove in x.z+1 depending on the feature, if we say "Oh let's remove this in the next major", chances are that major won't even be branches for years, and at that time, it could be forgotten. -- regards, Kalle Sommer Nielsen kalle@php.net