What is "Steam" and how does it work?

I've heard Steam is recently available for GNU/Linux. A lot of people are talking about it. What is Steam? What's the fuss all about? Is Steam just for people who develop and play games? What should I know about Steam, as an user of Ubuntu?

Should I install Steam?


If You Are a Developer

Steam is particularly relevant to:

  • developers of games already provided through Steam (by Valve),
  • developers making mods for those games, and
  • game developers planning proprietary software projects (or, potentially, games with proprietary art but FOSS engines). Basically, anything where content whose distribution is restricted by copyright and must be distributed selectively to customers.

It is interesting and important that Steam is being ported to GNU/Linux. Whether or not a developer should distribute a game over Steam depends on many factors and is a highly subjective question.

For End Users: One Simple Question

For users, however, it's usually pretty simple to figure out if you might benefit from subscribing to, installing, and using Steam:

Are there programs you want to run, that are available for your operating system, and that are distributed on Steam?

If there are, Steam might be the best and most convenient way to get them. Or, often, there are other alternatives, which you might prefer. This mostly depends on the application, rather than the Steam service itself.

(The Steam service also has a Subscriber Agreement. Since signing it affects your legal rights, you should make sure you understand it first, and consider your options, as you should when contemplating the use of any service. By the way, this is not legal advice, and I am not a lawyer. I don't work for Valve Corporation either.)

You can search here to see what games (and other content) are available through Steam. Just remember that not all games on Steam are necessarily available for your platform (especially if your platform is Linux-based).

Or browse Steam games currently available for GNU/Linux (that includes Ubuntu).

Core Concepts

There is a saying (which I think might originate in BSD culture, but I'm really not sure):

You don't use an operating system, you use applications.

Anything you want to use your computer for, you use some program to do it. The program may run on a particular OS, or be provided as part of a particular OS, or have no support on that OS at all. But what matters about an OS is whether or not you can run programs that provide the functionality you need.

Now, Steam is not an operating system. It is a distribution platform, sort of like the iTunes Music Store, but focused on games instead. Potentially Steam could be used to distribute other software, and it actually is used to distribute some videos.

If you want to run software that is distributed through Steam, then you should consider using Steam. Otherwise, though Steam has a few side features--chat with other Steam users--there is really no reason to use Steam.

You don't play a distribution platform, you play games.

The reason it's big news that Steam is coming to GNU/Linux (such as Ubuntu) is not that Steam is particularly cool itself, but that a number of Steam games formerly available only on other platforms seem to be coming along with it.

For example, a Left 4 Dead 2 player who uses Ubuntu may be very happy that Steam is being ported to GNU/Linux, so they can install and play Left 4 Dead 2 it on Ubuntu. But really, Steam being ported to GNU/Linux is just a tiny part of what's beneficial there. The real benefit is that Left 4 Dead 2 is being ported.

Ports of many other games currently available to Windows and Mac OS X users are planned, too. But many games are distributed on Steam, and some of them will not support multiple platforms (just as some don't now, even though Steam has been out for Mac OS X for quite some time).

Games run on an operating system, not a distribution platform.

Steam is an infrastructure for distributing and managing the installation and use of games. It manages user identity information, and it has a (minor) role in providing multiplayer functionality. But it is not a game engine, graphics API, or sandbox in which a game runs.

When Steam runs on Linux, that doesn't make Steam applications run on GNU/Linux. They have to be ported. And if they were ported without Steam, they would run, too.

Packaging Software ...and Managing It Too!

People can debate the advantages and disadvantages of Steam as a distribution platform; I'm not going to try to do that here. But there's one advantage-disadvantage pair that's important to understanding Steam at all:

  • Advantage: Your software is available from anywhere. You can download, install, and update it through automated means. You can use it from multiple machines.
  • Disadvantage: Your software is tied to being logged in to Steam. Generally speaking, you can only use your Steam account--and thus, the games that are associated with it--on one machine at a time. Games are usually downloaded over the Internet when they are installed, rather than installing from local media, and sometimes downloads are slow.

Steam ran on Windows first. Windows software can be packaged into discrete units (.msi files). There is a utility that performs installation (Windows Installer), information about what software is installed is stored in a local database (the registry), and there is a Control Panel applet providing a central place to browse installed software and uninstall whatever is unneeded (Add/Remove Programs).

That is to say that Windows has a package manager. It is not as sophisticated at managing dependencies as dpkg, but it is otherwise comparable.

What Windows did not have (and still does not have) is a package manager that automatically retrieves software from the Internet, installs it, retrieves and installs whatever other programs or libraries your software needs to run, and keeps your software up to date automatically. That's always been the main benefit of Steam to users. It is a highly functional, third-party package manager for Windows.

GNU/Linux operating systems, though (and our BSD cousins) have had advanced package managers built into the OS for decades! In Ubuntu this functionality is currently provided mainly by APT, the Software Updater, and the Software Center. Ubuntu has always had this functionality. And we've had it for every part of the system, and many thousands of additional programs.

In Steam, games are installed for users, not (just) computers.

The Debian package management infrastructure has already been extended in Ubuntu to support installation and license management for proprietary payware applications. The Software Center adds this functionality, and is thus somewhat comparable to Steam. For example, users can purchase a number of for-pay games in the Software Center, such as Amnesia: The Dark Descent (which can also be purchased through Steam and in other ways).

When you install software in the Ubuntu Software Center, you must authenticate with your password. The software is installed systemwide. If you've purchased software, you can install it on other machines too. (Though you should consult the relevant license agreements, applicable law, and I am not a laywer and this is not legal advice.) However, often license agreements will prohibit you from using one license in two places at once.

With Steam, you log in to the Steam service to install and play games, and this is entirely separate from your Ubuntu user account. Multiple Steam users can be and often are set up on the same machine. A game two users have purchased is not (generally) stored twice on the hard drive, but it is accessible just while logged in to Steam as a user who has purchased it.

In some ways, this is inconvenient--if I purchased two unrelated games, why can't my friend play one of them on one of my computers while I play another one on my computer? On the other hand, this is also convenient--I needn't worry about what computers are available; I can log in to my Steam account anywhere and install the games (and they won't affect anybody else's Steam account, even on the same machine).

After all, games are played by people, not computers.


Steam is a major online store for purchasing and downloading PC games.

The availability of Steam on Linux is not just important because it's a games store, but because it signifies that a major commercial player in the PC games space now cares about Linux.

With PC games we're largely at the mercy of whichever platforms the producers choose.

Bringing PC gaming to Linux attempts to address, for many Linux users who are also keen PC gamers, the one thing they still dual-boot with Windows for.

Gaming has been one area where Linux has struggled to hold its own against Windows, especially enthusiast/hardcore gaming. These games by their nature are proprietary; they require significant investment in artwork and design to produce which does not lend the resulting product very well to open source equivalents of the same standard being made (unlike other software like office suites, video players or 3d graphics editors). Thus these games tend to remain proprietary, which means that users are at the mercy of whichever hardware platform and OS the game producers wish to target. Steam on Linux gives such game producers a little more reason to target Linux as well as Windows.

For PC gaming to grow on Linux, somebody had to make the first move.

It's not just the lack of quality games, it's also the historically poor quality support from hardware vendors, particularly graphics card vendors, that has held back PC gaming on Linux. It's a chicken and egg scenario, and someone had to go first. The fact that Steam is going first means other players, once they see value in PC gaming on Linux, potentially have some reason to follow.

Only a small selection of games are available via Steam on Linux.

Each game would need to be individually ported to Linux in order to be available via Steam - it's not enough just that the store itself now supports Linux. Thankfully, a number of titles are already available for Linux and the number is expected to grow at a slow pace.