A dependency is literally something your software depends on: infrastructure such as a filesystem or a database, network, etc. In this post, I'd like to narrow the scope to a software dependency that you need to compile/run, *i.e., a library. I'll first define what I mean by dependency in the context of this post. Then, I'll list a grid of several criteria to analyze possible dependencies.A dependency is literally something your software depends on: infrastructure such as a filesystem or a database, network, etc. In this post, I'd like to narrow the scope to a software dependency that you need to compile/run, *i.e., a library. I'll first define what I mean by dependency in the context of this post. Then, I'll list a grid of several criteria to analyze possible dependencies.

How to Choose a Dependency: Build vs Buy, Risk Management, and More

2025/11/07 23:00

Fun fact, I thought I had already written this post, but when I wanted to reference it, I found out that I didn't. In this post, I'd like to describe my approach when choosing a dependency. I'll first define what I mean by dependency in the context of this post. Then, I'll list a grid of several criteria to analyze possible dependencies with.

What is a Dependency?

A dependency is literally something your software depends on: infrastructure such as a filesystem or a database, network, etc. In the context of this post, however, I'd like to narrow the scope to a software dependency that you need to compile/run, i.e., a library. Different software stacks have different names for this library:

  • Ruby calls it a gem
  • Rust calls it a crate
  • Python and Node.js call it a package
  • Go calls it a module
  • Maven/Gradle calls it a dependency, hence the name I use in the title
  • etc.

\ Note that the industry has been moving to a service-based architecture for purely revenue reasons. One can access services via a REST API or something else. In any case, the same evaluation criteria apply.

Build vs. Buy

When you need new software, the usual quandary is to build it vs. to buy it-Component Off The Shelf. The same reasoning could apply with a new dependency, with one major additional option: Open Source. The reasons for choosing one over another have been discussed in many details over the years.

\ Here's my modest contribution, from personal experience. In my projects, I'm very conservative regarding visibility. I try to keep external access to the bare minimum. In Java, I use private as much as possible, including in constructors. However, you can't use private constructors in tests. Hence, I widened the visibility to package-protected, but I wanted a way to document it.

\ In the past, I used regular comments until a colleague pointed out Guava's @VisibleForTesting to me. I became a big fan instantly. And yet, I wouldn't bring in the dependency for @VisibleForTesting only. If that's the only annotation I have for Guava, then I'd rather create my own.

\ If I need other classes from Guava, however, I'd reassess my decision. For example, Multimap, a map with possibly multiple values stored under a key, requires a lot more time to develop. Thus, if I need Multimap, I'd probably add the dependency.

As you can see, the decision is pretty context-dependent.

\ In the rest of this post, we will assume that choosing to build wasn't the best solution, and we need to select a dependency from what exists.

Risk Management

Choosing a dependency is a risk, and as with every risk, you need to apply proper risk management techniques:

  1. Identify risks: in the next section, I'll list several items you can consider.
  2. Analyze each risk. Consider likelihood and its impact(s). Organizations are different. One considers a specific risk's impact as LOW in their context, but another one sees it as HIGH. I can't help you there.
  3. Plan responses. For each risk, document mitigating actions and their associated costs
  4. Monitor! Risk management is not a static activity done once. Even in the context of dependencies, new risks can appear, e.g., a new critical CVE. Moreover, a risk can increase its likelihood, e.g., a core committer leaves the project, and reduce the bus factor to a critical level. Perhaps it's time to dedicate a full-time employee to the project maintenance?

Choice Criteria

The blurb I wrote is the foundation upon which I'll build. I'll develop upon it.

License and Legal Aspects

I believe this is the most important aspect by far. You need to look at the license. GitHub makes it easy to verify it: first, it encourages projects to have a LICENSE file; then, it displays it prominently at the top if it's one of the recognized Open Source licenses.

You need to make sure you understand the license. For regular OSI-approved licenses, it's quite easy: others have already done the work for you. For other types, it can be harder. Some dependencies are released under a dual license: one Open Source and one commercial. Most of the time, you can assume the Open Source license is quite restrictive and will need the commercial one.

