Skip to main content

Technical Decisions

Library

A library is a package of code your application calls to avoid solving a solved problem. Useful, and every one added is a permanent commitment.

Definition

A library is a package of reusable code your application calls when it needs something specific: generating a PDF, handling dates, processing images, talking to a payment provider.

What It Actually Means

The difference from a framework is control. Your code calls a library. A framework calls your code. That makes libraries far easier to replace, because they sit inside your structure rather than defining it.

A vendor-provided library for talking to their service is often called an SDK. Same idea, published by the company whose system it connects to.

Why They Are Used So Heavily

Because most problems in software are already solved, and solving them again is expensive and worse.

Date and time handling is the standard example. It looks trivial and it is genuinely difficult once time zones, daylight saving and locale differences are involved. Writing it yourself means recreating bugs that were fixed years ago in something well tested.

The same applies to currency, PDFs, image processing, encryption and file formats. Using a mature library is not laziness; writing your own is usually the mistake.

The Cost Of Each One

Every library added is a permanent commitment to somebody else’s decisions.

It has to be maintained. Updated, checked for vulnerabilities, and eventually replaced if abandoned. That is the dependency burden and it never goes away.

It may be abandoned. Maintainers move on. An abandoned library stops receiving security fixes, and anything found in it stays open.

It brings its own dependencies. A library that seems small can pull in a dozen others. This is how a modest application ends up with hundreds of components.

It can change direction. Major versions break things, licences occasionally change, and projects sometimes get acquired.

None of that is a reason to avoid libraries. It is a reason to add them deliberately rather than reflexively, and to prefer mature well-used ones over clever new ones.

The Judgement That Matters

The useful test before adding one: is this problem genuinely solved better elsewhere, or are we importing a hundred lines we could write in ten?

Both mistakes are common. Writing your own encryption is dangerous. Adding a library to check whether a number is even is the opposite failure, and ecosystems where that happens routinely have produced some memorable outages when a trivial package was withdrawn.

For a business, the practical signal is the total count relative to the size of the system. A large number on a modest application suggests things were added casually, and each is maintenance somebody has to carry.

What To Ask

  • How many libraries do we depend on? Not a target, and a very large number on a small system is worth discussing.
  • Are any unmaintained? An honest team can name them.
  • Are they scanned for known vulnerabilities? This should be automated.
  • What are the licences? Mostly permissive, and some carry obligations that matter for commercial software. Worth checking once.
  • Could we replace this one if it were abandoned? For anything critical, the answer should not be no.

The Sensible Position

Use well-established libraries for genuinely solved problems, keep the total deliberate rather than accidental, and make sure somebody is watching for vulnerabilities and abandonment.

That is ordinary maintenance rather than a project, and it is exactly the work that gets deferred until it becomes one.

More terms are in the glossary.

Portrait of Alexander De Sousa, founder of Digital Royalty
Founder-led
“I’ve put everything I know into how this company works — the standards, the method, the care on every project. It runs through the whole team, and I hold us all to it.”

Alexander De Sousa · Founder LinkedIn

Featured on BBC Radio Solent

Get started

Tell us what you need

A few quick questions, then a straight answer from a real person — usually within a few hours.

Tell us what you're working on

Whether it's a new site, a platform, or a process that shouldn't be manual any more — we'll tell you honestly if we can help.