Wow, this turned out to become quite a long discussion! 😳
I really appreciate that you guys spend so much time talking about this topic -- it shows that you really care about Starling.
I presented my views on this already in several threads in the past, when I made the decision to go without prefixes; and even if you convinced me that the decision was wrong, it would be -- as many of you already noted -- too late to change that now, anyway.
In summary, my decision was based on the following points:
- AS3 uses packages to avoid ambiguities. A framework that adds a prefix to each and every class feels foreign and out of place -- at least to me. (That always reminds me of bad C++ or Obj-C-ports.)
- The reason that Sparrow uses prefixes is exactly that Obj-C does *not* provide any package or namespace concepts. Prefixes are compulsory in Obj-C.
- Yes, if you have to use two ambiguous names in one class, the code does not look nice. I totally agree: that sucks. But the alternative would be to *always* have ugly code (through the non-AS3-ish prefixes).
- With prefixes, you'd always have to think: is this a Starling class or not, even when there's no ambiguity. Why Should it be a "STRectangleUtil"? (That's even worse with utility-functions like "rad2deg".) Without the prefix, the IDE will remind you that there are several classes of that name and you make the decision at exactly that time.
In the end, though, it came down to this: I spent literally *weeks* thinking about the pros and cons of each approach, without coming to a conclusion. (I even had a branch with the prefix for all classes, ready to commit.)
Why? Because you can find good arguments for and against both approaches. So I came to the point where I simply had to decide on one way of doing it -- and move on to other tasks. And, naturally, I chose the approach that my gut feeling told me was right -- i.e. the one I personally liked better. It's as simple as that.
So, as I said: I totally understand your points, and you found several very good arguments. If there would be a perfect solution, I'd happily have made use of it a year ago. But in my opinion, there is none.
I have no problem if you create a fork of Starling that adds a prefix. I guess this could even be automated with a small script, so you guys could update your version (and even other libraries) with each new release automatically.
Again: thanks for showing me how much you care about Starling! I'm sorry that I don't have any better solution for you.