Different pronunciation of "o" in done, lone and gone
Why is gone spelled the same way as lone, when it's pronounced differently?
Because when English spelling was fixed, they were pronounced the same.
In Middle English, there was no fixed spelling of words. The spelling became fixed shortly after Shakespeare wrote.
Shakespeare treats the following words as if they all rhyme in his poems and sonnets:
alone,
anon,
bone,
gone,
groan,
loan,
moan,
on,
one,
prone,
stone.
The same sound change that affected on and gone seems to have also affected shone; it rhymes with gone in the U.K. and lone in the U.S.
On the other hand, this explanation doesn't work for the word done. The only rhymes Shakespeare has for done is sun (which he uses several times), begun, and run. One reason for the spelling of done might be to show the relation with the root word is do. Another reason might be that "u" and "n" are both letters composed of "minims" in Middle English script, and Middle English scribes sometimes replaced "u" with "o" in such words so they would be more readable. See this question.