I have a simple question. User A wants to send to user B some IOU. There is no trust between A and B. There is no possible risk for user B. Can this be done without establishing a trust line? If no, why this is not allowed?
To pay someone, say, $10, you must deliver to them an asset that they have decided is worth $10. A person can never be made to hold an asset they did not agree to hold. These are core Ripple design rules that apply to all IOUs. The main reason for not allowing the "harmless" payment is that it might not be clear to the recipient that the payment is one he is free to ignore and this can create complexity for the recipient who may be legally obligated, for example, to refund it.
This was a close call though. We could have allowed this kind of payment with a special flag and designed the client to show those payments in a special way, and we could have added an account flag to indicate that you refuse these kinds of payments The added complexity and risk of confusion didn't seem to be justified by any significant benefit.
User A can only send IOUs that user B trusts.
Trust does not have to exist between A and B.
So if user B only trusts bitstamp for 100 USD and has 50 USD already in that wallet :-
User A can send up to 50 USD to User B as long as the issuer was bitstamp
The protocol will only allow IOUs to be sent to an address (from another address) which has a trust for them and then only up to that amount of trust.
The reason is to stop an address receiving IOUs it does not want.
User B might have a bitstamp account and knows how to redeem them. They do not want User A snapswap USD IOUs which you need a snapswap account to redeem to fiat.
There could of course be a path which exchanges snapswap and bitstamp USDs and so to User A it looks like they are sending their own USD but User B actually receives bitstamp USD.
In ripple, both parties need to share a trust link in order to send IOUs between themselves. It doesn't need to be direct, but there needs to be a link. Most commonly it will be a trust to a Gateway. Alternatively, users can send themselves ripples without trusting any party (or one can say that they need to trust the Ripple system in that case, but that would be just semantics), but that wouldn't be an IOU.