Pricing

Pricing has three models (that I know of):

  • Fixed price
  • Variable price based on some factor(s), e.g., number of CPUs, number of users, etc.
  • A combination of the above

\ The license can be either for a limited time or forever.

\ My best advice would be to write down your requirements, your scope, and your budget. Then, you should probably delegate the purchase to your purchasing department: they are pros and are the best ones to negotiate with. You'll need to involve them at some point anyway.

Governance

Commercial projects are governed by a company. The main benefit of a company-governed project is financial backing. It may become a moot point if the project doesn't return the expected revenue. Other benefits will likely include professional skills to leverage as well as support (see link:#below).

\ Open Source ones provide several alternatives regarding governance: a foundation, a community of developers, or a single one. Foundations are the most stable form of governance, similar to companies. Some may even support projects financially. Note that not all foundations are equal: the Apache Foundation, the Eclipse Foundation, and the Linux Foundation operate under very different models.

\ The Apache Foundation builds upon the individual merits of people who work on projects. They provide the infrastructure (SCM, email, build infrastructure, etc.), but you're on your own beyond that. On the contrary, the CNCF, part of the Linux Foundation, builds upon companies. A company becomes part of the CNCF by paying a contribution.

\ The larger the group governing the project, the more time-consuming it will be to influence. Influence may be as grand as driving the roadmap to the direction you want, and as small as getting a bug fixed, or even getting your own fix merged.

\ Interacting with developers will be easier for technically-minded people. In any case, expect to play politics to advance your goal, albeit with different politics depending on the governing body.

Maturity

Adding a dependency is a trade-off: you save on time, but you lose control. If you build your software upon a project that goes unmaintained, you'll need either to migrate your code to cut the dependency or to maintain it yourself. For this reason, you must do a proper risk assessment before committing to a dependency.

\ Here are a couple of data points to evaluate a project's maturity:

  • When was the project created? Older projects beget more confidence.
  • What is its release history? The more regular the release frequency, the better it is.
  • Does the project announce its roadmap? If yes, how detailed is it? A blurry roadmap, or none at all, betrays a lack of vision; one too detailed, especially in the far future, might be a sign of a lack of agility or realism.
  • For commercial projects, is there something like Long Term Support?

Activity

For open-source projects, you must check their activity. A project could have been very active in the past, but lost its drive along the way. In this section, we should check the following items:

  • How many issues are open? What's the median time to resolve an issue? What's the most common resolution status? What's the longest open issue? Answering these should give you a hint about the project's overall health.
  • How many accounts commit to the project? How many accounts regularly do so, i.e., how many core committers are they? In other words, what is the Bus factor? The higher the bus factor, the more chances that the project will continue if one committer stops.
  • Related to the above, what's the main committers' commit history? Are committers spread among several unrelated projects, or do they focus on the one you depend on?

Support

Support encompasses both commercial support and community support.

\ For most mature organizations, commercial support is a requirement. Commercial dependencies provide such support by nature. For open-source projects, support ranges from none to companies providing support on projects as part of their core business. Most of the time, these companies employ developers working on the project. For example, Tomitribe and HeroDevs offer support for the Tomcat servlet engine hosted by the Apache Foundation.

\ Support from the community is free, but also a best effort. There's no guarantee somebody will answer your pleas, and if they do, when. Start by listing the available support channels, e.g., GitHub, Slack, Google Groups, etc., and check:

  • the number of different people answering
  • the delay between an answer and the question
  • the quality of answers

Developer Experience

Developer Experience, also known as DX, is one of the key differentiators between a good project and a great one. Documentation plays a huge role in DX. Proper documentation should follow the Divio system and group content into the following groups: tutorials, how-to guides, reference guides, and explanations.

Most projects provide exhaustive reference documentation. Some do offer a quick start. My first DevRel initiative on a new project is generally to create (or make others create) one when it's missing. The absence of a quick start is a blocker when onboarding new users.

\ Another component of DX comes from using the dependency itself. I'd recommend a prototype within a small time-boxed project, using the provided dependency. It will give you a good feeling for the Developer Experience. If you invest a lot, it makes sense to prototype a couple of competing dependencies in parallel.

