Updated Keivan Beigi, developer of AppGet, has described how Microsoft nearly hired him to work on the open-source Windows package manager as an official feature, then went quiet for six months before announcing WinGet, which Beigi says is "very inspired by AppGet".
Microsoft unveiled WinGet at its Build virtual event earlier this month. At the time, Senior program manager Demitrius Nelon said: "What about insert any other package manager here? We think they are great... We have already talked with a few of the well-known package manager teams. Chocolatey has a vibrant community with a massive collection of applications, and a rich history supporting both open-source and enterprise customers. Scoop provides a convenient way to allow software to be installed without the UAC popups. Ninite keeps an eye on updates for all the apps it installed. There are many others like AppGet, Npackd and the PowerShell-based OneGet package manager-manager."
AppGet got a mention here, but only as a footnote. Beigi's account gives a different perspective. He says he was approached in July 2019 by a "high-level manager at Microsoft" from the Windows app deployment team. The manager thanked him for building AppGet and making "life so much easier" for Windows developers and asked to meet Beigi to "get feedback on how we can make your life easier building AppGet".
Beigi is based in Vancouver, Canada, not far from Microsoft's home town of Seattle in Washington, US.
Microsoft replacing his service with its own alternative probably was not what Beigi had in mind when he agreed to meet. He explained the ideas behind AppGet and his plans for its future. Maybe Microsoft could support him with some Azure credit?
Shortly afterwards Beigi got an email from Microsoft asking whether he would consider "spending more time dedicated to AppGet and potentially at Microsoft". Further discussion clarified the offer: Microsoft would use his code and it would become "Microsoft AppGet" or it might be renamed.
In December, Beigi had a full day of interviews with Microsoft in Seattle, he says, adding: "I thought everything went well." Then nothing, until just before Build, six months later. Another email. "I wanted to take the time to tell you how much we appreciated your input and insights. We have been building the windows package manager and the first preview will go live tomorrow at Build." The message added: "Our package manager will be open source too so obviously we would welcome any contribution from you."
Everything OK with Microsoft? Windows giant admits it was 'on the wrong side of history' with regard to open sourceREAD MORE
Confirmation that he was not being hired was disappointing, but Beigi had already concluded that it was not happening. He only became upset, he says, when he saw the announcement and the code on GitHub for Microsoft's WinGet. "The core mechanics, terminology, the manifest format and structure, even the package repository's folder structure, are very inspired by AppGet," he claimed.
Beigi does not say that Microsoft did anything illegal. WinGet is written in C++, whereas AppGet is C# and open source under Apache License 2.0. "What bothers me is how the whole thing was handled," he said. "The slow and dreadful communication speed. The total radio silence at the end. But the part that hurts the most was the announcement. AppGet, which is objectively where most ideas for WinGet came from, was only mentioned as another package manager that just happened to exist."
In a note of clarification, Beigi added that, yes, he did give Microsoft a nudge in February to ask what was happening and was told that someone would get back to him – "and they never did". There were even difficulties with travel reimbursement.
The issue here is not whether it is OK to borrow ideas from an open-source project; this happens all the time. On the other hand, the claim that Microsoft extracted ideas and plans from someone by offering help and the hope of employment, before going on to effectively kill their product, does not sound like best behaviour and is at odds with Microsoft's relatively newfound love for open source. James Randall, CTO of the Juniper Education Group and Microsoft MVP, said on Twitter: "If they stand for what they state I don't see how they can say nothing about this. This kind of bad actor behaviour undermines the very thing they claim to stand for."
Accounts like this make it hard for the company to win friends in the open-source community, undermining initiatives like the Microsoft-sponsored .NET Foundation. Ben Adams, CTO of Illyriad Games but also on the .NET Foundation board, said: "His is a shitty story; but I'm not exactly sure what you want us to do about Windows team making a C++ packg mngr? How many of the people outraged have starred the project, contributed to it (1 contributor since 2015) or sponsored the guy?"
Adams added: "Extinguishing .NET OSS is sad and definitely frowned upon; however looking at author's complaint, it seems to be MS recruitment process is poor, and AppGet was not appropriately recognised in announcement? Second I can look into."
Concerning AppGet, Beigi said on GitHub: "Given the release of Microsoft WinGet, I'm no longer going to be developing AppGet. The client and backend services will go into maintenance mode immediately until August 1st, 2020, at which point they'll be shut down permanently."
We have asked Microsoft for comment and will update here accordingly. ®
Updated on 28 May at 1730 GMT to add
Microsoft has got back to us with a comment though it appears the company perceives it only as a recruitment matter. “We regret to hear about this candidate’s experience and are reviewing the circumstances internally,” a spokesperson told us.
- Internet Explorer
- Microsoft 365
- Microsoft Build
- Microsoft Edge
- Microsoft Office
- Microsoft Surface
- Microsoft Teams
- Office 365
- Patch Tuesday
- SQL Server
- Visual Studio
- Visual Studio Code
- Windows 10
- Windows 11
- Windows 7
- Windows 8
- Windows Server
- Windows Server 2003
- Windows Server 2008
- Windows Server 2012
- Windows Server 2013
- Windows Server 2016
- Windows XP
- Xbox 360