Microsoft has now admitted it failed to give due credit to Canadian developer Keivan Beigi for his role in the new WinGet Windows 10 package manager.
Last week, Beigi, who built the open-source AppGet package manager for Windows, accused Microsoft of copying his work for WinGet without acknowledging his product's influence.
Beigi says Microsoft copied large parts of AppGet to deliver WinGet, the Windows package manager announced at Microsoft Build 2020. Last week, he detailed his discussions with a senior manager at Microsoft named Andrew who approached him in July 2019 with an invitation to meet and discuss "how we can make your life easier building AppGet".
Andrew Clinick, a group program manager on the team responsible for how apps install on Windows, has now admitted Microsoft failed to give Beigi proper credit for AppGet's influence on WinGet.
"Our goal is to provide a great product to our customers and community where everyone can contribute and receive recognition," wrote Clinick.
"The last thing that we want to do is alienate anyone in the process. That is why we are building it on GitHub in the open where everyone can contribute.
"Over the past couple of days we've listened and learned from our community and clearly we did not live up to this goal. More specifically, we failed to live up to this with Keivan and AppGet. This was the last thing that we wanted."
Beigi said he didn't mind that Microsoft copied his open-source Windows package manager but argued that Microsoft should have at least properly attributed WinGet's design to AppGet, rather than describing it in Beigi's words as only "another package manager that just happened to exist".
AppGet got one passing mention in Microsoft's WinGet announcement after Microsoft described rival Windows package manager Chocolatey as having a "vibrant community with a massive collection of applications, and a rich history supporting both open-source and enterprise customers".
"There are many others like AppGet, Npackd and the PowerShell based OneGet package manager-manager," Microsoft added.
Despite the belated credit, Microsoft's handling of AppGet and WinGet has been clumsy, insensitive and spoiled by "slow and dreadful communication speed", per Beigi's account.
Some would argue that Microsoft should have given Beigi proper credit without the developer raising the issue in the first place – especially given Microsoft's efforts to shed its image as an evil company that waged war on open source and that once followed the mantra "embrace, extend, and extinguish".
Sometimes Microsoft buys developers' side projects, like the VisualZip utility, which was acquired from the same Microsoft engineer who also created Windows Task Manager in his den back in the 1990s.
The passing mention of AppGet was another sore point for Beigi, who in 2018 wrote how problems with Chocolatey inspired him to revive the AppGet project that Microsoft would eventually be interested in. AppGet currently has over 800 packages that it can install on Windows.
The Canadian developer says Andrew emailed him a week after their first meeting and told Beigi he had "an opportunity to help define the future of Windows and app distribution throughout Azure/Microsoft 365", potentially as an employee where he would join Microsoft and it would get AppGet.
He went for an interview at Microsoft's Redmond headquarters in December, which apparently "went well", but Andrew didn't inform him he would not get the job at Microsoft until six months later – on the day before the WinGet preview would be unveiled at Build 2020.
"We give AppGet a call out in our blog post too since we believe there will be space for different package managers on windows," Andrew told Beigi.
"You will see our package manager is based on GitHub too but obviously with our own implementation etc. Our package manager will be open source too so obviously we would welcome any contribution from you."
Fortunately for Beigi, he wasn't sure he wanted to work for such a big company and he wasn't excited about the prospect of moving from Canada to the US. However, Beigi has decided the product and project will now be retired on August 1 because of the existence of Microsoft's WinGet.
Clinick's post, which isn't an apology, confirms Beigi's account and details how AppGet helped Microsoft achieve a "better product direction" for WinGet:
- No scripts during install – something that we completely agreed with and don't allow with MSIX.
- Rich manifest definition within GitHub – the power of being open combined with rich declarative meta data about the app is so important to meet goal #1.
- Support all types of Windows applications installers.
- Seamless updates for applications in the repository.