# WinMX

WinMX (Windows Music Exchange) is a freeware peer-to-peer file sharing program authored in 2000 by Kevin Hearn (president of Frontcode Technologies) in Windsor, Ontario (Canada). According to one study, it was the number one source for online music in 2005 with an estimated 2.1 million users. Frontcode Technologies itself abandoned development of WinMX in September 2005, but developers brought the service back online within a few days by releasing patches. WinMX continues to be used by a community of enthusiasts.
Kevin Hearn released Tixati in 2009 and Fopnu in 2017. Fopnu is a client and a network with some similarities to WinMX. In 2021, he released DarkMX, a serverless file sharing client with built-in privacy preserving features and a built-in Tor client, as well as the ability to host a .onion file-sharing that is reachable via the Tor Browser.

## History
### Beginnings

WinMX began its life as an OpenNap client capable of connecting to several servers simultaneously.
Frontcode Technologies later created a proprietary protocol, termed WinMX Peer Network Protocol (WPNP), which was used starting with WinMX 2 in May 2001. Frontcode Technologies had operated several peer cache servers to aid WPNP network operation.
Downloads can be very fast for popular songs since the user can run a "multi-point download" that simultaneously downloads the same file in small pieces from several users. The WinMX program houses a few built-in features such as bandwidth monitoring, short messaging, and hosting chatrooms and functions as an OpenNap client. Users could negotiate an exchange of their files with the help of the short messaging system or chat. After the transfers start, each has the option of selecting bandwidth for the other to make sure both transfers end more or less at the same time.

### Closure of Frontcode Technologies

On September 13, 2005, Frontcode Technologies received a cease and desist letter from the Recording Industry Association of America demanding that they either implement filters to make it impossible for users to download copyrighted material from WinMX, or shut down. On September 21, 2005, the WinMX homepage and Frontcode Technologies' peer cache servers (central servers essential for the WinMX Peer Network) went offline.

### Resurrection

By September 23, 2005, users were able to download two unofficial patches for WinMX from two unrelated websites. These patches worked by modifying the DNS lookup WinMX uses to find peer caches. When WinMX tries to find the Frontcode Technologies' peer caches, it is instead directed to look up one of the new peer caches set up by the WinMX communities.
In 2008 a new patch was released to coincide with the third anniversary of the two previous patches' release date. Known as the "WinMX Community Patch", it was created through the joint effort of an independent, third-party programmer and the cooperative input and testing from the two communities. Supported and available for download by both groups, it is intended to replace the previous patches being used, allowing all users to once again connect to a single set of peer caches, unifying all users for the first time since the official closure of WinMX in 2005.

### Network attacks

Commencing in May 2011, the WinMX network had been under protocol level attack from a disgruntled community developer (program hacker) who disagreed with those operating the network support infrastructure (user support forums & peer cache operators). As a result of those attacks the WPNP network searches would return random query results (alongside relevant results) that were unrelated to the specific term searched for, and also users were unable to receive a full chat room list. A web based WinMX Chat Room List was set up for users to retrieve a full room list, and also offered the ability to manually add chat rooms to the web list. In addition to offering a live list of chat rooms, it also offered a one click solution for joining chat rooms in WinMX via the web page itself with the WinMX Link Handler. As mentioned above, the protocol level attacks have ceased and the network has been operating normally albeit with a reduction in network users; it's currently too early to assess the percentage of "lost" users but it most certainly exceeds several thousand and may act as a warning for other P2P networks that have protocol weaknesses that can be exploited.

### Tixati and Fopnu

In 2009, Kevin Hearn released Tixati, an ad-free freeware P2P file sharing program based on the BitTorrent protocol, enhanced with a channels function where users can chat, share lists of web and media links, stream audio and video media, with all communications being encrypted.
In 2017, Kevin Hearn released Fopnu, a client and network with some similarities to WinMX. Fopnu is a decentralized network with the latest advances in P2P technology, pure UDP and with all communications being encrypted. The ad-free freeware client includes chat rooms, contacts list (with private messages), search windows, browsing of a contact's library and creation of contacts groups (to control access to your library). Sharing massive amounts of files is much easier (than creating a lot of Torrent files) and has very little overhead.

## Function

