Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:119883 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 90797 invoked from network); 10 Apr 2023 21:03:39 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 10 Apr 2023 21:03:39 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id A85B9180554 for ; Mon, 10 Apr 2023 14:03:38 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,FREEMAIL_REPLY, HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS15169 209.85.128.0/17 X-Spam-Virus: No X-Envelope-From: Received: from mail-ua1-f49.google.com (mail-ua1-f49.google.com [209.85.222.49]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Mon, 10 Apr 2023 14:03:38 -0700 (PDT) Received: by mail-ua1-f49.google.com with SMTP id p91so17543547uap.1 for ; Mon, 10 Apr 2023 14:03:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1681160617; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=O5yHOsqHr/YhhT15kJYadgVFL2o+b4mkRCUUbKZ0ZIA=; b=KvOYcVQvUEYKYaamErDVyz5W4i1UW261aZoyauLlR5bgzctoJJ4TqR0mZNIo6jyfIw tl5iiGoIzWrv7ObGl5eYNYLgJ4yn/azLpWqsBdfSNcHx7vv2tiPuPUo6V3t+DHTWH55K ma9OdW9/7j0tMcSDfWEm8Yam7nXw5FMpCX+/6FftVlut1n9GvXEoIQu3599WcrQOU92f Oa6I8xh0xq5UpdBQd/cOb3e27XBbOdRK0xh/hsFUcNuz3+nmyVCKtqyN9mG54M/pyU92 2bqNKFyjtK8Nkx0q+cUUzSeLyjtG7FDXELtD3PBjhlZeMy5X8OHs0MbNhjU3B0xUxaG1 PmIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681160617; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=O5yHOsqHr/YhhT15kJYadgVFL2o+b4mkRCUUbKZ0ZIA=; b=eZIlPID13I6mxWRFsenMCjpbDmXW1VXu0tLOaH1fiMKzYq8W3rlkjd4q/DmbPfBt7S RQFaE8NX97UB1oGG/0v/JDwgBa1ifsg6yRI11BgzBv/pcBfsp43s2hbbFWepjgxWnn5i gxgfStiPGoAZqh+dNGa3r1JUxzmsdRyMIf1USz2aj7FvW/tUujvGzsrkgUHFlN1tmIkI lX5UiN7++4fLhOKnI6uDhR00SjQYZ5fwn1rPY/C/IwXHWFh9jlU4wPqBpnB/c5Y0XAcU mEM6IARYY64JmGdKczlA9Sl01Vcl5jvmwaGMASljI1/fFrp6Jelj4eVtsrusihUlGp5D U0nA== X-Gm-Message-State: AAQBX9enBZuAAKtN8xuMkvGuaiQV4BV2OcMgZLrsU3x7yoZvWuLi2390 Zs+hu8Pr2HZA2CgFwxPMgptF+jOLC8Jr7iAhtXcLBmVe3yk= X-Google-Smtp-Source: AKy350YxSaJmnhWxsTdc7VPWqP9lejONLFiwpRw12yXFgS3/e2iVgxLEzIHNFSjM+tjTk+V19LGORmgc53Hife/pWvc= X-Received: by 2002:a1f:2dca:0:b0:43c:2acb:9a60 with SMTP id t193-20020a1f2dca000000b0043c2acb9a60mr233315vkt.3.1681160617374; Mon, 10 Apr 2023 14:03:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: Date: Mon, 10 Apr 2023 18:03:26 -0300 Message-ID: To: Arvids Godjuks Cc: Pierre Joye , Stephan Soller , PHP internals Content-Type: multipart/alternative; boundary="00000000000068ba2205f901b5bf" Subject: Re: [PHP-DEV] Future stability of PHP? From: deleugyn@gmail.com (Deleu) --00000000000068ba2205f901b5bf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 10, 2023, 4:01 PM Arvids Godjuks wrote: > > > On Mon, 10 Apr 2023 at 21:30, Deleu wrote: > >> On Mon, Apr 10, 2023, 1:17 PM Pierre Joye wrote: >> >> > hello, >> > >> > >> > On Sun, Apr 9, 2023, 1:37 AM Stephan Soller < >> stephan.soller@helionweb.de> >> > wrote: >> > >> > > Hello, >> > > >> > > I'm sorry if this isn't the correct mailing list for that discussion >> but >> > I >> > > couldn't find a more appropriate one where people actually know how >> the >> > > wind is >> > > blowing. >> > > >> > > A few days ago I migrated a project from PHP 7.1 to 8.2 and the >> amount of >> > > deprecations and fatal errors spooked me a bit (details below if >> you're >> > > interested). That got me wondering about the long-term stability of >> PHP >> > > (as in >> > > language and API breaks) and I looked at the RFCs. I got the >> impression >> > > that >> > > static typing has a lot of traction now and I have no idea of what t= he >> > > fallout >> > > might be of changing a dynamically typed language into a statically >> > > typed one. >> > >> > >> > I keep reading this in multiple languages, pr even more frameworks. >> > >> > I understand agency work, managers pushing new features instead of a >> > cleaning some legacy. >> > >> > however years of ignoring deprecation notices (very few were introduce= d >> > right before 8.0). >> > >> > Most of them could have been fixed within a couple of hours in any cod= e >> > base, if they had tests. >> > >> > I would suggest, very very nicely, to review and rethink the developme= nt >> > flows of these projects instead of asking php to freeze. >> > >> > best, >> > Pierre >> > >> >> I resent the sentiment of "if your code or development process was exact= ly >> like mine you wouldn't be here complaining" and I believe nobody is aski= ng >> PHP to freeze. Not everyone has the ability to fix every deprecation >> within >> a couple of hours and not everyone has tests. Yes, we get it, it's commo= n >> knowledge nowadays that code without test is unmanageable, but if you >> inherited a 15 year old codebase developed by multiple developers in a >> start-up mentality producing code faster than they could actually plan f= or >> and with no tests, its going to take some time to clean that up and if I >> take longer than you would, does it mean I matter less as a PHP user? >> >> PHP 8 is pretty great to work with and a lot better than previous >> versions, >> but there was no opt-in aspect to a lot of PHP breakages. All that we're >> asking here is for a bit more forgiveness to existing code that was >> developed 2 decades ago by a complete different generation and still nee= d >> to run today while we clean it up. >> >> > >> > > Hello Deleu, I want to highlight your response specifically, because you > blame the wrong people here. > This is the failure of the business owner to plan accordingly and ignore > all the warnings for years and decades. That is if any developer raised a= ny > concerns lately, which I also have seen quite a bit when "yes man" just > shove code into the meatgrinder for a year or two and then just move to t= he > next job: "It's not my problem, the next guy will deal with this". And th= at > feeds the vicious cycle, and the owner is either oblivious or does not > understand the implications because "well, it works, it generates money" = at > the moment right until that plane hits the ground and things blow up. > I've handled a big legacy project, did major updates to it, seen how an > effort of 1 month of my time to drag it into the modern day paid off over > the next 6 months by picking up development speed by 3x with the same tea= m > of 5 people + me. In 1 year we started to literally take away clients fro= m > our competitors who could not keep up with us and we had a literal line o= f > clients to onboard, we had to scale our sales team 3x and had a backlog o= f > 6 months still. All stemmed from a single decision "I will tackle this, w= e > need it to update to newer PHP". Business owners were really stoked that > they actually listened to developers. > > You cannot expect to run code that was written 2 decades ago without majo= r > updates on modern language versions. It's not possible for almost any > language that is being actively developed. Think laterally - instead of > hand-fixing every null check out there, introduce a library that can hand= le > data structures and handle the nulls for you en mass. Isolate the interna= ls > and just pass already sanitized values into it. Suddenly you cut off like > 90% of the needed fixes that prevent you from running your code. It's sti= ll > needs fixing, but at least you give it good data to start with, so it doe= s > not error out. > -- > > Arv=C4=ABds Godjuks > +371 26 851 664 > arvids.godjuks@gmail.com > Telegram: @psihius https://t.me/psihius > Thanks for your reply, I understand everything you mean here by improving a development flow. I've been responsible to for doing that improvement for the past 6 years and I'm pretty close to retiring 100% of the legacy code, but I still need a couple of years to do it. I have long ago convinced the people in my business that we need to pay this technical debt. You mentioned that I'm blaming the wrong people, but I'm not blaming anyone here. I have 4 teams working with me to replace our entire legacy, one bite at a time, but I lead only 1 of those teams. The other 3 teams have not only decided that the technical debt needs to be paid, but also its not worth it to pay it with PHP and have move to Typescript. My points are: - development practices has changed and we know it, but it takes time to shutdown legacy - we are actively working towards paying that technical debt and PHP improvements are great to help with it, but the deprecations aren't always. - like it or not, there is a community unhappy with how hard it has become to maintain a PHP codebase. I believe there's a lot more leeway in breaking BC and fast evolving the language around projects that have started in 2018+ with automation tests from day one. Introducing a BC break on PHP 8.3 about something that was first released on PHP 7.4 is orders of magnitude easier to deal with than BC breaks on things first Introduced on or before PHP 5.6. If we could just have a way to opt-in to a faster-paced language for all new code while not breaking PHP 5.6 features until the previous generation of software can be retired, that would be awesome. > --00000000000068ba2205f901b5bf--