Market Adoption and Ecosystem

I mentioned above that choosing a dependency is risk management. Because we are social animals, we can trust people who have chosen the dependency before us to have made a correct decision. Ergo, the more organizations use the dependency, the higher the chances it's the right choice. However, be careful with the herd mentality syndrome: I see many organizations doing just that and choosing something that others have vetted in a completely different context. Cough, microservice, cough. Still, a large market adoption increases the chance of activity and future support.

\ I'd also recommend checking the ecosystem around, if it applies. A CSV parsing dependency obviously doesn't qualify, but an LDAP reading/writing one does. Which LDAP providers does it support? Is it Azure Directory compatible, etc.?

\ Finally, check whether one or more team members are already familiar with the dependency.

Miscellany

I never used any of the following criteria; I won't develop. Yet, they might be relevant in your context.

  • Vulnerability management and response time
  • Dependency health and update frequency
  • Public security policy
  • Public benchmarks and performance metrics
  • Real-world scalability examples
  • Company stability and financial transparency

Summary

In this post, I listed several criteria that you may use to evaluate dependencies. I hope it will prove useful.


Originally published at A Java Geek on November 2nd, 2025

Disclaimer: The articles reposted on this site are sourced from public platforms and are provided for informational purposes only. They do not necessarily reflect the views of MEXC. All rights remain with the original authors. If you believe any content infringes on third-party rights, please contact service@support.mexc.com for removal. MEXC makes no guarantees regarding the accuracy, completeness, or timeliness of the content and is not responsible for any actions taken based on the information provided. The content does not constitute financial, legal, or other professional advice, nor should it be considered a recommendation or endorsement by MEXC.

You May Also Like

Fed Decides On Interest Rates Today—Here’s What To Watch For

Fed Decides On Interest Rates Today—Here’s What To Watch For

The post Fed Decides On Interest Rates Today—Here’s What To Watch For appeared on BitcoinEthereumNews.com. Topline The Federal Reserve on Wednesday will conclude a two-day policymaking meeting and release a decision on whether to lower interest rates—following months of pressure and criticism from President Donald Trump—and potentially signal whether additional cuts are on the way. President Donald Trump has urged the central bank to “CUT INTEREST RATES, NOW, AND BIGGER” than they might plan to. Getty Images Key Facts The central bank is poised to cut interest rates by at least a quarter-point, down from the 4.25% to 4.5% range where they have been held since December to between 4% and 4.25%, as Wall Street has placed 100% odds of a rate cut, according to CME’s FedWatch, with higher odds (94%) on a quarter-point cut than a half-point (6%) reduction. Fed governors Christopher Waller and Michelle Bowman, both Trump appointees, voted in July for a quarter-point reduction to rates, and they may dissent again in favor of a large cut alongside Stephen Miran, Trump’s Council of Economic Advisers’ chair, who was sworn in at the meeting’s start on Tuesday. It’s unclear whether other policymakers, including Kansas City Fed President Jeffrey Schmid and St. Louis Fed President Alberto Musalem, will favor larger cuts or opt for no reduction. Fed Chair Jerome Powell said in his Jackson Hole, Wyoming, address last month the central bank would likely consider a looser monetary policy, noting the “shifting balance of risks” on the U.S. economy “may warrant adjusting our policy stance.” David Mericle, an economist for Goldman Sachs, wrote in a note the “key question” for the Fed’s meeting is whether policymakers signal “this is likely the first in a series of consecutive cuts” as the central bank is anticipated to “acknowledge the softening in the labor market,” though they may not “nod to an October cut.” Mericle said he…
Share
BitcoinEthereumNews2025/09/18 00:23
Forget The Obituaries—Cardano Is Alive, Says Bitcoin Analyst

Forget The Obituaries—Cardano Is Alive, Says Bitcoin Analyst

