How Discord Was Ported To Windows 95 And NT 3.1

On the desktop, most people use the official HTML and JavaScript-based client for Discord in either a browser or a still-smells-like-a-browser Electron package. Yet what if there was a way to use a third-party client and even run it on Windows XP, Windows 95, and NT 3.1? This is exactly what [iDontProgramInCpp] did with their Discord Messenger project.

Fortunately, as a web ‘app’ the Discord API is readily accessible and they don’t seem to be in a rush to ban third-party clients. But it did require a bit of work to add newer versions of TLS encryption to Windows XP and older. Fortunately OpenSSL still supports these older platforms, so this was not a major hurdle and Windows XP happily ran this new Discord client. That left porting to older Windows versions.

Most of the challenge lies in writing shims for API calls that do not exist on these older platforms when backporting software from Windows XP to older Windows versions, and GCC (MinGW) had to be used instead of MSVC, but this also was a relatively minor detail. Finally, Windows NT 3.1 was picked as the last challenge for Discord Messenger, which ran into MSVCRT runtime issues and required backporting features to the NT 3.1 version that was still part of the OS back then.

[MattKC] covers the project in a recent video, as well as the AeroChat client which targets Windows Live Messenger fans.  Hopefully the API that allows these projects to operate doesn’t get locked down, as third-party clients like these bring their own unique advantages to the Discord ecosystem.

26 thoughts on “How Discord Was Ported To Windows 95 And NT 3.1

    1. That was my first thought, too.
      Win32s 1.30 is more advanced in terms of API level than NT 3.1, except for threading.
      It has certain Win95 compatibility, which NT 3.1 hasn’t yet.
      SSL might be the problem, though.

    2. Win32s does not have support for threads. Because I use some relatively bloated C++11 libraries (asio, websocketpp, httplib) instead of more light C alternatives (which I found harder to integrate at the time), and because both DM and OpenSSL (the SSL library) use threads, Win32s does not seem like a possibility at this time. However it is very possible to replace the entire HTTP+SSL and WebSocket backend with something that uses purely non-blocking network I/O to get it to work on Win32s.

      But then you have the problem of the limited resources. Win32s does not provide more than 16 MB of memory for each application, and you are limited by the global GDI and USER resource limits.

  1. Hardware/electronics hobbyists mostly design and make stuff for their own personal or niche community use case
    Software hobbyists on the other hand either make mega useful software which is used by thousands of people across the world or port random pieces of software to Intel 4004 or whatever

    I find it hilarious

    1. Only because it’s easy to copy software, it costs more to copy hardware objects. If you could produce electronics with one click after download, electronics hobbyists would make usable products too.

      1. I was going to agree, but then I thought about the many famiclones and bootlegs, the xxx in 4 cartridges etc.
        These noname famicom games did include PROMs and mappers, after all.

    2. This software project is very practical, also.
      Discord is being used in vintage computing community, I mean.
      So it’s just natural if users can use Discord directly on, say, a Win98 rig.
      That makes the whole hobby more real, I think, if no modern PC is needed.
      Of course, using good old forums such as vcfed forums would be even better.
      Forums are open and an valuable resource of information to anyone.

  2. In some ways that client looks better and easier to read than the current one. Yea massively un-modern but if you can let yourself stray from the fashion of it and go straight to useability it looks nice.

    1. Hi, I think it looks very tidy and logical.
      Like the old skins of Wikipedia (Vector 2010, Monobook).
      Because to those who’re looking for information, a structured design is useful, even if it’s not the most pretty.

      Also, I think that Vista’s Aero Glass was much better/modern/elegant/sophisticated than the bland design of Windows 10/11.
      But that being said, I’ve never been a fan of minimalism, either.

    2. I think such old GUIs feel “un-modern” because we’re used to compare everything with the smartphone.
      So it happens that a truely primitive, dumbed-down GUI (smartphone) feels superior to that of a fully functional operating system (desktop).

    1. I didn’t add that, it’s his username on YouTube and elsewhere, and was how he was credited in the video. Somehow his GitHub username appears to lack the ‘Dont’, but I have no idea if that’s the same person or what the story is.

  3. I had to look up what Discord actually was :) . Obviously I am not in that ‘loop’…. Nor why you would want to port it to Win 95, but then we all have to have a hobby :) . ha!

    1. This is simply not true. Newer OSes are more stable than their predecessors, include more features, and get optimized better for the current hardware. (For example, Windows recently introduced support for heterogenous processor architectures such as ARM’s big.LITTLE or Intel/AMD’s P- and E-core system)

    2. Well, the base Win32 API had been complete by late 90s, already.
      But that doesn’t make for a complete OS yet.
      It needs driver models for device drivers, multi core/multi processor support in the kernel, a scheduler, virtual memory managment.
      A network stack, network protocols and so on.
      Especially Windows NT runs Win32 as a separate subsystem, on top of the native API.

        1. Operating systems are always are product of their time, sort of.
          It’s more than just running applications, but also about interfacing with the outer world.
          Original Windows 95 didn’t support USB or FAT32, for example.
          Windows Vista added support for TCP/IP v6, among other things.
          Sure you can run ordinary Win32 applications on both of them, but it’s not much use if the OS can’t cope with the technology that surrounds it.
          For example, large HDDs. Windows XP was limited to 2TB for internal HDDs (MBR, NTFS).
          Windows 7 supported GPT and larger internal HDDs.
          Then there’s renoval of BIOS/CSM and VGA BIOS.
          Many modern PCs can’t even boot into Windows 98SE or XP anymore.

Leave a Reply to JoshuaCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.