Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:118793 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 63447 invoked from network); 11 Oct 2022 05:09:08 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 11 Oct 2022 05:09:08 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 438441804AC for ; Mon, 10 Oct 2022 22:09:07 -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.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_NONE,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-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) (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 Oct 2022 22:09:06 -0700 (PDT) Received: by mail-qt1-f173.google.com with SMTP id bb5so2315851qtb.11 for ; Mon, 10 Oct 2022 22:09:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=newclarity-net.20210112.gappssmtp.com; s=20210112; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:subject:mime-version:from:from:to:cc:subject:date :message-id:reply-to; bh=dPbjcs55Syq5Yh5EI4Ou+VsyoobRGfdhdMGehMafqjs=; b=f0OTPahH5KHPPBCTDSg44ey1TKZpefuqIz2Hi1+L9fd7KvuxB2/ibuELz2TY2+dIQL cw7JckSkRECfzV6EyBCvSUqWc4HMERmzh7TIwddRCwTD2iV8q33sbDSJW1Fa5KHLBROA cqwsD/PPP4ilBc7OzljSDGVZcLzJtnkZ59mK9rKjx5hjfGcs0lxoPs0meGIy5tIacoYo rdd9LQ5bqCoPZq95I5bbQQcVsWwGHI8AsvspIAJtEI/LIbHZCrCv0II++WmqXeKTe9iP S0RRcMsiR+fSoWYdEpEoxvSxcyytoe9Y47Mk/KEOsHhwB3eGKJAV49aAYoxRB3FMi8Xr Deog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:subject:mime-version:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dPbjcs55Syq5Yh5EI4Ou+VsyoobRGfdhdMGehMafqjs=; b=TEs88Pw9PH2pqzXFLb+jke/Bmkh9Iqu8jzn2BSr2IHLDrj4TIPr6QSU5SV+jOiJajb o6w0HkoFcuUCuWQW6887bp01oySuv8o654qpRFZkqZ/Y7pR8UssSF9zz0PBfl8VsGpTl OII6R+2txgqdTkTdH3/8FAFKpdziOPpJ0960k/67YhRFVJ4yvoa/Ohuo2z03wvIDU7+B f4dgp/6Z049EkuhRrHGuI77mxRHNI2Rog/ZEqp4FCu+HMh/AFuDTNeL7HAjquXoVPxgZ Y1N2z6qD7HvZLwHBwJ8B2RnC+CpcsmI22EosA5TYUUITQp12OHNFj7Tmw0T11Z87U79A lEkg== X-Gm-Message-State: ACrzQf28TfER21U7noR0CHSXMrMEUCmo+VO3NR35hKgwi7SRfTiEM/2r Nfyt6/zbNFUWOduEXbfxe4XJTQ== X-Google-Smtp-Source: AMsMyM5Oa0xhNlU5D4Jew2ZORjoW9egp4zt2n1dfwDTC7UqL3Y2Q+2yUgNo3XphlJDgbkoMDqhz3ng== X-Received: by 2002:ac8:5fc6:0:b0:39c:8993:88f1 with SMTP id k6-20020ac85fc6000000b0039c899388f1mr379021qta.24.1665464945777; Mon, 10 Oct 2022 22:09:05 -0700 (PDT) Received: from macbookpro.local (c-24-98-254-8.hsd1.ga.comcast.net. [24.98.254.8]) by smtp.gmail.com with ESMTPSA id b15-20020ac84f0f000000b003992448029esm5342134qte.19.2022.10.10.22.09.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Oct 2022 22:09:04 -0700 (PDT) X-Google-Original-From: MKS Archive Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\)) In-Reply-To: Date: Tue, 11 Oct 2022 01:09:03 -0400 Cc: David Rodrigues , PHP Internals Content-Transfer-Encoding: quoted-printable Message-ID: <5EBAAEBD-4F9E-4832-BBDD-6E67D8758490@gmail.com> References: To: David Gebler X-Mailer: Apple Mail (2.3608.120.23.2.7) Subject: Re: [PHP-DEV] Experimental features From: mike@newclarity.net (MKS Archive) > On Oct 10, 2022, at 8:04 PM, David Gebler = wrote: >=20 > This is what's bothering me. Either these "experimental" features have > passed RFC and will be part of the language, as you've said above, or > they're actually experimental i.e. not finalized and implementing = behaviour > and syntax which may be subject to change or even dropped entirely > depending on the feedback cycle.=20 If they are not experimental and their usage is finalized, then they are = in-fact approved and they would be absolutely no different from the = existing RFCs today. You cannot have experimental features unless those features have the = potential to not be included in the future language and/or those = features have the potential to be improved before they are finalized. = Otherwise, what's the point? BTW, I googled several different phrases trying to find a horror story = in Node.js because of their experimental features, but the only thing I = was able to find was people glowing about the features that are = currently experimental and/or the excitement when a feature graduated to = fully supported, for example: https://nodesource.com/blog/experimental-features-in-node.js/ Maybe you can find examples of downsides of having experimental features = in Node.js (or some other language/platform) that I was unable to find? = If so, it would be instructive to learn from their experiences. > Using the trivial json_validate() example (although as others have = said, a > simple new function is probably a bad example),=20 (As an aside, I disagree that a new function would be a bad example. I = think it would be a good use-case for experimental features because of = how decoupled it would be from the rest of the language, and it would = help to see if a lot of people use the function before committing to = including it.) > If it's the former, the library can just check if PHP >=3D 8.3 and = fall back > to userland implementation / polyfill for earlier versions. This is = just > what we have now, where approved new features are part of a versioned > release. Not all potentially useful functions can reasonably be implemented in = userland PHP. > If it's the latter, everyone touching the experimental version, = directly or > indirectly, may have to rip out and change code later which renders = the > work they've put in to use the experimental feature in their code = pointless. That is not a hard software engineering problem. Software developers = have been isolating 3rd party dependencies for decades. There's no = reason why developer could not isolate (most) potential experimental = features in the same way. > I'm inclined to suggest if you opt in to an experimental language = feature, > you are by definition making at least an implicit declaration that you = know > what you're doing, You speak of people "knowing what they are doing" as if it were a binary = thing, i.e. they know what they are doing or they do not. Let me use an = analogy for you here to try to make the counter point. There are a handful of doctors of the world's leading heart surgeons. = They absolutely "know what they are doing." But if I have brain cancer = and need a tumor excised, I would not let any one of those doctors touch = me unless they were also celebrated as a brain surgeon. I am guessing = you would feel the same. Similarly, someone can be an excellent software developer but not have = strong DevOps or sysadmin skills. In my 10+ years working with PHP I = met, knew, and worked with *many* people like that. And for many years, = *I* was one of those people. > so the idea people using these features wouldn't have > the skills to spin up a container or install something on a VM doesn't > convince me, personally. Not every developer is a polymath. Some are excellent at writing = software but cannot configure a server or a VM or Docker container to = save their life. In my LinkedIn I could probably give you a list of 100 = developers what that would apply to. =20 IOW, they are a lot of excellent heart surgeons out there but they just = don't know how to fix a brain. -Mike