How are Wine, CrossOver and Proton related?
(What the heck are you even talking about?)
I was informed by our Marketing Director that some folks don’t quite understand the relationship between Wine, CrossOver, and Proton and are curious about it. I couldn’t have been less surprised -- a year ago I was in the same boat.
Like many explanations, I will start with an analogy. Imagine a snail: Wine is like the squishy living creature at the center, and CrossOver is the outer shell that you see and interact with when you pick up the snail. And Wine is not just any snail; this one can replace Windows!
What is Wine?
First, it helps to understand what Wine does. Please bear with me as I rely on another analogy; imagine that Windows, Linux, macOS, and Android are four people who all speak different languages (or “systems” in more technical vocabulary).1 Programs and games can only be written in one language. Developers must write separate programs for each language they want to support; although these programs may look identical from the outside, you are only looking at the shell and they have different snails at the center to use each of the different languages. So Quicken is written for Windows, and when you try to run it on Mac, the Mac machine only hears gibberish. This is why the Mac version of Quicken does not have all of the features of the Windows version - the program “under the shell” had to be written for Mac specifically; it is completely different from the Windows version underneath the pretty graphical shell.
This is where Wine comes in: it acts as a translator (or “translation layer”) so that the Windows version of Quicken speaks to Wine in Windows’ language, but the Mac machine hears Wine “speaking in Mac”. The Mac machine is able to comprehend this and outputs the Quicken spreadsheet you ordered, oblivious to the fact that it is actually speaking to a translator for a Windows program instead of a “native Mac speaker”.
Now that you (hopefully) understand conceptually how Wine works, you might be wondering what CrossOver and Proton are, and why we need them in addition to Wine.
What is CrossOver?
CrossOver provides two main services on top of Wine. 1) CrossOver contains a series of hacks that allow some popular programs to run better in the short-term. 2) CrossOver provides a user-friendly shell so that you don’t need to use a terminal and text-based commands to run your Windows software on Mac or Linux.
To understand why you might need hacks on top of Wine to run your favorite program, it helps to learn a bit more about Wine. Wine is not a perfect translator. It is a constant work-in-progress that is added to and improved by both CodeWeavers employees and dedicated volunteers who believe in the concept that individuals should not be forced to buy Windows in order to run a particular game or application.
Did you catch the reference to the amazing volunteers who work on the Wine project? Wine itself is an open-source project with the goal of freeing users to be able to use whichever operating system they would like, regardless of which programs they need/want to run. If you are interested, here is a deeper explanation of the importance of Wine within the technological sphere.
In order to be able to grow and improve year after year, the Wine maintainer is very strict about which changes are accepted -- in order to be approved and integrated, changes must maintain the integrity of the code and be “correct” in nature. This strictness has allowed Wine to continue to improve as a translator for decades.2 If code was added that improves the functioning of one program but does not provide the true “correct translation,” that code could not be built upon further over time. Since many parts of the code talk to each other, correcting this hack later could range in difficulty from “headache” to “let’s burn it down and start over” depending on how many other pieces of code are touched. As the number of hacks increased, Wine would cease to be a translator and begin to be a program that could only translate the single Windows program for which the hacks were specifically written. Rather than “dirty” the project, the maintainer’s continued strictness has allowed Wine to continue to improve as a translator for every single one of the millions of Windows programs written.
However, let’s say you don’t care about running millions of Windows programs; you only want to install Quicken by clicking a few buttons so that you can update your tax information on your Mac. This is where CrossOver comes into the picture - it provides a shell (remember that snail?) with hacks specifically for Quicken installation. Our goal is always to try to fix bugs by finding the “correct” translation so that we can add those improvements to Wine and the whole project improves. However, sometimes the correct solution could take months or years to implement properly. In those cases, we can add quick hacks to CrossOver so that software our customers care about will continue to work well without dirtying Wine itself.
When you run CrossOver, all you see is the shell - a user interface with buttons. Wine does not have its own shell and must be interacted with via a terminal and text-only commands - we allow users to have access to Wine’s translating skills without requiring technical skills.
What about upgrades? Wine is constantly growing and improving. In order to make CrossOver more stable, we take a snapshot of Wine and write our hacks on top of it. However, we always want customers to have all of the latest improvements, so approximately once a year we will take a new snapshot of Wine's current state. When we upgrade the Wine version, we are adding hundreds of improvements to the inner translating snail but the shell that you see remains the same.
What is Proton?
Let me take a few steps back in case you have never heard of Proton before. Games are a huge category of applications that are often written only for Windows. Steam is an application that allows users to buy, install, and play games all in one place. Several years ago, Steam expanded their service to macOS and Linux (with a brand new shell written for each language of course!), but they were only selling games which had also been written specifically to run on those platforms. Last year, they decided to expand the number of games that could be played on Linux dramatically by including a version of Wine with Steam Play. This version of Wine works in correlation with some other translators and the bundle is collectively called Proton.
Proton is not a stand-alone product like CrossOver; Steam provides the nice, pretty shell. Proton is the name for the translating snail inside that includes Wine and other libraries such as Faudio and DXVK wrapped up inside. If you haven’t heard of these other translators, don’t worry - part of the beauty of Proton is that you don’t have to think about which translators to install or what they are doing. I just wanted to give you a peek at the behind-the-scenes where other translators are working in collaboration with Wine’s own translation efforts behind the scenes to run your game as flawlessly as possible. Like CrossOver, the goal is for the user to be able to seamlessly play games that were only written for Windows without needing to pay for an operating system just to run them.
To wrap this up - Wine can be thought of as a translator that gives you the freedom to run your Windows program or game on whatever operating system you choose. CrossOver and Proton both give a much larger audience a chance to have this freedom. CrossOver provides a user-friendly shell and hacks to improve your experience on macOS, Linux, and Chromebooks. Proton provides a similar service for gamers on Linux in collaboration with Steam which provides the shell. Hopefully this sheds some light what the three project names refer to and a bit of how they work.
Today, you can experience the constant improvement of Wine first hand; we are releasing CrossOver 18.5 with Wine 4.0! CrossOver 18.0 and 18.1 both included Wine 3.14 -- as I explained earlier, we included the same version of Wine for stability. We were able to upgrade to a bigger, better version of Wine with confidence because of Wine's strict rules for growth. And I was not exaggerating about "bigger and better" -- each new version of Wine is bigger because it contains more code to be able to translate more things with a greater degree of correctness, like adding pages to a translation dictionary. So please enjoy all of the countless hours that the Wine developers have spent improving your translating service today by installing CrossOver 18.5!
*Offer valid through Monday, March 25 with deal code DAB
1 You can even stretch this analogy farther and say that Linux and Mac are both Romantic languages like French and Italian, and Windows would be the equivalent of Japanese in this scenario. I make this claim because Mac is based on Unix and Linux is based on a “Unix like system” while Windows is based on a DOS system.
2 Fun fact: Wine can run many programs written for old versions of Windows better than modern day Windows 10! The strict maintenance of the project has prevented it from degrading over time.