There is an upper limit to the size of files that can be shared : 2 GB. This design decision was to maintain Windows 98 support. The program runs also on Windows XP, Windows Vista, Windows 7, Windows 8 and Windows 10, as long as the relevant Microsoft C++ runtime libraries are present. It runs on Linux under Wine.
To get started, users connect to the WinMX Peer Network (WPN) either as a primary or secondary user. A majority of the functions on the WPN are available to both users, but primary users need to spend more bandwidth, tend to have better connections, and have the ability to host chat rooms. Secondary users use very little idle bandwidth, but their prolonged connection to the network is not always stable.

### Sharing files in WinMX

WinMX users can share nearly every type of file using the network. The most common file types such as audio, video, images, and archive files are available by default, and all others could be configured in the program's settings. WinMX has a file-size restriction limiting shared files to 2GB in size. A user can also only share 5,000 visible files for a Primary connection (unknown if other files would be shared but not listed), and 3,000 files (maximum sent to the primary) for a Secondary connection. These limitations do not apply on OpenNap servers.

### Searching for files

Users can search for almost any file in WinMX. When a user sends out a search, the search is spread throughout the network. If a file is found, the hash of the file along with IP address and Primary node details of the user with the file is sent to the user who made the search. Searches can also be made with hashes instead of words and numbers.

### Chatting

WinMX allows a person to host chatrooms with its built-in Chat function. There are some rooms reserved for chat, some for trading files, and some which allow both. At its height WinMX typically had around 1,500 to 2,000 chatrooms at any given time in a multitude of languages. WinMX also allows its users to message each other using its Private Message function regardless of whether or not they were in the same chat room or are downloading from/uploading to each other. However, settings allow any user to block messages from users if they choose. It is also possible to host chatrooms in languages other than English, such as Japanese, German, French and Italian.

### OpenNap

WinMX started out as a Peer-to-Peer program that connected to OpenNap servers. It can still connect to many OpenNap servers. These servers enable users to connect to a wider userbase and also receive many more search results. Two advantages of running OpenNap is the ability to have a permanent list of friends called a hotlist and the ability to display an unlimited number of files for sharing.

### Translations

WinMX is natively English, but language files can be installed to translate menus into the following languages: Chinese, Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, Russian, Sardinian, Spanish and Swedish. A fair number of the chat rooms are in German, Dutch or Italian.
In 2002, the Recording Industry Association of Japan releases a report finding 84% of Japanese who had used file sharing software reported using WinMX, mainly to share J-pop mp3's. WinMX continued to be the main file sharing client in Japan until it was overtaken by Winny and LimeWire in 2007. Even as late as 2013, Palo Alto Networks was finding that WinMX was the 6th most popular network in Japan.

## Third-party programs

In addition to the program and patches, developers and WinMX users created third-party programs to either enhance the chat room function or to control uploading by other peers.

### Chat

Most of the software was made by third-party developers for use in the WinMX chat rooms. They include bots, servers to host rooms, and plugins. Bots were used in the chat rooms to either make it more lively, introduce games, or to moderate users, maintain lists of the files a user in a chat room has, and more. Other plugins performed automatic functions including displaying music files currently playing on the user's computer and aid in posting colored ASCII pictures in rooms.
Third-party chat servers were used primarily to host chat rooms on the network. This is because of the improved administration systems in third-party servers as well as the ability to host a chat room without having to use the WinMX client. Some third-party chat clients also contained useful shortcuts or menus to make administrating a channel easier. For normal users, chat clients or the WinMX client itself could be used to view rooms independently of the server. Web listings of the chat room were also available.

### Upload managers

Upload managers (MxMonitor and Leechhammer) can be used to control the upload rate of peers and can block certain kinds of peers from downloading, including those who do not share any files.

## Replacement clients

An initial project called WinPY attempted to make a replacement open source WinMX client. The WinPY project was the most successful replacement client project as a preview alpha version with limited basic functionality was released; however, it quickly stalled due to lack of interest. There have also been several attempts to start new projects to create replacement clients however most have stalled before releasing anything fully completed. One project announced on a major WinMX community site was initially scheduled to be released in November 2012, however there were many published delays due to lack of skilled programming support. The project was finally released to public testers as a beta version on September 22, 2013, and under a new name (OurMx) and further releases will continue to be made prior to a formal client release. Historical information regarding the OurMX client progress can be viewed by following the link below.