The Day AppGet Died.

Microsoft released WinGet (Not to be mistaken with AppGet) earlier this week as part of their Build 2020 announcements. For the past few days, I’ve been collecting my thoughts figuring out what actually happened in the past 12 months.

TLDR; 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.

If you are still interested, here is how AppGet died.

A year ago (July 3rd, 2019) I got this email from Andrew, a high-level manager at Microsoft,

Keivan,

I run the Windows App Model engineering team and in particular the app deployment team. Just wanted to drop you a quick note to thank you for building appget — it’s a great addition to the Windows ecosystem and makes Windows developers life so much easier. We will likely be up in Vancouver in the coming weeks for meetings with other companies but if you had time we’d love to meet up with you and your team to get feedback on how we can make your life easier building appget.

Naturally, I was excited; my hobby project being noticed by Microsoft was a big deal. I replied, and two months and a few emails later, we finally had a meeting planned on August 20th at Microsoft Vancouver. The meeting was between me, Andrew and another engineering manager in the same product group. I had a great time; we talked about the ideas behind AppGet, what I thought was broken about the current package manager systems in Windows and what I had planned for AppGet’s future. We went out for lunch and talked a bit more about AppGet, Windows Phone, and a few other things, but the outcome of the meeting as far as I understood it was, what can Microsoft do to help? I mentioned some Azure credit would be nice, getting some doc on how the new MSIX packages work and if they could fix a few issues I had with some of their download links.

Fast forward to next week (August 28th), and I got this email from Andrew,

Keivan,

it was a pleasure to meet you and to find out more about appget. I’m following up on the azure startup pricing for you. As you know we are big fans of package managers on Windows and we are looking to do more in that space. My team is growing and part of that is to build a team who is responsible for ensuring package managers and software distribution on Windows makes a big step forward. We are looking to make some significant changes to the way that we enable software distribution on Windows and there’s a great opportunity (well I would say that wouldn’t I?) to help define the future of Windows and app distribution throughout Azure/Microsoft 365.

With that in mind have you considered spending more time dedicated to appget and potentially at Microsoft?

Initially, I was a bit hesitant; I didn’t want to go to Microsoft to work on Windows Store, MSI engine or some other app deployment-related stuff. Shortly after, I was assured that I would spend all my time on AppGet. After about a month of prolonged email back and forth, we came to the conclusion that the arrangement will be very similar to an acqui-hire; Microsoft would hire me, AppGet would come with me, and they would decide if they wanted to rename it something else, or it would become Microsoft AppGet.

Throughout the whole process, I was very unclear on what my role would be at Microsoft. What would my responsibilities be? Who would I report to? Who/anyone would report to me? I tried clearing some of these answers throughout those slow conversations but never got a clear answer.

After another few months of again very slow email conversations, I was told that the acqui-hire process through BizDev would take a very long time. An alternative to speed up the process would be just to hire me with a “bonus” and then work on migrating the code ownership after the fact. I didn’t have any objections, so we scheduled some meetings/interviews in Redmond.

I flew to Seattle on December 5th to have a full day of interviews/meetings at Microsoft HQ. I met with four different people; three of the meetings were more like your typical interviews; the meeting with Andrew was more about what we should do once this is all over and how we would migrate AppGet’s process and infrastructure to be able to handle Microsoft’s scale. We talked about some of our options, but in general, I thought everything went well.

My last meeting ended at around 6 pm. I took an Uber to the airport and was back in Vancouver.

And then, I didn’t hear anything back from anyone at Microsoft for six months.

Until earlier this week when I was given heads up about WinGet’s launch the next day,

Hi Keivan, I hope you and your family are doing well — BC seems to have a good handle on covid compared to the us.

I’m sorry that the pm position didn’t work out. 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. We give appget a call out in our blog post too since we believe there will be space for different package managers on windows. 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.

I look forward to talking to you about our package manager once we go live tomorrow. Obviously this is confidential until tomorrow morning so please keep this to yourself. You and chocolatey are the only folks we have told about this in advance.

Regards
Andrew

I wasn’t too surprised; I had figured out months ago that the “Microsoft thing” isn’t happening.

I waited until the next day to see what this new package manager was going to be like. When I finally saw the announcement and the GitHub repositories, I was shocked? Upset? I wasn’t even sure what I was looking at.

When I showed it to my friend, the first thing he said was, “They Called it WinGet? are you serious!?” I didn’t even have to explain to him how the core mechanics, terminology, the manifest format and structure, even the package repository’s folder structure, are very inspired by AppGet.

Am I upset they didn’t hire me? Not really, after visiting the campus, I wasn’t too sure I wanted to work for such a big company, also moving from Canada to the U.S. wasn’t something I was too excited about. Also, throughout the process, at no time I assumed this was done deal.

Am I upset that Microsoft, a 1.4 trillion-dollar company, finally got their act together and released a decent package manager for their flagship product? No, they should’ve done it years ago. They shouldn’t have screwed Windows Store as badly as they did.

Realistically, no matter how hard I tried to promote AppGet, it would never grow at the rate a Microsoft solution would. I didn’t create AppGet to get rich or to become famous or get hired by Microsoft. I created AppGet because I thought us Windows users deserved a decent app management experience too.

What bothers me is how the whole thing was handled. 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; While other package managers that WinGet shares very little with were mentioned and explained much more deliberately.

There is a silver lining. WinGet will be built on a solid foundation and has the potential to succeed. And we neglected Windows users might finally have a decent package manager. —

Live and learn.

Edit to clarify some issues,

May 27th, 2020 19:04 PST

But AppGet is Open Source

Code being copied isn't an issue. I knew full well what it meant to release something opensource and I don't regret it one bit. What was copied with no credit is the foundation of the project. How it actually works. If I were the patenting type, this would be the thing you would patent. ps. I don't regret not patenting anything.

And I don't mean the general concept of package/app managers, they have been done a hundred times. If you look at similar projects across OSes, Homebrew, Chocolaty, Scoop, ninite etc; you'll see they all do it in their own way. However, WinGet works pretty much identical to the way AppGet works.

Do you want to know how Microsoft WinGet works? go read the article I wrote 2 years ago about how AppGet works.

I'm not even upset they copied me. To me, that's a validation of how sound my idea was. What upsets me is how no credit was given.

You should've followed up.

I did, There was an issue with my travel reimbursement, So I contacted the HR contact and at the same time asked about the Interviews, She told me someone will get back to me about that and they never did. This was on Feb 14th, 2020.