So on what do you base your argument that this was miscommunicated? On the fact that people on reddit and /. misrepresented the decision (probably because of lack of knowledge)? If you trusted us before, why don't you trust us anymore? It seems like you for some reason choose to believe the people that are trying to cause some panic? All we said was that \ is the separator and provided links to RFC's that explain the decision process (albeit in only a semi condensent format - more condensed than the mailinglist archives, but less condensent than one single coherent document could have been).
Now why did we communicate things this way? Because there is no release out yet! We announced this on the internal development mailinglist for PHP. Not on an end user website. We were obviously looking to have some documentation in place (if only an updated README) for the next alpha release. For the RC phase all things would be documented in the manual.
Now again, some people who read internals decided to stir a panic. Should we have anticipated this? We make decisions on internals all the time with much less documentation or sometimes with only a commit. So pardon our lack of preparation.
Lukas, the development community has always trusted your team to deliver the best experience possible. But you vastly underestimate the disgust that we have that you decided to use the \ as the namespace operator.
There has to be a better alternative. And then when the community, as a majority, decides to complain about it, you tell us to go use another language if we don't like it? Do you have any idea how disrespectful that is? You forget it's the community that supports you. It's the development community that you insulted. And while I may not know every line of code in the PHP internals, I'm far from naive about the issues. And if there's some things that I don't see, please write them out. If this is indeed unavoidable I'd feel much better knowing why.
I feel that there is a better solution to this mess. Why not stick with ::, but throw an error if a namespace and class conflict when being defined? When should a namespace have the same name as a class anyway? How about prefixing the name of a namespace with a special character that cannot be used in a class name (like variables do with $)?
The "\" character is just too hard to swallow. It can easily be confused by "/", and when defining a class name in a string, gets confused with the escaping character. I read the characters talked about in the wiki, and I just don't feel like you tried everything. Or at the very least, thought of other solutions outside of changing the operator. Think outside the box!
"stop whining" is all i can read, when someone complains about the decision the core developers made regarding the namespace separator. i don't think that this is the right way, to talk to the php community.
instead you should set up a FAQ, some good documentation, WHY exactly you choose this separator. the RFC is not clear on this. in my opinion you should carefully listen to the php community on this topic, because it's such an important feature.
I am not saying that people who feel that the \ is a bad choice should just disappear problem solved. What I was saying that a lot of the most vocal critics seemed to not care about PHP anyways, they were just bashing. I think we have made it quite clear what we felt were the problems with "::". We decided that the ambiguity issues were severe enough that we cannot go with it. A lot of people agree with this, a lot do not. It is hard to get solid numbers on this (we simply do not have the infrastructure for this and I do not really see how we should hold a vote with all of the community). So we have to go with what a significant number of active developers felt was right, which is that we needed to solve that ambiguity issue.
Again, some of us have spend countless hours mulling over all of the alternatives and the implications and we knew full well that the \ is not a dream come true. But we still went with it. So far I have not heard a single reason that people state that we did not consider during our discussion. So it boils down to the fact that some people weigh the options differently. For us the \ was not beautiful, but the fact that the \ is used in an entirely different context meant that we did not feel there was much danger for confusion. I find it very weird that the same people that argue that \ is widely known as the escape character say in the next sentence that people will not know how to write identifiers inside a string. So either people know about that \ is the escape character or they do not know about escaping, which is it?
Anyways, the next release will be alpha3. What I ask is that all these people complaining actually give us the benefit of the doubt and try it out. Currently a lot of replies are presented in a very emotional manner that can be easily dismissed as a "knee jerk reaction". If someone comes along and shows us a couple thousand lines of code to show the problem then we are much more likely to listen. If you read the replies then I do not remember a single person saying that they tried it out and came to the conclusion its bad. On the other hand I have seen several people that have posted that they tried it out and found it to be not as bad as they expected.
Now if we get some solid feedback that indicates we made the wrong choice, then we decide to reconsider (which probably would mean dropping namespaces from 5.3 and postponing for 6.0). Remember we are only humans who spend a lot of our spare time (this goes even for the guys who are full time on PHP) to this. We work hard to make the right choices, so if we do make the wrong choice at times, it would not hurt if you made it easy to accept this, by choosing appropriate forms of communication (like not talking about april fools, showing that you are willing to think about this seriously by reading the RFC's, trying it out with some code of your own etc.). If we all stay reasonable we can meet in the middle. But saying "its ugly" is probably not enough to convince us at this point.
Thank you for working hard on that and standing all that bashing.
Even though the simple and plain "dot syntax" of other languages looks very beautiful I think that using clean different charactars can also be seen as a feature: you always see instantly in what context the code currently is. So actually I very much appreciate the decision agains "::".
And for the backslash: it seems there is simply no better character available. I personally prefer one single character over a double one. So go for it and finally push the new php version to a stable state.. Can't wait any longer.. ;-)
Looks like some people have never used a Azerty layout...
\My\NameSpace\To\Use
-> Alt-gr + \ + My + Alt-gr + \ + Namespace + Alt-gr + \ + To + Alt-gr + \ + Use
While i don't know the internal workings, but even from my perspective, as a novice how just read up on the issue:
- Odd looking. Its just looks strange. - None standardized vs other programming languages. - Editors are going to have a field day. - Escaping anybody? - How about a exec with escaping and namespacing mixed. ;) - Problematic for none Qwerty users. Especially for Azerty users, as \ = Alt-gr + \. Try typing that a few times, and you will notice how it breaks your programming type rate. Especially as its something that can end up being used a lot...
I expect that this decision is going to haunt the php project for lots off years. To be honest, its not the first one that has put people off. I'll give a hint ( this has been going on from 2000 );
-> function x ( xx => zz, aa => zz ). Rejected ( for how many years on a row? ).
Or my also favorite:
-> array( xx => zz ) = [ xx => zz ]. Rejected ( even when there has been a patch that worked available ).
Its a shame that at times the developers seem rather dead set on not listening ( even when people have patches that actually work ). Yea, writing the array() all the time does get in the way. I find it rather funny when you read some off the arguments from a few developers stating the problem that they don't want the alias for consistence ( when a lot off functions are aliased ).
Please keep in mind that IDE's will get people around typing most of the backslashes. So in effect when typing out a namespace identifier, one probably only has to type the initial backslash and most IDE's support macros, so even that can be put on some short cut.