Time Compression

Obligatory acknowledgement of blog neglect.

Now that’s over with, here’s a new project I’ve been working on, and an observation that although an online service can feel like it’s been around forever it’s not as long-lived or immortal as one might imagine.

In the UK during the 2000s, when many Americans might’ve been chatting to their peers using AOL’s AIM or Yahoo’s Y!IM messaging clients, the platform of choice seemed to be MSN Messenger. Spawned from Microsoft in 1999, this instant messaging service was much like any other, offering a free chat platform with basic text conversation and contact management functionality, and a desktop client with which to connect to and use the service.


MSN Messenger 1.0 running on Windows 95

For teenagers with a computer, or access to one, this provided a private channel to conduct their social lives through, as nobody had invented Facebook yet and mobile phones were still reasonably expensive (and generally not very smart either). As a result, it left a mark on lots of people who were growing up at the time, searing a brand into memories that today evokes nostalgic pangs whenever someone reminds them it existed. Long story short, Microsoft bought Skype in 2011 and then decided to throw the well-loved MSN Messenger (or, by this time, Live Messenger) brand and clients totally out of the window, shuttering the service in 2013 (or 2014 for China).


MSN Messenger 2.5.0 for Mac, running on MacOS 9.2.2

Unfortunately, this means that anybody wishing to timeshift and experience the look and feel of the client over the years is unable to do so, as without the back end service to connect to the clients will do nothing and are stuck showing a login window and perhaps throwing an error about how they can’t connect. I don’t particularly like when things like this happen, so I set about trying to revive the clients by providing them a service to connect to again.


Windows Messenger 4.7 running (and available only) on Windows XP

There have been a few servers written to emulate the service as it was, mostly in Visual Basic 6, although most attempts (although quite functional) are unable to support versions of MSN Messenger/Windows Messenger later than 4.7 as a result of protocol changes. This gets you to about 2002, about three or four years worth of MSN nostalgia. But there’s another decade of history to be had, so I thought I’d have a crack at trying to support later protocol/client versions.


It’s not pretty, but it works. A bit.

I’m pleased to say that I’ve managed an improvement over those early servers, reaching Windows Live Messenger 8.5 (also known as WLM 2008). Partially.


Windows Live Messenger 8.5 running on Windows XP

I’ve not yet implemented much of the required back-end workings and some of the protocol is poorly implemented and incomplete, but at least the majority of clients (spanning about a decade of the 14-15 year existence) are able to log in. I’ve been having issues trying to get later versions to connect, as at this point Microsoft had altered the login process substantially for a third time. But perhaps in time, who knows? For some reason, after version 8.5, Microsoft decided when putting together a version 9.0 beta that the number should jump inexplicably from 8.x to 14. This means that after this 2008 version there were only three more major versions; 2009 (version 14), 2011 (version 15), and 2012 (version 16), released as parts of the respective Windows Live Essentials suites. Technically the Windows 8 Messaging client is an MSN client too, effectively version 16, but unless I support it accidentally I’m not too fussed about it (did anybody actually use it?). So far I haven’t looked at what’s required for webcam, voice, file transfer, or other non-chat functions, but these are on my todo list for future investigation. Chatting with more than one other contact in a single conversation is possible but currently buggy.

I’m not hugely fond of my own code, but it would seem to be a shame to work on this project under the guise of historical preservation and then simply stash it away in a graveyard hard drive, so I do intend to release it in some form. I don’t know when, or in what form, because I’d like it to be more complete first. There are also complications because to successfully support most versions requires multiple servers to manage authentication and, later, contact lists, and the way that’s¬†implemented requires multiple IPs addresses (even though a single machine is sufficient) so some sort of configuration guide (and non-hardcoded test code) would be required. I’m also fudging security aspects of the logon process (pretty much entirely in later versions), so as it stands my server is unsuitable for general use and is ultimately a novelty. I wouldn’t expect that anybody would use it for any serious purpose anyway, but it should be noted that its only design goal is to enable the clients to (mostly) function and that it shouldn’t be considered a viable, stable, or secure method of communication.

In the event that it’s useful to somebody, I have added a list of MSN/WLM client versions that I know to exist or have tested here. It is incomplete, but will probably be updated as I find/test more versions.

Edit: Check out this post instead. It contains links to the current iteration of this information.