It’s Not a Bug—It’s a Feature (or Can Be)


The Inedo Team

The Inedo Team


Webinar: CI/CD on Self-Hosted Docker Made Simple with BuildMaster 05th September, 2023

Webinar: The Future of .NET is… On-prem CI/CD? 23rd June, 2023


It’s Not a Bug—It’s a Feature (or Can Be)

Posted on .

ProGet problems? BuildMaster bugs? If you’ve spotted a problem, we are always standing by to answer support tickets and contribute to Inedo Forums, usually within just a few hours.

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 a 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 the 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 improve our tools.

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 user base, 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.

Fabrice’s story is far from unique. Check out our case study with Symbotic, who helped us create ProGet’s Helm chart integration.