On Fri, Jun 14, 2024, at 11:22 AM, Robert Landers wrote:
> On Fri, Jun 14, 2024 at 6:40 AM Rokas Šleinius <rave...@gmail.com> wrote:
>>
>> I'm no one important, but I just want to say for the sake of the
>> public image of PHP I hope this does not pass, or at least not in the
>> foreseeable future.
>>
>> There are NO substantial gains to speak of here and the BC break is
>> real and it's super annoying when they pile up and up.
>>
>> Besides, this is slightly off topic, but I don't know if you know, but
>> if you take a look at stackoverflow developer survey over the years,
>> there has been an absolute 30% drop of php popularity in the past few
>> years.
>>
>> I would guess this is mostly the low-level developers not being fans
>> of the language removing magic quotes and other "super useful"
>> features. In other words, PHP lost the average joe as its target
>> audience. Joe's gone.
>>
>> Just my 2¢:
>> a) this WAS the reason PHP was great and I loved to rewrite the
>> systems of several very successful companies who started out with
>> their non-technical founders who coded their way out of the box to
>> begin multi-million businesses
>> b) the PHP core and co. (a.k.a. YOU) should be acutely aware that the
>> language needs to be liked by not only you, dear awesome lovely
>> hardcore nerds, but also the users who just need to get stuff done,
>> business needs fulfilled.
>>
>> I know this is not how YOU work, but if you ignore that part of the
>> language users, there might eventually not be a language to work on in
>> the future.
>>
>> So please, keep the language loose, I hate the slight inconsistency
>> too, but if we ruin the day for another 20% of users, it might even be
>> the straw that broke the camel's back.
>>
>> On Fri, 14 Jun 2024 at 02:38, Valentin Udaltsov
>> <udaltsov.valen...@gmail.com> wrote:
>> >
>> > On Friday, 14 June, 2024 г. at 00:04, Timo Tijhof <ttij...@wikimedia.org> 
>> > wrote:
>> >>
>> >> Would this affect unserialize()?
>> >>
>> >> I ask because MediaWiki's main "text" database table is an 
>> >> immutable/append-only store where we store the text of each page revision 
>> >> since ~2004. It is stored as serialised blobs of a value class. There 
>> >> have been a number of different implementations over the past twenty 
>> >> years of Wikipedia's existence (plain text, gzip-compressed, 
>> >> diff-compressed, etc.).
>> >>
>> >> When we adopted modern autoloading in MediaWiki, we quickly found that 
>> >> blobs originally serialized by PHP 4 actually encoded the class in 
>> >> lowercase, regardless of the casing in source code.
>> >>
>> >> From https://3v4l.org/jl0et:
>> >>>
>> >>> class ConcatenatedGzipHistoryBlob {…}
>> >>> print serialize($blob);
>> >>> # PHP 4.x: O:27:"concatenatedgziphistoryblob":…
>> >>> # PHP 5/7/8: O:27:"ConcatenatedGzipHistoryBlob":…
>> >>
>> >>
>> >> It is of course the application's responsibility to load these classes, 
>> >> but, it is arguably PHP's responsiblity to be able to construct what it 
>> >> serialized. I suppose anything is possible when announced as a breaking 
>> >> change for PHP 9.0. I wanted to share this as something to take into 
>> >> consideration as part of the impact. Potentially worthy of additional 
>> >> communicating, or perhaps worth supporting separately.
>> >>
>> >> --
>> >> Timo Tijhof,
>> >> Principal Engineer,
>> >> Wikimedia Foundation.
>> >> https://timotijhof.net/
>> >>
>> >
>> > Hi, Timo!
>> >
>> > Thank you very much for bringing up this important case.
>> >
>> > Here's how I see this. If PHP gets class case-sensitivity, unserialization 
>> > of classes with lowercase names will fail. This is because the engine will 
>> > start putting `MyClass` class entry with key `MyClass` (not `myclass`) 
>> > into the loaded classes table and serialization will not be able to find 
>> > it as `myclass`.
>> > Even if some deprecation layer is introduced (that puts both `myclass` and 
>> > `MyClass` keys into the table), you will first have a ton of notices and 
>> > then eventually end up with the same problem, when transition to case 
>> > sensitivity is complete. Hence I propose no deprecation layer — it does 
>> > not really help.
>> >
>> > However, you will be able to use `class_alias()` to solve your issue. If 
>> > classes are case-sensitive, `class_alias(MyClass::class, 'myclass');` 
>> > should work, since MyClass != myclass anymore. And serialization works 
>> > perfectly with class aliases, see https://3v4l.org/1n1as .
>> >
>> > --
>> > Valentin Udaltsov
>> >
>
> Hey Rokas,
>
> Please bottom post (it's the rules), but PHP's "decline" has little to
> do with the language itself, most likely it has to do with how long
> people have been coding. >42% of people have been programming less
> than 9 years, and >62% for less than 14. "Hyped up" languages tend to
> dominate in the earlier years of programming and even then, most of
> the developers responding to that survey classify themselves as
> "full-stack" (and from talking to "full-stack" developers, it mostly
> tends to mean they know Javascript -- which lo-and-behold, is the top
> language; surprise surprise).
>
> I wouldn't put too much weight on that survey since it is clearly
> biased towards early-career devs, in the US, who know Javascript.
> Fortunately, the industry is much bigger than that.
>
> Robert Landers
> Software Engineer
> Utrecht NL

While the whining about market share is off topic, the challenges of keeping up 
with upgrades are valid, and have been expressed many times.  (Sometimes more 
politely than others.)

I agree that this sounds like a change with very unclear BC implications at 
best, and bad ones at worst, with dubious benefit.  Just how much performance 
would we gain from case sensitive class names?  If it's 20%, OK, sure, that may 
be worth whatever BC breaks that causes on the margins.  If it's 0.2%, then 
frankly, no, the PR cost of pissing off people who have to manage edge cases is 
not worth the hassle.

At the moment, I'm leaning No on this change, because the cost/reward/backlash 
ratio is just not there to support it.

--Larry Garfield

Reply via email to