These are the original string implementations by rickg and others. Most of the code here will be made obsolete by the new shared-buffer string (see bug #53065). For the most part, this change is intended to be transparent to clients. The type names you are using for strings now, e.g., nsString, nsAutoString, nsXPIDLString, will still be good, they will just refer to better, but compatible, implementations. If you're interested in learning how strings work, you probably want to start with nsAReadableString.