Libraries, Frameworks, Plugins, etc.

We hear a lot of terms for software, but what do they all mean?

What is a program vs an application?

What is a service vs a platform?

What is a package vs a library?

What is a tool vs a utility?

What is a plugin vs a module?

What is an enhancement vs an extension?

What is a system vs a framework?

What is a protocol vs a standard?

The difference is in the micro or macro usage. On the left, things are generally smaller and have a more specific use case. On the right are things that have broader purpose and capabilities.

However, it's like the different between a ship and a boat. There is no clear line and things are always changing. These are constructs for describing patterns of machine logic that we interact with. A tool becomes a utility when it has many features. A package becomes a library when everyone uses it.