> I'd like to raise a motion to 'Give the Language a Rest'.
Tired inbox? :)
> Almost a decade since we started with the 2nd iteration on the syntax (PHP
> 3), and 2 more major versions since then, and we're still heatedly
> debating on adding new syntactical, core level features.
>
> Is it really necessary? I'd say in almost all cases the answer's no, and
> a bunch of cases where a new feature could be useful does not constitute a
> good enough reason to add a syntax level feature. We might have to
> account for new technologies, or maybe new ways of thinking that might
> arise, but needless to say, most of the stuff we've been dealing with in
> recent times doesn't exactly fall in the category of cutting edge
> technology.
I think that's a Good Thing[TM]. Today's cutting edge technology can easily
become tomorrow's partially-used banana in the pocket of history. Remember
the transputer?
> My motion is to make it much, much more difficult to add new syntax-level
> features into PHP. Consider only features which have significant traction
> to a large chunk of our userbase, and not something that could be useful
> in some extremely specialized edge cases, usually of PHP being used for
> non web stuff.
TBH I'd say _generally_ this happens anyway. There isn't a lot of argument
over 'edge case' changes, although there might be a number of requests for
them (the perennial issue of memory usage in long-running CLI scripts
springs instantly to mind). It's pretty rare to see anything new go into the
Engine that comes under the heading of 'general-purpose language' rather
than 'language for the web'.
> How do we do it? Unfortunately, I can't come up with a real mechanism to
> 'enforce' a due process and reasoning for new features.
We usually have you and Rasmus rather than a mechanism :) But let's assume
we didn't, let's say you wanted to drop out of PHP development altogether
and go raise chili peppers or whatever. The obvious thing would be to write
some charter in stone.
> Instead, please take at least an hour to bounce this idea in the back of
> your mind, preferably more. Make sure you think about the full context,
> the huge audience out there, the consequences of making the learning
> curve steeper with every new feature, and the scope of the goodness that
> those new features bring. Consider how far we all come and how successful
> the PHP language is today, in implementing all sorts of applications most
> of us would have never even thought of when we created the language.
This would be the problem when it came to writing some charter in stone.
Something that seems irrelevant now, might not be so in the future. Sara
pointed to Unicode and exceptions as being cases in point; I personally
don't have any vested interest in exceptions, but I know my life's going to
be made easier by having integral Unicode support, and I know a lot of other
PHP users are in that particular boat too. If there'd been a 'don't touch
the Engine' rule writ in stone, would that option even have come under
discussion? You're basically preventing evolution when you make hard rules.
> Once you're done thinking, decide for yourself. Does it make sense to be
> discussing new language level features every other week? Or should we,
> perhaps, invest more in other fronts, which would be beneficial for a far
> bigger audience. The levels above - extensions to keep with the latest
> technologies, foundation classes, etc. Pretty much, the same direction
> other mature languages went to.
Perhaps there could be just the one hard rule. 'If it's possible to
implement it as an extension, do so.' There'd be nothing to prevent
co-opting essential functionality into the core, but also nothing preventing
fly-by-night technologies from having support in PHP. The biggest problem
there is that it doesn't give webhost users a fair crack because changing
hosts means you risk losing a package or two; and the ability to write
portable applications is affected in the same way. But this isn't about the
language itself any more...