There’s a tendency to just write off entire popular projects with some kind of sweeping generalization. […] Even if they aren’t your chosen tools, keeping enough of an open mind to learn from what they do right is worth it.
That’s easy enough: PHP is the best proof for Elaine’s Law that there is. It’s pretty awful, but the barrier to entry for new users is far lower than with any competitor, and the new web frameworks in other languages have not changed this fact either. Most of them are now competitive with PHP for developers already proficient (to some extent) at programming in general and with the underlying language in particular. But they’re still far harder for non-developers who just want to install an app to use it.
To some extent, the success of MySQL goes back to the same reason; certainly it is how MySQL gathered so much seminal momentum – nothing at the time was even close to its degree of simplicity of installation and maintenance. I posit that if SQLite was available at the time, MySQL would never have happened (as far as the world is concerned) and the arena today would be shared between SQLite and PostgreSQL. That is, assuming anyone had invested as much work into clustering Pg as has gone into MySQL – because while solutions for that exist for Pg, you have to pick from one of several and they’re all harder to get going than MySQL. (There’s Elaine’s Law again.)
And I agree that we should learn from that. The clearest implication is that fixing the CPAN toolchain (which was fine enough in the era of its conception, but times have changed and we need to follow) is of the essence if we want to regain impact. Adam Kennedy, Schwern, Ken Williams, Ovid, Andreas König and a host of others deserve high praise for their ongoing work in that area.
But I don’t see how being openminded enough to learn from the strengths of others implies not criticising them. I don’t shy from criticising Perl; why wouldn’t anyone else be fair game?
Of course, criticism should have basis in fact; statements like “if everyone used Pg, we wouldn’t need database partitioning” are a fool’s utterance. And I have written PHP code in the past, and currently administrate several PHP applications for other users. I also use MySQL fairly heavily both as an admin and as an SQL developer. On those grounds, I would qualify my involvement with both as unfortunate; it did nothing but give me more grounds on which to criticise them. However, I think exposure to the sometimes disturbing facts alone is enough for some criticisms levelled against these platforms, even without any experience using them.