Changes In Store For PHP V6 368
An anonymous reader sends in an IBM DeveloperWorks article detailing the changes coming in PHP V6 — from namespaces, to Web 2.0 built-ins, to a few features that are being removed.
news: gotcha
Magic Quotes Removed (Score:3, Informative)
Re: (Score:3, Insightful)
Re: (Score:3, Insightful)
I hope they have some sort of protection against that; specifically, if you have magic_quotes turned on in php.ini (or whatever the linux equivilant is) PHP should refuse to start, perhaps logging an error message which explicitly tells the webmaster magic_quotes is no longer supported, and that it must be turned off, and the possible consequences of using old scripts designed to work with magic_quotes on. This forces the webmaster to actually go into the config file and turn magic_quotes off, and if they
Re: (Score:3, Funny)
Actually, undoing magic_quotes is quite a bit more involved. Some things to consider:
Here's an excerpt from my personal library that addresses these issues and more. It works in PHP 4+ (I forget which minor version). Just give me some credit if you use it!
Re:Magic Quotes Removed (Score:5, Funny)
Of course not! Since no one has been stupid enough to directly insert submitted strings into SQL before sending it to the server for at least 5 years now, this won't affect any modern code in the slightest.
Re:Magic Quotes Removed (Score:4, Informative)
Re: (Score:3, Insightful)
So does this mean that if you are using magic quotes and you upgrade to PHP6, suddenly you will become vulnerable to SQL injection attack?
"The Management would like to announce that we're switching to slot-loading CD-ROM drives next week. We will be reserving more burn ointments in the first aid room for the next week or so and the janitor has been instructed to stock extra tissues in the bathrooms, but people who have been using CD-ROM drives as coffee cup holders should seriously stop using them as coffee cup holders ASAP."
Magic quotes did the wrong fix that incidentally happened to work for some people. The problem was that people had
Re: (Score:3, Informative)
Re:Magic Quotes Removed (Score:5, Insightful)
It's stupid stuff like that and "Magic Quotes" that make PHP a sad joke.
Magic Quotes = mixing input layer filtering with output layer filtering = bad. You tend to get data corruption amongst other things.
Then there's addslashes and friends.
PHP: "Making The Wrong Ways Easy, and The Right Ways Hard".
Oh well, I guess php6 is where they are finally trying to do things right now.
All the pain is because php coders were doing things terribly wrong in the first place. Don't forget the PHP devs were encouraging them to do things wrong for years.
Quick summary (Score:5, Informative)
Additions:
Better Unicode support
Namespaces! (this is being backported to PHP 5.3)
SOAP and the XML Writer/Reader modules compiled in and enabled by default (also in PHP 5.3)
Removals:
magic_quotes, register_globals, register_long_arrays, safe_mode
ASP-style short tags ()
Freetype1/GD1 support
ereg (use of preg encouraged instead).
Re: (Score:2)
safe mode hurray! (Score:3, Informative)
All the other stuff is great as well, but safemode has made the quality of my life significantly worse in the past.
Backwards compatibility is very important (Score:5, Interesting)
regardless, backwards compatibility is important for those people. for starters, these are the people who have chosen php as the platform to conduct their business on, making php a de facto dominant language for the web instead of being a small time web language that was used on web savvy, webmasters. the financial impact of this is going to be huge for them, to adopt to that many changes php dev group started to introduce in the span of 1 to 2 years. this is too much.
you gotta slow down. or you are going to alienate the small business community from using php with what you are doing. if you break a small estore owner's store script every 1.5 years for 'upgrading', the second time you do it they will jump the language ship.
do not start to become an elitist group out of touch with the people, increasingly caring for nifty programming issues rather than what would the users think.
Re: (Score:2, Interesting)
Re:Backwards compatibility is very important (Score:5, Insightful)
That's the way life is, I'm afraid. Most people who are depending upon these sites and software have no control over the vendors and definitely don't have the ability of fixing the code themselves.
Changing the API so greatly and so often in a non-backwardly compatible fashion does cause genuine problems.. and hosting sites can't afford to support multiple versions. Well, not unless they charge their customers too higher price for hosting their pages.
Re: (Score:2)
One major issue with PHP is old cruft, such as magic quotes, that were terrible feature additions in the first place. These are so bad it's really in everyone's best interest to remove them. I think features like POSIX regex, however, should remain because they don't do any harm.
Re: (Score:3, Interesting)
May not seem like a big deal until some idiot doesn't update his scripts and some script kiddie comes along and you get 350 calls from your clients asking you why there's some terrorist propaganda on their website.
Re: (Score:2)
also you should note that, the same customers would make much more stampede when they are asked to pay for development work for their running estores, because php team had decided to deprecate some features, for the second time in 1.5 years.
Re: (Score:2)
actually not (Score:2)
Re: (Score:3, Informative)
Re: (Score:2)
The part where I said there are ways to run different versions of php for different users didn't seem to register for you either.
Re: (Score:2)
Re: (Score:2)
You sound so very bitter
u.s. people tend to use this a lot, and i really dont see that it fits any situation, leave aside this one.
and your only argument seems to be "you'll break hosting providers".
you missed the core of what i posted then. you should read again.
Any hosting provider that can't handle this change does not deserve to remain in business. Honestly, this is a very small change that should not be difficult to incorporate into an existing hosting service.
its not about providers, pal. its about users. if you go up to php 5, 6 and clients have their estores broken, only to learn that they have to spend considerable bucks on having their stores upgraded, recoded, or anything during the course of the same 1.5-2 years, AND therefore decide that they should change their software and jump to
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
world is not a programmers' haven. there are a lot of people apart from us programmers. regardless of what we may see as 'idiotic', people may need to use them at a given point in time, and they may use them, and they may have to stick with them. you cant go jacobin on issues like this.
Re: (Score:2)
Unless there is a really compelling reason to add a third apache/php, I don't think we'll be quick to adopt this version. The better OO support in php5 made it something we wanted just for the stuff we write, but there doesn't seem to be much in php6 that is that exciting.
Re: (Score:2)
Re: (Score:3, Insightful)
Re: (Score:2)
Re: (Score:2)
For real? If the code is even half decent, the bulk of the changes should require a handful of global find/replaces. You really think the people who don't fall into that category, who couldn't be arsed to write good PHP, are going to spend the orders of magnitude more time learning another language and finding a host that will accommodate their poor practices, than troubleshooting existing code? And so what if they do? Good riddance, and I think the folks behind PHP would agree. After all, the language has such a negative reputation not for becoming a modern language with features real developers expect it to have, but from having major issues related to past encouragement of bad habits (such as the magic_quotes and register_globals nonsense). If PHP is going to continue to grow into a viable, scalable, respectable language that can be trusted for serious web applications, I don't think we need to worry about coddling the folks who can't be bothered to write decent code in the first place.
thats the attitude im campaigning against. this is pure elitism, even if it is for the good.
masses of small businesses do not give a damn about 'good php', 'poor practices', heck, even the nifty words we use to hype software like 'scalability' or anything. they dont care about any opinions like 'the nonsense that are magic_quotes and register_globals' either. these doesnt mean anything for a 55 year old estore owner from Pennsylvania.
we cant write down such people. regardless of what kind of software
get_magic_quotes_gpc (Score:2)
Re: (Score:2)
Re: (Score:2)
Besides, PHP programming should be as independent as possible to PHP settings.
Fine, that's great. Going forward, people writing for PHP 6 can forget that magic quotes ever existed.
But there is still a lot of code out there written in contemplation that a PHP 4/5 system wasn't installed by the person writing or installing the scripts (such as shared server environments), meaning that the magic quotes setting is immutable for practical purposes. That means that the script author has to check whether the system is using magic quotes and handle the affected input strings accordingly.
I
Magic Quotes was never a security function. (Score:3, Insightful)
Real change (Score:3, Insightful)
Change . (string concat) to +
Change -> (pointer-to-member operator) to .
Done. Huge productivity increases.
Thank you.
Re: (Score:2)
I can think of a dozen things off the top of my head that would make PHP a better language, or at least make it suck less.
And this is what you came up with?
Even of all the syntax tweaks -- and there's so much more that's wrong with PHP than syntax -- I can think of so many more useful things to do than that. In fact, having concatenation be different than addition is a feature, not a bug -- if you add 2 and 2, you always get 4. If you concatenate 2 and 2, you always get 22. With + meaning both, you h
Re: (Score:3, Informative)
PHP is a loosely-typed language.
The '+' is also the arithmetic operator.
Is a line of code reading
$c = $a + $b
adding $a and $b? or is it concatenating them?
What if $a = 513 and $b = 4201?
Are we talking about a phone number? Or am I trying to come up with $c = 4714?
There was a very good reason for having '.' as the concatenation operator.
Why PHP sucks (Score:2, Informative)
Related news is that PHP runs much better now on Windows Server 2008, as per the official Zend statement. But I doubt we will see too many people switch to WISP. This is flambait, agreed.
Also if you now have a PHP-fed brain with no place for anything else, with the new namespaces-on-steroids (http://www.php.net/manual/en/language.namespaces.using.php) change, you'll li
what's with the 'phpsucks' tag? (Score:5, Interesting)
Perhaps we need an article on 'why php sucks' ?
Re:what's with the 'phpsucks' tag? (Score:4, Interesting)
It's not the lack of modules that people complain about. PHP is excessively convenient, if nothing else. :)
Re: (Score:2, Informative)
Re: (Score:2)
Why PHP does NOT suck (Score:4, Insightful)
From the simple standpoint of "concept to implementation" - PHP ROCKS. It's very, very fast, requiring little in the way of "planning" and "structuring" while letting the features come out... FAST. It is, bar none, the best RAD environment I've yet worked with. Not that it's the best in every area, but that it clearly has the best balance between features and "gotchas". It has its weaknesses, such as lousy error reporting, but even that can be largely mitigated with a little intelligence in advance. But it really does have a number of key strengths that I leverage to the hilt:
1) Stability. It just doesn't die. Ever. I've never, ever, ever had a problem with PHP "not working". I don't troubleshoot it. It's there, it works, and I don't sweat it.
2) Scalability. It's "share nothing" approach makes clusting and random-host selection boil all the way down to a simple session manager. Having 1 or 10 application servers running side-by-side is almost trivial!
3) Code density = excellent! It's a fairly dense language, meaning that lots can get done in a few lines. Just for giggles, I've written a self-forking, multi-process daemon with a process manager and hundreds of managed children forks performing a deep-level network scan in like 50 lines!
4) Security. Yes, you heard me correctly. Although you can certainly use PHP "wrong", you can also use it "right". Once you do, you discover that PHP has a number of features that make things like SQL injection and shell parameter expansion a thing of the past. Really. Learn your tools!
5) Flexibility. You can run it as a module inside Apache. You can run it as a standalone executable. With tools like Ion Cube and PHP-GTK, you can create a cross-platform GUI application without revealing source.
6) Availability. Any $5/month web hosting company supports PHP, and there are many free ones, as well. You can download a CD, install Linux, and have PHP/Apache up and running in under 10 minutes. There are batrillzions of apps available A LA SourceForge for free. PHP is the most commonly available web development language. And, by no means is it a web-only development language!
Sorry you can't handle a few quirks in the function names. (so write out a file of wrapper functions - DUH!) Sorry that it's attempts to simplify variable management weren't perfect. Geez. Just code in c and be done with it, why don't you?
In short, PHP is everything that VB and
Re: (Score:3, Informative)
1. Stability isn't that great. I've run into many glitches over the years and had my share of segmentation faults fixed. Ever run make test on a build? I've never once had PHP pass all of its own unit tests.
2. PHP is so inefficient with memory that anything but the most simple application can take tens to hundreds of megabytes. This isn't a huge deal though, because gigs of ram are pretty cheap these days.
3. PHP seems sim
New PHP features are great and all but.... (Score:5, Interesting)
For exmaple take the newish try / catch exception features. On first glance you think "finally I can write decent exception handling into my own code" - which is great for your own exceptions but too many of the core functions used by your code or by a framework you're using don't throw exceptions - they indicate an error codition in the function's result.
So now we're seeing loads of code out there by people trying to do things "The right way (tm)" but it's full of bugs as there's exception conditions being raised by core functions that don't get caught by the catch blocks.
The line from TFA that concerns me is "Much improved for PHP V6 is support for Unicode strings in many of the core functions"
Many? That will means developers will start using unicode only to find scattered lines of code throughout the app doesn't work as the core function it uses doesn't support unicode. The overhead of keeping track of which functions do and don't support unicode will be a nightmare.
Exception support only half works in PHP5 (Score:2)
function a() { new DateTime("2007-02-32"); } register_shutdown_function("a");
Generates:
Fatal error: Exception thrown without a stack frame in Unknown on line 0
Tracking down such an error in PHP 5 can be quite time consuming since current debugging solutions only work in very limited situations.
Re: (Score:2)
IBM: Low quality as usual (Score:2)
function is_authorized() {
if ($expression_that_returns_boolean) {
return true;
} else {
return false;
}
}
and
echo "Welcome, $_GET['cross_site_scripting_attack']!";
I guess PHP needs magic_entities
Re: (Score:2, Insightful)
Re: (Score:3, Insightful)
Had PHP4 been perfectly designed, and perfectly well-suited to what people are now using PHP for, there wouldn't be any need to change it at all. But PHP isn't perfect. They've found ways to make it better. They could fork off a new project containing those changes - but PHP6 is more like PHP5 than not - an
Re: (Score:3, Insightful)
I would think swapping mysql for XML would make things run slower on the whole, especially large databases, but I'm not an expert in that field. XML and mysql really serve different purposes, and I don't think replacing mysql with XML would be a good idea for the vast majority of use cases.
Oh, and what happened to the spiffy discussion2 stuff? Now comments open in new pages again and I can't reply inline. What's up with that?
Re: (Score:2)
Its not the best approach for all intents and purposes (only 95% SEO compliant) but it has also enable a siwplistic approach for adding a
Re: (Score:2)
Re: (Score:3, Insightful)
XML is a format designed to transmit data between machines, not for data storage.
Imagine a 50 gigabyte database. I have one.
Now imagine the same database in XML.
The size would explode and you suddenly have to seek the entire db for a simple select.
Re: (Score:2)
Re: (Score:2)
Suggesting that XML can replace MySQL is like suggesting that power steering can replace fossil fuels. Power steering may be good, and fossil fuels may be bad, but they're also completely orthogonal.
Now, if you were talking about an XML database, or a document-oriented database, your comment might make a bit more sense. But for a single machine, MySQL probably beats both of those -- it's only really going to be a benefit if you start scaling to large clusters.
Re:Is this really news? (Score:5, Insightful)
Re:Is this really news? (Score:5, Insightful)
Re:Is this really news? (Score:5, Informative)
What makes PHP nice is that, language-wise, it is basically C plus a subset of C++ wrapped up in a scripting language. Almost any code written in C (or C++ without templates/exceptions/other icky stuff) can be trivially ported to PHP by replacing the type names with "var" and adding dollar signs in the right places. (I'm exaggerating slightly, but not much.)
PHP doesn't have any weird syntax like Perl regular expressions---you can do Perl regex, but it is neatly encapsultated into proper strings the way it should be. There's no having to manually re-indent dozens of lines of code because you needed to add another nesting level and whitespace is part of the language, etc. It's just a really clean, lightweight OO language that's exceptionally easy to learn and happens to integrate very well with HTML.
Don't get me wrong, PHP has plenty of weak points when it comes to performance (particularly when dealing with massive complex data structures), availability of modules to do various obscure things, etc., but as a language, it is pretty nice, IMHO---mainly because it isn't a kitchen sink like Perl.... :-)
Re:Is this really news? (Score:5, Insightful)
Re: (Score:3, Informative)
Re:Is this really news? (Score:5, Interesting)
Loose typing and non-strict syntax in general is particularly well suited to the internet because each request generates a completely new environment. Something that was wrong with the previous request, unless specifically stored, doesn't affect the next request. Strictness in programming stems from the need to keep far flung parts from affecting each other; the web is modular by nature and thus resistant to wide spread bugs. Thus, loose typing and other, less strict forms of programming that make life easier at the expense of fragility is counterbalanced by the modular nature.
Many won't agree with that analysis, and that's fine. Sloppy coding has gotten more than one web project in trouble, and more than one feature of PHP's that was intended to make life easier ended up going to far and introducing security holes. But that doesn't change the simple fact that PHP was made for the web and has conveniences built into the core that other languages either don't have or require an add on for.
Re:Is this really news? (Score:4, Funny)
Did you have to shower after writing this? Did you at least burn the keyboard?
Re: (Score:3, Funny)
It's the only way to be sure.
Re: (Score:3, Insightful)
That's the problem with PHP. It requires all the hard work of writing C-like code, without any of the benefits that one might chose C for.
Re: (Score:3, Interesting)
All this code is doing is accepting a method name, validating it as valid (yes, an Enum dt would help here), and returning it if it is.
In which case, this is much better:
if (is_callable($method)) {
return method;
}
Or, more on point, you'd never even call the __call() method, you'd just call is_callable().
I think the point is to show a plausible example of PHP being "hard work like C."
I'm not a PHP apologis
Re:Is this really news? (Score:4, Insightful)
What if you want to append a number to a string? Given that standard C doesn't support overloading, would you have to write a new *differently-named* method? It'd be a nuisance to have to keep track of all the different methods when (e.g.) PHP can simply do the whole lot using the '+' operator.
Visual Basic's syntax is different, and I had to learn this all over again when I used it for the first time, because I'm used to C-influenced languages. The mental context switch required and my tendency to keep inadvertantly using C-style syntax (leading to syntax errors) is a PITA.
I wouldn't mind if the VB syntax was nice to begin with, but it's not. It's inelegant and clunky; probably not bad considering it was derived from BASIC, but still inelegant and clunky. It probably got that way because it mutated from BASICs MS-DOS/PC programmers were familiar with, carrying them along with it. However, if (like me) you're not already used to that flavour of BASIC and haven't even used BASIC for years, it's not easy to use at all. It's not even that much like the old BASICs I used to use. Though this is getting away from the main point...
There may be valid reasons for using a different syntax, but those should reflect underlying differences in the structure/approach of the language (even Perl syntax is somewhat C-flavoured in various respects). However, using a fundamentally different syntax just for the sake of it is a Bad Idea. PHP is easier to use because it has a C-derived syntax.
Re: (Score:3, Informative)
First of all, if you don't re-indent your after adding another nesting level, you are making your code hard to read, and if I have to work on it after you, I will hate you for it. This is one of the reasons that Python is so pleasant. It forces people to write decent code.
Secondly, if you're manually indenting each line of code, you should start using
Re: (Score:3, Informative)
http://perltidy.sourceforge.net/ [sourceforge.net]
http://rubyforge.org/projects/tidy [rubyforge.org]
http://tidy.sourceforge.net/ [sourceforge.net]
etc
Re: (Score:3, Informative)
I use Kate. Click & drag to select a large chunk of text, then tab/shift+tab to indent/unindent it. Trivial.
Re:Is this really news? (Score:4, Interesting)
I do want a certain amount of control over the structure of my code, even if a lot of it will be by convention. Having any automated tool try to "fix" someone else's code is likely to screw up things like comments which are cleverly indented and aligned with some code, or similarly interesting code.
And an IDE is overkill in many other ways, yet they still often find ways to miss some functionality I want. That, and I tend to be much more easily able to switch text editors than switch IDEs.
Disclaimer: I'm not GP, and I use Ruby.
Re: (Score:3)
It's a by-demand feature so it's not like Word AutoCorrect. And you should be able to use a nice WYSIWYG editor to build the rules.
This is what you get, for example, in Eclipse and Visual Studio.
Personally, I like things like integrated FTP, integrated subversion, integrated unit testing, and, most of all, an integrated server-side debugger w/ all expected function: breakpoint/play/step control, stack and heap manipulation, etc.
A
Re: (Score:3, Insightful)
Personally, I like things like integrated FTP, integrated subversion, integrated unit testing, and, most of all, an integrated server-side debugger w/ all expected function: breakpoint/play/step control, stack and heap manipulation, etc.
The debugger is the only thing I miss from a "real" IDE.
Subversion is garbage, of the "at least it's not CVS" variety. There are at least some ten or twenty distributed version control systems out there, at least one of which has got to work well for you.
FTP is garbage. Use anything else. Yes, anything else.
These are actually related. I don't really like most of the stuff you mentioned "integrated", as that usually means things like "I have a keyboard shortcut to run unit tests!" Great, but I'm comfortable
Re:Is this really news? (Score:5, Insightful)
OO? Only recently.
Clean? Not even close, not when you've used a real OO language.
But you know what? Perl has a little over two hundred functions in the main namespace. PHP has a little over three thousand, according to this page. [www.tnx.nl]
So, it may not have the kitchen sink in the syntax, but it has the kitchen sink, the bathtub, the plumbing, and the neighbor's shower in the core library.
Finally, I call BS on this:
Oh, and does PHP support structs? What about function pointers? I doubt it's "almost any code". It's easy when you understand both C and PHP, but again, I assert that's true for many languages, particularly popular web scripting languages.
Re: (Score:3, Funny)
That would be a lot easier if you actually wrote proper sentences.
See what I mean?
Which we all totally care about.
I find it quite amusing.
I know you are but what am I?
Re: (Score:3, Informative)
What I've heard the developers say, basically, is that there is no real roadmap for 6.0, since 5.3 has most of the planned features and unicode (the big new thing) will be available sometimes, although not built-in.
Re: (Score:2, Insightful)
Re: (Score:2)
Re: (Score:3, Insightful)
Almost.. (Score:3, Insightful)
But his post is inane.
Isn't it about as basic as it gets that code (outside of Java) should be developed on the same platform that it will ultimately be deployed upon?
If he had done that, all he'd have needed to do was get a copy of the binary as compiled for use on the production server, and their php.ini. Install, copy in the php.ini, and he's up and running in an environment identical to the Prod server.
Barring that, if he'd had gotten their php.ini anyone w/
Re: (Score:3, Insightful)
You're still in school or new to the real world, arent' you?
Of course it should be that way...but, often out there, you run into just this situation. The mgmt. wants a change or something done, but, they don't wanna buy new hardware, etc....
It sucks, but, I've run into systems where the dev. and prod. are on different platforms...and this isnt' just beca
Re: (Score:3)
"Isn't it about as basic as it gets that code (outside of Java) should be developed on the same platform that it will ultimately be deployed upon? "
You're still in school or new to the real world, arent' you?
I do most of my Java web development on either win2k or winXP. (For other reasons I need certain windows apps).
I use netbeans to develop and I generally deploy to RedHat, CentOS or Solaris using different servlet engines. Mainly Tomcat and Resin. I don't remember the last time I had problems deploying a WAR file from Windows to Linux or Solaris, other than what's in Context.xml, which is what that file is for. Sometimes people put things in web.xml that are related to the context and run into issues.
Us
Re: (Score:2)
Re: (Score:3, Insightful)
Re: (Score:2)
Linux 2.4 -> 2.6.
Better example: Anything after OS X. We're up to 10.5 now, but everyone's drooling over it. Why? No numbers at all -- it's just "Leopard."
If they called it "PHP 5.5 -- the version that doesn't suck" or "PHP 5.5 (Quail)" or... put any kind of marketing spin on it at all... it might have as much or more impact than simply calling it 6.0.
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Interesting)
I don'
Re:Major version? (Score:5, Insightful)
The stuff addressed are some of the widest security holes. On top of that the old way of programming PHP and most guides out there encouraged the usage of these bad functions, getting them totally removed is a huge step forward.
Re: (Score:3, Insightful)
Re: (Score:2)
Re:Too Little Too Late (Score:4, Insightful)
That is not the language's fault. Not everyone wants or needs a JBoss server or something equally silly for their website. PHP is still very good. Safe programming in PHP just needs to be preached more to the new users of PHP and some of the self taught people who perhaps learned off the net from someone else with little experience rather than a book since all books I've seen cover the basics on safety.
The only thing that annoys me is the fact it's function naming methods aren't consistent. It shows that it's had input from various places without any thought into standardizing things.
Re:Too Little Too Late (Score:4, Insightful)
Beyond that, and the pervasive "make it easy to do the WRONG thing" un-philosophy, I still haven't heard about it getting lexical scope, closures, and anonymous functions. Of course, this only matters if you're a good programmer (as opposed to merely a Decently Adequate one).
Re: (Score:2)
Um, no it's not. It's only downfall is that it's too easy to do powerful things so idiots make dangerous code.
Most people don't write their own php scripts, they use what other's have written. And if one big vulnerability gets discovered in a script and you start seeing a bunch of websites getting defaced or worse. Most people are using some sort of shared hosting, so your site may get affected even if you don't have any php.
Since it takes less resources and performs better, most hosting companies run all php scripts as the same user. Yeah there are ways to jail it to a certain directory per user but that's not
Re: (Score:3, Insightful)
Re:Too Little Too Late (Score:5, Insightful)
Re: (Score:3, Insightful)
Won't change a thing (Score:2)