Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:116524 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 51290 invoked from network); 26 Nov 2021 05:18:59 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 26 Nov 2021 05:18:59 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id D14A7180511 for ; Thu, 25 Nov 2021 22:16:21 -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=2.1 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,LOTS_OF_MONEY,MONEY_NOHTML, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS 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-qv1-f46.google.com (mail-qv1-f46.google.com [209.85.219.46]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Thu, 25 Nov 2021 22:16:21 -0800 (PST) Received: by mail-qv1-f46.google.com with SMTP id m17so6404836qvx.8 for ; Thu, 25 Nov 2021 22:16:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=grokability.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=qYXknnvIRUG0XmwGNfrfBJ4yseRaiijVGULfIHPGXwk=; b=CImfC3vo0XUI5X9sL7Nt0M+UAjba6zfOXYSArAIPCY5VerStKP8TBd8uYGYmV83m1k H0Ahv2bZD0aS1PYZR5sywm+yZFHUvSVRRSRA7JnDYpDjpmXT++A+4oxeq9WYHpj82Err ei+9b47XNsC1tyMqIvz69N8IzrvEni3MsKzOK4X3p6aDBuyyPcgxkiAcLSDe0MfteEwi Uum6bH7ap7TrkpAzbncM4aUpQJQ9XwVMiN0bmZ1Xdab+kXmEW0AhNhPreMAb4EyMJl8M Gz+XH+KAqaU/m5TGGHHY6zqexnpOYz9gHge5WZPBy5YwDrGWEWou2/P+afnw3zEiHmOY TuIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=qYXknnvIRUG0XmwGNfrfBJ4yseRaiijVGULfIHPGXwk=; b=XlxlynrelPrwffQw1+unuuPfn9BKZz6v1mCjw5Zh85vELNzI+BEZuD12eRag7biKkl Frm00NVhR68K3sNWC22KfC7l+c7IchyQuocAoIUaI7Lp5+QCtzHqxm+06wXXxG9FHzj5 +whYbyM6NZZbpKZLLZpVMEL17g1+3m09rrgGmECrCazZ+my2xoLhxldjpV06TzCepJRT NDZBJaMaZI5L4oT/bCUi3+mXHLasVupCMFiKj5cZWhS/ML51mBqT4bHJts8wNvR1j5Bb pJGe5mqtu5piMYoF6WnQGJ7tflPMxlmMp1oJ0XKZkXlnJRIfrUwmwYLi5wZ00avjI60S uo8Q== X-Gm-Message-State: AOAM532vgHS0shhuIVuUMrCqx4IfAX7wmT9A90WE1NZu26Iho1r02W0h WwNuXqy14GUU1uygtGL2xLUooedASfzo8Nz/VUGqPw== X-Google-Smtp-Source: ABdhPJzPBonFkUVjHV/2QUsxGV0mDGUAGW3erQTkOcIKQVduxSssVrhEbxQ5wqQ3fWIY9qXsHAbdP52qnslARuaDQsg= X-Received: by 2002:a05:6214:1513:: with SMTP id e19mr10858130qvy.124.1637907380368; Thu, 25 Nov 2021 22:16:20 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: Reply-To: Brady Wetherington Date: Thu, 25 Nov 2021 22:16:09 -0800 Message-ID: To: Dan Ackroyd Cc: Kamil Tekiela , PHP internals Content-Type: text/plain; charset="UTF-8" Subject: Re: [PHP-DEV] Re: [VOTE] Deprecate dynamic properties From: internals@lists.php.net ("Brady Wetherington via internals") > > That's 1.5 million hours, which is 171 developer-years. > > If we're going to imagine numbers; there are 6 million PHP developers > in the world*. If on average they each lose just 1 hour per year by > making typos and accidentally creating a properties dynamically, > that's 6 million hours, or 684.93 years! > > So the value delivered by this change would be 4 times the cost just > in the first year. And then every year after that it's pure benefit. And as many of those who wish to, can opt-in to the attribute/feature can save themselves that time (and probably should!). We probably will for our code, tbh! But forcing this issue is going to be massively destructive to the ecosystem. Not everything is brand-spanking new. Some things just work well and don't get updated that often. > > What I'm scared about is about our 42 dependencies in composer.json, > > How about sponsoring each of your dependencies some money, to > encourage them to check if their code is compatible after this change, > and fix it if it isn't. You are trying to solve a technological problem with an economic solution. And one that requires that the entire ocean be boiled before it is solved. We already do give money to several places, and would like to give more. And we will. But that's not going to fix this, unless everyone does. And not everyone will. We happen to make money; not a lot of other projects do. We ourselves are open source. We don't get more than a handful of donations per year. This doesn't seem to be the right way to solve this problem. > If a dependency is used by even just 1000 companies, and each of those > companies chips in $50, then $50,000 will fund many months of work on > that dependency. > > Most open source is done by people in their free time. Because > companies keep refusing to fund open source. > > > might be stuck on a framework or something that's no longer being updated, > > Having companies sponsor open source projects makes it less likely > they will be abandoned. Maybe, but not always. Sometimes people just lose interest. But again, you're proposing to potentially break a big chunk of packages in hopes that an economic model that has not successfully worked anywhere else is going to work here. That seems cavalier. Right now, to get a collection of packages that work between php 7.4 and 8.0, we've had to spend tremendous amounts of work just to get there - and we had to pull 7.3 support in the process. I didn't want to do that; I want our software to be available to as many people as possible - not everyone has the freedom to install their own version of PHP - some are on crappy shared hosting or have to deal with some creaky IT department. Every single backwards-incompatible change shrinks our version-sandwich down further, especially in the context of packages. Again, I can add the new attributes to our own software today, and that means we're OK - but I can't speak to every single package we're dependent on or *they* are dependent on. -B.