It's Not a Bug – It's a Feature (or Can Be)
by The Inedo Team, on Oct 13, 2020 8:28:17 PM
We've designed our products to be great, but we're not all-knowing. There are plenty of times we get tickets that turn out not to be bugs but actually unexpected uses for the tool. Sometimes the solution to your "bug" is our next feature.
Want proof? Here's the story of how one user’s idea led to a new feature in ProGet 5.3 called package consumers.
The Bug: Slow Package Deployments
A longtime ProGet user, DevOps Engineer Fabrice Mejean, noticed that the “package deployments” page was running really slowly and delaying his team’s work, so he submitted a ticket.
This raised a lot of eyebrows on our end. There’s no good reason that specific page should run slowly. Upon further inspection, it was obvious what was wrong. They had thousands of deployment records per package version.
We never designed that page for thousands of records, just a handful. Why would anyone deploy a single package version thousands of times? Something seemed off.
Fabrice explained that it wasn’t for deployments per se, but to see what applications are using their different NuGet libraries. In other words, it was a sort of “reverse dependency” tracking.
At the time, ProGet had no way to track which of your applications consume which DLL packages (like NuGet, npm, PyPi), so Fabrice thought to use package deployments feature instead. And that’s what was causing ProGet to go incredibly slow.
The Feature: Package Consumers
Fabrice’s team was using the package deployments feature “wrong” but for a good reason. Like Fabrice, you use our tools every day, so we expect you’ll find unexpected ways to use them and places to improve. And unlike other companies, we want to work with you to make our tools better, fast.
We love spending our time coding as much as you do. Who doesn’t love the challenge of creating new functionality to fix an issue? That’s why our engineers answer your tickets, not less-skilled, first-tier support staff.
We worked closely with Fabrice to understand how they were tracking these reverse dependencies, and we threw together a low-risk, “stealth” feature (PG-1595), just for him. We worked together to develop a basic console application (now pgscan) to extract dependencies from PyPi, non, and .NET projects to populate the data in ProGet.
Once we were all confident the feature was ready for our general userbase, we gave the feature a name (package consumers), documented it, and released it to the public in ProGet 5.3.
Turn Your Bugs into Features
All of this is part of our open culture. We know our users are some of our most creative Inedo experts, and we like hearing how you’d change our tools.
How are you using our tools in "unexpected" ways? You might just be behind our next feature.