> On Jun 29, 2024, at 6:28 PM, David Gebler <davidgeb...@gmail.com> wrote:
> 
> On Sat, Jun 29, 2024 at 9:27 PM Michael Morris <tendo...@gmail.com> wrote:
> 
> Near universal unity??  You're forgetting Wordpress, which has massive PHP 
> market share (more than 50% of PHP backed websites - well more than depending 
> on which survey you cite) and DOES NOT USE COMPOSER. And it DOES NOT USE 
> PSR-4 either.
> 
> Composer is wonderful as a userland solution to a problem the Internals team 
> has failed to solve, but such a critical problem as package management being 
> mostly solved in userland using a configuration file (composer.json) written 
> in another programming language entirely is frankly an embarrassment in my 
> opinion.
> 
> Given WP has yet to adopt Composer or PSR-4 standards, how likely do you 
> think it is that this particular project will be quicker to adopt any, say, 
> PHP 10 "user modules" feature along the lines of what you've proposed?

As someone who worked with WordPress as a plugin developer for about 10 years, 
I would say WordPress would be HIGHLY likely to adopt modules if modules could 
possibly integrate into WordPress without WordPress having to make the nature 
of wholesale changes that you are others are objecting to related to PHP. Note 
they have yet to adopt namespaces in any significant way (or at least if they 
did it has been very recent.)

I was heavily involved in a trac discussion where people were proposing to use 
Composer for WordPress to manage plugins and their dependencies. I pointed out 
that Composer is a build-time solution for PHP where WordPress has no concept 
of build-time and that all configuration and 3rd party package "deployment" is 
done using a running WordPress install, and most often by end-users how have no 
clue how to resolve a conflict in dependencies (such as two plugins is same 
function name.) Consequently I argued that using Composer for WordPress as 
proposed was a non-starter.

That trac ticket was opened eight years ago, and is still open with no action 
(because action without rewriting WordPress is impossible IMO.): 
https://core.trac.wordpress.org/ticket/36335

ALL THAT SAID, I do not see WordPress using modules as the new approach for 
plugins. Same problems would exist as for Composer unless PHP added 
"un_include" and "un_require" functionality. And even then I don't know if 
there would be enough of an impedance match to use modules for plugins.

However, what I **do** see WordPress doing is adding new features using 
modules, and I **do** see plugin developers embracing modules (and especially 
if one module could be substituted for another module at runtime without 
worrying about symbol naming conflicts.) #fwiw

> Mmm, been hearing that one for the last twenty years, yet here we are. And 
> the improvements to the language in that time have been innumerable

Here is a recent article that I think is insightful to review:

https://thenewstack.io/why-php-usage-has-declined-by-40-in-just-over-2-years/


>  None of those languages have better inherent support for packages than PHP, 
> just different ways of doing it.

"Better" is a subjective term.

Let me give one objective criteria: 

- Number of directory entries that popular projects end up managing. 

I am sure each of us could (and should) come up with additional objective 
criteria for evaluating approaches to packages/modules (this is copied from an 
earlier email and I have quoted it so I can add a new paragraph after it):

> And the PHP language encourages a large amount of file and directory bloat.  
> 
> One only need to compare the number of files in most PHP libraries to the 
> number of files in JS or Go package to see that the nature of a language 
> clearly does not influence.
> 
> To bring stats vs. opinion I asked ChatGPT what the two equivalent packages 
> are to Symphony for JS and Go respectively and it suggested ExpressJS and 
> Gin.  So I cloned them to see the number of files and directories each has. 
> From the root of each repo:
> 
> Project                       Files   Dirs
> Symfony:              12,504  2,162
> ExpressJS:            259             87
> Gin(GoLang):          145             30

So, does "fewer files" make it "better?"  That would be hard to prove or 
disprove, but it is a metric developers can consider when evaluating approaches 
to packages/modules. They can ask themselves if they really want to have to 
deal with so many files and folders when programming, or if they would prefer 
only working with an order of magnitude fewer files and folders.

And only each individual developer can answer that question for themselves; 
they cannot answer that question for others.

> PHP's way is namespaces and autoloading and while there's a good case that if 
> we were designing the language from scratch today, these might be a couple of 
> just many things all of us might want to do differently, ultimately all these 
> things are just variants of loading code symbols into scope. These languages 
> all have separate tools to manage third party dependency libraries (more than 
> one competing with each other, in some cases). Composer compares more to pip 
> or npm or maven, not Java packages or modules in Python, JS, etc.

One of the downsides of how PHP loads code is that the loading code runs in 
slower userland code — and for those who use a debugger — forces the developer 
to step into and then step out of the autoloader every time a new class or 
interface is loaded.  

Is that bad?  It is to me, but each developer must characterize those objective 
facts somewhere along the spectrum of good to bad for themselves.

> For me, bottom line is I don't have any problem today managing or installing 
> versioned vendor code in my projects, I don't have a problem breaking my 
> project file structure down into clear modules and I don't have a problem 
> referencing those modules from other modules.

"...that you are recognizing at the moment." (If you are being honest with your 
characterization.)

Those problems exists, you have just acclimated to them and no longer notice 
them, or maybe you never did.

> What I'm saying to you is that you need something much more comprehensive, 
> well thought out and well justified to be in a position to even have a 
> conceptual, ready-to-consider RFC. You don't need to have a working 
> implementation on day one but you need to be proposing something coherent and 
> with clear benefits, which I don't think this is today.

Said another way — and this I 100% agree with you on, even if I lament it — the 
PHP internals mailing list is not the place to flesh out ideas and collaborate 
with others in the PHP community. That is unless you are already one of the 
primary contributors to PHP, and even then the primary contributors start out 
working on their ideas with others they know off-list.  #it_is_what_it_is

-Mike

Reply via email to