To me, the rules are quite clear:
sort shuffle reverse etc... -> perform modification in place
agreed.
sorted shuffled reversed etc... -> answer a copy
If you're aware that this convention exists, then ok. BUT: I've been working with Pharo for over 4 years now and I wasn't aware of it. Since we want to make Pharo accessible to new users it is my oppinion that this convention isn't a good one. Especially since messages that answer a copy usually are named #copyXXX. To me, there is no semantical difference between #shuffle and #shuffled, the message names are not revealing in this case (again: personal oppion).
I hope the methods comments are clear. Does PBE tells about these conventions? It would be a good thing.
And I don't like to have mutexes in base library, the less we have, the better.
If a user is going to modify the same object concurrently, he/she takes care of mutual exclusion.
Agreed. BUT: the Random object used by these methods is the same one that is used by #atRandom for instance, hence the race condition. There is no way anyone can safely use these methods without the mutex, single threaded or not. Calls to methods using that same Random object can be all over the place and also in the base system.