Much of the crappiness of Adium is a direct consequence of the crappiness of the protocol. MSN is particularly egregious - it is a protocol with almost no structure.
I've written (simple) MSN clients before, and the protocol (or what passes as one) is shocking. It's very clearly a protocol originally intended to exchange strings that has been overloaded with over 15+ years of new features and corporate strategies.
MSN support in Adium comes from libpurple, whose MSN support has always lagged behind the official client due to backwards-compatibility-breaking protocol changes, lack of documentation, and difficulty in reverse engineering. Frankly, I'm surprised MSN in libpurple works as well as it does.
File transfers (particularly MSN transfers) is also a crapshoot due to both bad, undocumented protocol design as well as the base technology. You're running into classic NAT issues that the protocol was never designed to take care of. Who you're sending to and what kind of router they're behind matters a lot.
tl;dr: MSN support in Adium sucks because the MSN protocol is awful.
I've written (simple) MSN clients before, and the protocol (or what passes as one) is shocking. It's very clearly a protocol originally intended to exchange strings that has been overloaded with over 15+ years of new features and corporate strategies.
MSN support in Adium comes from libpurple, whose MSN support has always lagged behind the official client due to backwards-compatibility-breaking protocol changes, lack of documentation, and difficulty in reverse engineering. Frankly, I'm surprised MSN in libpurple works as well as it does.
File transfers (particularly MSN transfers) is also a crapshoot due to both bad, undocumented protocol design as well as the base technology. You're running into classic NAT issues that the protocol was never designed to take care of. Who you're sending to and what kind of router they're behind matters a lot.
tl;dr: MSN support in Adium sucks because the MSN protocol is awful.