Software Management in Windows

While I’ve always been primarily a Windows user, I have also from time to time used some Linux distro or another. One thing that stand out in sharp contrast is the relative ease of installing software. For example, when using Ubuntu, installing a package is as simple as:

apt-get install [package name]

While on Windows, one must go to the appropriate website, download the package, and run the installer or extract the archive. For one software it may not be an issue, but when, say starting up a new computer or a fresh install, locating and installing all required software becomes tedious quickly.

Enter Chocolatey

Chocolatey was devised as a solution to the above described problem. The description of the site’s homepage describes it thusly:

Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind.

Once installed, Chocolatey can be used similarly to apt-get and other package installers; it can be used to install packages and update those that it was used to install. Chocolatey supports adding package feeds, even private ones. The Chocolatey community contributes and maintains the packages listed on the website (check the listing). The installation for Chocolatey itself is described on the homepage, and can be done with one command in Powershell.

Once Chocolatey is ready, installing, say, LINQPad is as simple as:

choco install linqpad

All of the package entries on the Chocolatey site include the command to run to install the given package. In some cases, there are multiple versions of the package, so a specific command must be used.

Having recently started anew with a fresh Windows install, I decided to use Chocolatey to install some of the software I commonly use. These included, but are not limited to:

  • Notepad++
  • Git
  • Mercurial
  • SourceTree
  • WinRAR
  • Firefox
  • VLC
  • Python
  • FileZilla

I could go on, but it would be a pretty long list. In the above cases, I just had to search the listing, find the package name, and run:

choco install [package name]

And Chocolatey would handle the rest. This saved me having to go to each of the respective websites, download the software, and go through the installer for each. I did have to search for each package on the Chocolatey site and run the appropriate command, but it still saved a fair bit of effort.

Chocolatey installing software

Perhaps I haven’t worked out how yet, but it would be useful to be able to install multiple packages at once. Maybe a batch file would be enough.

Chocolatey’s Future

There has been concern previously about the open nature of the Chocolatey community which might allow miscreants to slip in malicious software as part of a payload. Senior community members have begun reviewing and approving packages, which creates some peace of mind that the community will remain healthy. Further, a recent Kickstarter campaign was successful in raising money to pay for efforts in maturing the ecosystem, adding non-free features, improving the infrastructure, and allowing the core team to put more time into the project.

Further still, it was recently revealed that the upcoming Windows 10 will feature the new OneGet system (1, 2). OneGet is intended to be used for managing package distribution systems, it isn’t itself intended to be a package manger. The current implementation includes support for Chocolatey as a distribution channel. Like Chocolatey, OneGet is open source and a community-driven effort.

It is exciting to see one of the notable remaining differences in Windows versus e.g. Linux being resolved. OneGet looks like it may be one of the upgrade points for Windows 10.