We recently discovered OneGet, a package management framework included with PowerShell and Windows 10. We’ve learned a lot more about OneGet and its future since then.
OneGet was originally a product from the Open Source Technology Center at Microsoft. Not only is it inspired by open-source Linux package managers, OneGet itself is also open source. It’s now part of PowerShell proper.
Who is OneGet For?
OneGet is currently targeted at power-users, system administrators, and people who aren’t afraid to use PowerShell — that much is clear. But OneGet isn’t just some obscure collection of cmdlets that will only be used by server administrators. OneGet developer Garrett Serack explained who it’s targeted at on Reddit:
“Initially, this is targeted at the propeller-heads — developers, admins, powerusers, etc. Once the APIs for using package providers is published, I’m sure we’ll see GUI tools and integration aplenty.
Further down the road I’d like to see integration into things like the Windows Update UI so that software updates from any package manager can show up in a centralized location.” (Source)
The graphical interface and Windows Update integration aren’t coming immediately, though:
“Initially, I don’t have the time to integrate a UI; We’re on a really tight schedule.
Once we get the basic feature set implemented, and hook up a bunch of package managers, a UI would be an important next step
However, that being said, it is open source, and I’d love to see someone start working on a UI that could be included.”
At the October 24, 2014 weekly meeting, Garret Serack shared his vision of a OneGet-aware desktop application popping up the standard Windows Update UI when it detects an update, and the update could be installed from there rather than each Windows program having its own updating service. (Source)
OneGet will probably offer access to apps from the Windows Store. If the Windows Store includes desktop apps as Microsoft accidentally revealed it would, that would give OneGet access to a huge universe of desktop software:
— Garrett Serack🤠 (@fearthecowboy) October 28, 2014
It’s a Package-Management-Manager, Not a Package Manager
Technically, OneGet isn’t a “package manager.” Instead, it’s an extensible package management framework — the official Q&A describes it as a “package-management-manager.” As the Q&A describes it:
“OneGet a unified package management interface component with a set of managed and native APIs, a set of PowerShell cmdlets, and a WMI provider. The component accepts both Microsoft-provided and 3rd party-provided plugins which extend the functionality for a given package type.”
OneGet is extended with package-management plug-ins that add package sources. These sources can be installed from a centralized repository. OneGet comes currently with a package source that includes these:
“Part of our work with the community is to develop a central hub for plugins that can be dynamically discovered and installed so that they don’t have to ship them in-box.”
On a brand new system, you’ll be able to run a cmdlet to get a list of available providers from the Internet and then install a package provider of your choice — Chocolatey, for example.
OneGet is Open Source, and a Community Project
Like Linux package managers, OneGet is completely open-source. The source code is available on GitHub. You can always grab the latest experimental build at http://oneget.org/oneget.zip, and this build currently contains the Chocolatey provider that’s missing in action in the official builds. @PSOneGet tweets every time a new build is posted.
As it’s a community project, anyone can show up to the OneGet project’s weekly meetings at 10 a.m. PST every Friday. Just visit OneGet’s weekly meetings page, which also offers a stream of the last weekly meeting.
— PowerShell OneGet (@PSOneGet) October 24, 2014
OneGet Could Shame Developers Who Include Toolbars
The people involved in the OneGet project have the right sort of attitude for improving the Windows software management experience. On Reddit, Garret Serack was unsympathetic to developers who’ve built a business model on getting ad revenue from people visiting their websites and talked about an “adblock”-style plug-in to prevent users from installing terrible applications that bundle toolbars. The OneGet project has an “8 Laws of Software Installation” page that argues for better Windows software installations without all the toolbars, unnecessary EULAs, and other time-wasting junk. It reads like something we would write here at How-To Geek, but it’s written by someone who works at Microsoft and actually has the power to make things better.
After reading these laws, one Reddit user was skeptical: “I doubt you will get buy-in from App Vendors like Adobe, Oracle, or hell even SourceForge Now. it is no longer enough to just distribute an app/installer, the installer itself now has to generate revenue as well…”
Microsoft’s Garret Serack responded:
“I hear you.
I may not be able to get ‘buy-in’ from these guys, but when someone installs their package thru OneGet, I can sure make it stop and go “Hey, are ya sure? — This package appears to do XYZ” … A bit of pro-active “package shaming” should be good…” (Source)
So OneGet shouldn’t just be a new conduit for garbage to flow onto your system — it should actually be designed to help Windows users avoid the junk. That would be a big improvement.
OneGet Could Help Fix Windows System Clutter
Windows installers tend to scatter files and registry entries over your system even after you uninstall them. One Reddit user asked if OneGet would one day help deal with that. After all, Chocolatey currently doesn’t — it just runs the standard program uninstaller, which may not clean everything up. So could OneGet clean everything up, just a Linux package manager could?
“I have some ideas on how to address this — it’s gonna be a bit down the road before I can do any serious work on it, but that’s definitely one of the things I’d like to solve with OneGet.
Right now, OneGet is primarily a unifying front-end to multiple package managers. As we get thru implementing the basic feature set, we’ll be definitely looking at stuff like this.” (Source)
OneGet doesn’t just seem like a one-off tool. Instead, it looks like a project that’s actually set to rethink and improve how software installation is handled on Windows.
Microsoft Wants to Make Linux Users Happy
One common complaint seems to be that the PowerShell syntax and way of doing things seems overly wordy and clunky compared to what seasoned Linux users are used to. Microsoft wants to make Linux users feel more at home:
“I had a rather senior director at MS ask me if we couldn’t just make an exe called RPM (and/or apt-get) that had the same syntax as the linux tools so that those who were well versed in one could just use OneGet that way. I told him sure, but we’re scrambling for time, so I don’t know when we’d get to it :)” (Source)
I think people *inside* Microsoft are more excited about #OneGet than the general public, if that's at all possible.
— Garrett Serack🤠 (@fearthecowboy) October 29, 2014
OneGet is all very exciting. It’s what Linux users and tech geeks have wanted from Windows for a long time. And the best thing is that it isn’t just a PowerShell cmdlet for installing Microsoft-approved software from the Windows Store. Instead, “the user has ultimate control with which repositories they use and trust, not some centralized service.” (Source)