Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:70363 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 75083 invoked from network); 24 Nov 2013 22:18:23 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 24 Nov 2013 22:18:23 -0000 Authentication-Results: pb1.pair.com smtp.mail=rowan.collins@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=rowan.collins@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 74.125.82.45 as permitted sender) X-PHP-List-Original-Sender: rowan.collins@gmail.com X-Host-Fingerprint: 74.125.82.45 mail-wg0-f45.google.com Received: from [74.125.82.45] ([74.125.82.45:33932] helo=mail-wg0-f45.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id B7/94-51929-E2B72925 for ; Sun, 24 Nov 2013 17:18:23 -0500 Received: by mail-wg0-f45.google.com with SMTP id y10so1300676wgg.12 for ; Sun, 24 Nov 2013 14:18:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=3FOdUCj67dPIGn2+B0y4w7tGBv/f1Iwk3LPDoKp/vqs=; b=F6j7pY0YF7vc1kboBnoKRe7OmkTmz3su6wYBB/S6maP9SxYMyHXw51ZbtUp7f/6ITV Rjk6Qyr6yvrb68fOddV6LcUhz7aQPf5lG8LF8K+OgyFDpYTBNyKu1QA7CgzCMmgG3ffP M89yc8p641SiV5Zx/BM7r2y5d0Bcw1sQc1r68NzGtQQGXhBomWzzIDbI0mfMRUcJAlnk 4pPQZYCasZwUG1GY2fgm+QVpa2ReUfrgo0ArZ8rSGiJ3yBTksnVs4w3OH3KXQUNgnUG4 7wLWuUscwSozn7MntdKkm78pStpEO7RQ9G4LJsr2lMlR0zTxVN2plwwFnUMtyclVsm0j ZYNw== X-Received: by 10.194.240.41 with SMTP id vx9mr200857wjc.70.1385331499969; Sun, 24 Nov 2013 14:18:19 -0800 (PST) Received: from [192.168.0.2] (cpc19-brig17-2-0-cust25.3-3.cable.virginm.net. [81.101.201.26]) by mx.google.com with ESMTPSA id nb16sm40873771wic.0.2013.11.24.14.18.18 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 24 Nov 2013 14:18:19 -0800 (PST) Message-ID: <52927B28.9050609@gmail.com> Date: Sun, 24 Nov 2013 22:18:16 +0000 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 MIME-Version: 1.0 To: internals@lists.php.net References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] Making "backwards compatibility" discussions more constructive From: rowan.collins@gmail.com (Rowan Collins) On 20/11/2013 11:41, Ferenc Kovacs wrote: > Personally I think that our current release process RFC only solves half of > the problem. > We were seeing slow adoption rates for new versions and also users > complaining about every second micro version breaking backward > compatibility (some of those concerns were ofc. magnified), but having the > current release process, which promises complying with the current best > practices, aka semantic versioning (http://semver.org/). Then, on 21/11/2013 10:59, Julien Pauli wrote: > I agree that we keep telling people "no no I don't want to merge your patch > as it breaks BC", but we have no idea as when we'll release a new major , > so that all those little patches can show up. > > I agree with Ferenc, saying that we need to plan major releases. > For example, for 5.6 , we could also have branched a major, aka, a 6.0 , > and break lots of things, like cleaning the INI settings like Yasuo says in > a reply to this topic. As somebody fairly new to the community (as opposed to the language) I'd like to lend my support to this line of reasoning. Semantic Versioning is good at saying what should *not* be in a *minor* release, but doesn't really say what *should* be in a *major* release - that is a question of vision and ambition. If you'll excuse the pun, I think the "elephpant in the room" here is the failure of the PHP 6 Unicode project. Abandoning that work was probably the right decision, and the choice of features in 5.3 and 5.4 flowed naturally from that decision, but it has had a couple of unfortunate effects: - Declaring that all 5.x releases *after* 5.4 are to be backwards compatible is a bit like making a New Year's Resolution in June: it is a perfectly sound aim, but it all sounds a bit fuzzy when you try to explain it. - There is a general unease at the idea of launching a PHP 6.0 into the world - not an unusual thing, as I noted in an old blog post on "The Golden Rules of Version Naming" [1] - but particularly acute having failed on the previous attempt. PHP 5.3 was branched over 6 years ago [2] and the PHP 6 Unicode implementation officially abandoned 3.5 years ago [3]; contrast that with the 6 years between PHP 4.0 and PHP 5.0 (and only 5 years between the radically different PHP 1.0 and 4.0!), and the current limit of 3 years for support of new releases. Time, as the self-help books would say, to seek closure and move on. The feeling in the air at the moment seems to be that in order for PHP to move beyond 5.x there would need to be some bold, world-shattering feature, to replace the Unicode work. Yet features are proposed and abandoned because they are too big a change for a minor release, but somehow not enough to justify a major release. There are two solutions to that (which aren't necessarily mutually exclusive): a) Choose a bold, world-shattering feature, and rally the troops. There are plenty of things that could be considered here, but I'll leave my musing on those for elsewhere. b) Declare that, just as minor versions now happen every year, major versions will happen on a regular basis, whether or not the language has radically changed, to allow the evolution of the language to proceed without maintaining an ever-growing list of deprecated quirks. If PHP is to remain relevant to the world, it needs two things: it needs to give users time to catch up, as the current release process does for minor versions; but it also needs to give those developing the language itself a chance to improve it with modern, well-designed features. Well, that's my two $minor_currency_units anyway. [1] http://rwec.co.uk/q/versions [2] http://news.php.net/php.internals/32451 [3] http://news.php.net/php.internals/47120 -- Rowan Collins [IMSoP]