DEV Community

Hamza Tamenaoul
Hamza Tamenaoul

Posted on • Edited on

Framework vs library vs package vs module: The debate

This article was first published in my blog

As a software developer, this is one of the questions that is often asked, and one of a big source of confusion. In the debate about the difference between frameworks, libraries, packages and modules, what does each one of them represent.

Module

Is the smallest piece of software. A module is a set of methods or functions ready to be used somewhere else.

Package

Is a collection of modules. This may sound funny, but usually what a package does, is gather a number of modules holding in general the same functional purpose. Making it easier to include all the related modules at once.

Library

Well library at it's core, is a collections of packages. It's purpose is to offer a set of functionalities ready to use without worrying about the subsequent packages. So a library is what you include when you want to add some functionality to your code. It does not force any coding style on you either.

Framework

It's a set of libraries. But this time, the framework does not just offer functionalities, but it also provides an architecture for the development work. In other words you don't include a framework. You integrate you code into it. He is the wire frame of the project. That's why a framework forces its coding style on you.

I hope that this quick summary was enjoyable !

Latest comments (7)

Collapse
 
aimil_arif profile image
Aimil Arif

thanks a lot for this explanation..

Collapse
 
melli79 profile image
M. Gr.

I heard that many js developers are begging React to be called a library, but comparing to your obvious definitions it should be called a framework even though a smaller one than say angular, because it enforces you to obey its patterns of state handling and re-rendering via state change.
So what is the benefit of pretending that react is as lightweight as a library?

Collapse
 
obviousjayhawk profile image
Abdullah Tariq

In my opinion, the notion of portraying React as lightweight can stem from its modular nature and the fact that we can choose to incorporate only specific aspects of it into projects. This modularity allows to maintain a degree of flexibility and control over the architecture, akin to working with a library.

Collapse
 
richardvinu profile image
Richard_IT

A library is a piece of reusable code that provides some well-tested functionality through a well-defined interface. It can contain one or more modules.
u forgot add important point i.e Both library and package terms are used interchangeably in JavaScript community.

Collapse
 
melanol profile image
Marsel Khisamutdinov

"He is the wire frame of the project."

Collapse
 
dimplejha profile image
jassica

thaank u soo much

Collapse
 
curiouscoder profile image
Lenny Adams

This is a truly helpful explanation! Thank you for taking the time to explain these differences in a clear and concise manner. You've helped me to have a much clearer understanding of how these terminologies actually play out in Software Development. Well done!