The most effective development teams adopt a proactive approach to managing the health and security of their open source dependencies. Explained in very simple terms:
If you’re spending lots of time fighting fires in your software, consider choosing better software.
Let’s say you have a leaky roof. You can spend a lot of time putting buckets all over the place, and maybe you’ll do that in the short term, but it might be smart to fix the roof as well.
Open source dependencies come in the form of packages, downloaded from Maven Central, npm, or similar public repositories. Some packages are more likely than other packages to cause problems for typical enterprise software development teams. It makes sense to adopt a practice of reducing your team’s use of these packages.
As a shorthand, we’ve found that people end up calling them “bad packages”—bad packages are the ones they’ve decided to try to avoid. We’ve adopted that “call a duck a duck” language in much of our documentation. But what do teams mean by this? What should they mean by this? What is a “bad package”?
These questions can have context-dependent answers, but there are some common themes to keep in mind.
Here are some of the benefits we’ve seen from making better dependency choices. As you think about which packages to try to avoid, keep in mind the point of the exercise—why are you doing this proactive work?
At Tidelift, we believe all open source software is good! But not every package is the right choice in every context, and in our experience open source developers agree with that completely. Some packages were never intended for enterprise use (perhaps they are fun hobby projects); some have been abandoned; still others were carefully deprecated and end-of-lifed for very good reasons.
To define “bad packages” for your organization’s context, think about what makes a package fit for enterprise use; or on the flip side, what makes it more likely to introduce risks or waste your team’s time.
If you’re using Tidelift’s web UI, CLI, or APIs, we provide a default classification for packages, and also provide the raw data you need to create your own classification. You might choose to use our default classification directly or you might choose to create your own, but here’s how we define our categories, as a starting point:
You can learn more about our categorization and our criteria in our documentation, and access our categorization of each package through the package details API.
Our customers have seen success with four practices that can reduce the number of bad packages in use at their organization. Any one of these can help make meaningful progress in reducing reliance on bad packages; there’s no need to undertake all four at once.
In our getting started guide, we have some ideas on how to go about each of these activities.
The teams that see the most success don’t try to boil the ocean. They identify a few bad packages and make some progress. Then on a regular schedule, they keep making a little more progress. They measure their results. It isn’t about fixing everything all at once; it’s about sustainable, regular practices.
Book a demo or read our getting started guide to learn more about how your organization can reduce reliance on bad open source packages and ensure the open source projects you rely on keep getting better.