Widely followed Bitcoin figure Lark Davis pushed back on suggestions that Cardano is finished, saying, “what is dead can never die.” At the same time, he pointed out that on-chain activity looks flat. Related Reading: Dogecoin Alert! Price Could Explode Over 2,800%, Analyst Says Cardano (ADA) was trading at $0.51, down 8.8% in the past 24 hours, and it holds a market cap of $18.8 billion. That is the context for a larger question now being asked across crypto circles: can community and hype move a token more than real network use? On-Chain Activity Shows Little Movement Davis admits that user activity is low and DEX volume is thin. Development updates are limited, daily revenue is weak, and stablecoins barely register on the chain. He made his point with humor too, joking that Cardano’s founder Charles Hoskinson has “a beard worth $25 billion.” But the main claim was serious: the chain’s raw on-chain metrics don’t look strong right now. Is Cardano $ADA dead? Here’s my take. ⤵️ pic.twitter.com/oGnVuQuy9N — Lark Davis (@TheCryptoLark) November 12, 2025 Community Strength And Brand Can Still Drive Prices Based on reports, Davis argued that numbers don’t tell the whole story in crypto. He compared Cardano to XRP and noted that a token can have a big market cap despite questions over intrinsic use; XRP once reached about $150 billion in market value. According to Davis, old buyers can return and push a token higher even when network use is low. That is part of why some traders treat certain assets as almost cult-like. Sentiment matters, but momentum matters more than steady on-chain growth in many cases. Technical Signals Point To A Narrow Upside If Key Levels Break TradingView analyst “AltcoinPiooners” has highlighted recent price action and a possible shift in market pressure. Reports show ADA tested support at $0.53 after hitting $0.60 on November 11 and falling the next day. Analysts See A Clear Path, But Risks Remain According to the analyst, ADA could move to $0.62 and then to $0.65 if $0.60 is cleared, a move that would equal more than a 16% gain from current levels. Reports also revealed that Cardano whales added 348 million ADA over four days while the price dipped below $0.50 recently. On the flip side, a failure at support could send ADA down toward $0.52. That risk was flagged by the same analyst. Related Reading: XRP Earns Academic Praise: University Study Calls It ‘Gold In Your Hands’ Although the debate around weak usage continues, reports have stressed that Cardano is far from dead. The project still commands a loyal base, steady interest from long-time holders, and a market cap in the billions. Featured image from Unsplash, chart from TradingView
Share
NewsBTC2025/11/15 03:00
Crypto Market: Traders Claim the Bear Market Has Begun, but One Major Signal Is Missing

Crypto Market: Traders Claim the Bear Market Has Begun, but One Major Signal Is Missing

The post Crypto Market: Traders Claim the Bear Market Has Begun, but One Major Signal Is Missing appeared on BitcoinEthereumNews.com. Key Insights Many crypto market traders believe the bear market is already here, but several signals do not match a real cycle top. The Pi Cycle Top indicator, which has called the last three tops, has not triggered yet. Past bear markets only began after a confirmed top, not before it, which suggests this cycle may still have room left. The crypto market has been falling for weeks. Many traders now believe the bear market has already begun. The total market cap was near $3.94 trillion on 6 October. It corrected to $3.59 trillion on 11 November. It then dropped again to almost $3.20 trillion this week. These are big moves, so fear is rising fast. But when we place all signals side by side, the picture is not complete. Several charts show weakness. But the main top signal for Bitcoin has not appeared yet. Crypto Market: Traders Think Bear Market Already Started Many shared charts point to some tension for the crypto prices. One chart shows Bicoin USD heading lower than the 50-week moving average. A moving average shows the average price over time, and traders watch it to track the price and market trend. Bitcoin 50W MA Signal | Source: X Older charts compare the 2025 to 2015–2018 and 2018–2021 (4-year moves). In those charts, the peak looks like it formed in late October. This made the correction look like the start of a new downtrend. Do note that it was in October when the Bitcoin price hit a new peak of $126,000. Crypto Market Older Cycles | Source: X Some on-chain charts show long-term holders moving coins. The rise in CDD suggests older coins are transferring, which can look like early selling. Crypto Market CDD Looks Bearish | Source: X ETFs also added pressure. Bitcoin ETFs saw…
Share
BitcoinEthereumNews2025/11/15 03:38