Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:116396 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 42981 invoked from network); 15 Nov 2021 22:41:11 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 15 Nov 2021 22:41:11 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 3D2CF1804B0 for ; Mon, 15 Nov 2021 15:35:59 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FAKE_REPLY_A1, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_SOFTFAIL autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS36483 23.83.208.0/21 X-Spam-Virus: No X-Envelope-From: Received: from bird.elm.relay.mailchannels.net (bird.elm.relay.mailchannels.net [23.83.212.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Mon, 15 Nov 2021 15:35:58 -0800 (PST) X-Sender-Id: a2hosting|x-authuser|juliette@adviesenzo.nl Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 6D8021223C8 for ; Mon, 15 Nov 2021 23:35:57 +0000 (UTC) Received: from nlss2.a2hosting.com (unknown [127.0.0.6]) (Authenticated sender: a2hosting) by relay.mailchannels.net (Postfix) with ESMTPA id 49EC01223C7 for ; Mon, 15 Nov 2021 23:35:56 +0000 (UTC) X-Sender-Id: a2hosting|x-authuser|juliette@adviesenzo.nl Received: from nlss2.a2hosting.com (nlss2.a2hosting.com [209.124.66.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384) by 100.111.70.133 (trex/6.4.3); Mon, 15 Nov 2021 23:35:57 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: a2hosting|x-authuser|juliette@adviesenzo.nl X-MailChannels-Auth-Id: a2hosting X-White-Thoughtful: 5a44570c4ec9ef25_1637019356895_2638875750 X-MC-Loop-Signature: 1637019356895:2419476530 X-MC-Ingress-Time: 1637019356895 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=adviesenzo.nl; s=default; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Date:Message-ID:To:Subject:From:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=VL/gebnQI9yJ0Wi6PKu1vi2CXtxAyXEYBvktpwGN9Qk=; b=r18tt1J4Vp/SWBOfXNOMe/Nmd0 0NVC+OMljisSRJIKP26xHtm3yog3SRaoCFNdHTVcnVBKoiIykOrJ55rrofgQ5ECe6PptqzZSa+X6B 6d1BjzF8+PAciKM4Ez4ZN2/SY2e2E0Upkj8uqsQKVnq1/N1NPaFbbLBn0dvASqnf+PS8=; Received: from 86-154-178-143.ftth.glasoperator.nl ([143.178.154.86]:54823 helo=[192.168.1.104]) by nlss2.a2hosting.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1mmlVx-00ACn1-Q5 for internals@lists.php.net; Tue, 16 Nov 2021 00:35:53 +0100 To: internals@lists.php.net Message-ID: <6192EEDA.8050900@adviesenzo.nl> Date: Tue, 16 Nov 2021 00:35:54 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-AuthUser: juliette@adviesenzo.nl Subject: Re: [RFC] Deprecate dynamic properties From: php-internals_nospam@adviesenzo.nl L.S., As some of you may have seen, I posted a thread on Twitter a few days back referencing this RFC: https://twitter.com/jrf_nl/status/1459221549429542920 I've been asked to post the link to the Twitter discussion in this thread for visibility. The Twitter thread generated, and is still generating, quite a lot of discussion, which I believe is a good thing and I'd like to thank everyone of you who has been actively participating in these discussions and has taken the time to read the various opinions. The thread, however, is not specifically about this RFC, but more about the more poignant issue of the current pace of deprecations in PHP, the impact of the workload these cause for open source project maintainers and the stagnation I'm currently seeing in PHP open source releases and innovation as a result of this. As I'm posting here now anyway, I'd like to leave the following feedback for your consideration: From what I've gathered from responses and the added "Motivation" section (thanks Nikita), this RFC is intended as a stepping stone towards eventually removing support for dynamic properties from PHP completely. This only got cursory mention in the RFC and the RFC as it is, does not lay out a clear path towards that end-goal. What I miss in this RFC - and also oftentimes in other RFCs over the past few years - are: * The real reason behind this change proposal. "Modern code doesn't use this" is not a reason and also not always true. * An impact and workload analysis for userland PHP code, no matter how tentative. * Argumentation that this is the right stepping stone towards eventually being able to achieve the end-goal of removing support altogether and a tentative outline of what the path towards that end-goal will look like, both in timeline, next steps and (tentative) criteria of when it would be acceptable to take those steps. Without the above, the RFC as it currently is, is IMHO just creating more busy-work without a clear path forward. Please also take note that while this deprecation may not have much of an impact on applications which have full control over their server and the PHP version on which the code is run, as those have a) full access to server logs and b) can use tools like Rector to upgrade (once a Rector for this has been written), this is a whole different ball-game for open source. As pointed out before, static analysis tools (once written) can help, but may struggle to analyse the code using dynamic properties correctly in all cases. In the end, if this gets deprecated, the best way to find the potential problematic instances, is, like always, a test suite with near full code coverage to see all deprecations, but let's also be realistic: a full test suite is a luxury few open source projects actually have. And even when a full test suite is available, and this is probably the most important problem I see: **open source libraries are generally building-blocks in a larger whole, where the library itself has no control over how their users are using the code, let alone have any indication of whether their users may be using or extending the library in ways which _rely_ on dynamic properties.** This uncertainty may lead to "abuse" of the attribute to prevent introducing a breaking change. Either way, in my estimation, handling this deprecation will - again - require not insignificant dev-time from maintainers to determine the best course of action for each flagged instance and to implement the changes, and what with the stagnation in OSS already happening, I wonder if now is the right time for adding this to their work-load, especially with the relatively flimsy argumentation for this RFC. Let me finish by saying that I'm heartened to see the discussions here today, the addition to the RFC of the "Motivation" section and the ideas about a more gradual path, like mentioned by Derick and outlined by Larry and it gives me hope that the impact of these type of changes on OSS maintainers may be given more consideration in RFCs in the future. With kind regards, Juliette Reinders Folmer