Robin2:
That's a very different type of argument against the use of the SafeString library and one which I would find much more persuasive. However I wonder how much work would be required to fix the problems you see?
Most of the other arguments against it come down to "I don't like it because it's different"
...R
I'm not against the work that has been done. it's a great effort to address a recurring issue and it's true that cStrings are tricky for new programmers and a cause of major bugs.
On the positive it can have an educational value. You get reporting about things you forgot to check and given how hard it is for newbies to debug that could help pinpoint their issue.
It might have a negative consequence though in that newbies will just think "I need a bigger buffer"... Questioning how big, or why, or do I need it etc might not come naturally.
I'm looking at this from the other angle - which is "if I were a newbie, would I want to invest time to learn this class, which is somewhat unique to the Arduino world, or isn't it better to invest my time in understanding how to deal with cStrings and have that knowledge I can apply everywhere?" or the angle of helper on this forum or in computer club : "would I rather guide someone to understand cStrings or this class?"
The reason this class is "safe" is that it does not address the hard problem of dynamic expansion or temporary objects or returning a String from a method call — which I believe is what newbie expect (without really understanding).
Newbie want to not have to worry about code like
...
int x, y;
x = ...
y = ...
String cmd = "do this with x = " + String(x) + "and y = " + String(y);
return cmd;
}
it should just work.... And it does most of the time for a newbie program that runs for a few minutes as an exercise.
Fixing this and claiming you are staying safe is not trivial on a UNO...and comes with.... strings attached 
It's also safe because it does not crash if you try to overflow a buffer. But as I'm saying above what good does it bring to me if I'm left with strings that do not contain what I expected ? A message in the console is nice but if my SQL request is incomplete or a ASCII command truncated when I send it because my buffer was too small, I still have a buggy program.
That means in the end I still need to check bounds and size when I do any method call which is exactly what you do with cString and standard C programing style... (and where are the functions to do this.. text in the console does not help there ??)
So all things considered, I won't recommend that class to anyone - I would still encourage folks to use the standard cStrings and associated libraries if they want to write good code for microcontrollers.
Side note: (because it's irritating and I never liked marketing BS) I also would argue that many of the claims the author makes about being safe are marketing claims and just anchored in usual best practice (passing by reference, not blocking the main thread, ...) or lack of capabilities described above dressed up as good things because they are hard to solve problems and create the issues that exist with the String class...