When building our software systems, we have time and budget limitations. Because of those limitations, it is not feasible to write every piece of code that your software uses. Almost every application needs to interact with the underlying operating system, filesystem, and external I/O. For those interactions, we usually don’t reimplement the logic. We pick the libraries that are already present and provide that functionality for us. We call those libraries third party because our team or company does not create them. They could be developed by an open source community or other companies specializing in a specific part of the system’s design. For example, when sending data to an external HTTP system, we often pick an existing HTTP client implementation.