# Modules Part 01: Why And What

DevFeed: [Modules Part 01: Why And What](<https://devfeed.tech/articles/modules-part-01-why-and-what-22152.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2019/10/modules-01-why-and-what.html>)

Published: 2019-10-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [modules](<https://devfeed.tech/topics/modules.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [ardan-labs](<https://devfeed.tech/tags/ardan-labs.md>), [blog](<https://devfeed.tech/tags/blog.md>), [developers](<https://devfeed.tech/tags/developers.md>), [go](<https://devfeed.tech/tags/go.md>), [go-programming](<https://devfeed.tech/tags/go-programming.md>), [golang](<https://devfeed.tech/tags/golang.md>), [modules](<https://devfeed.tech/tags/modules.md>), [programming](<https://devfeed.tech/tags/programming.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

## AI overview

This introductory article explains why Go modules were created and how they address working outside GOPATH, dependency version selection, and native dependency management through Go tooling. It focuses on the transition from GOPATH to modules and introduces their high-level semantics.

## Source excerpt

Series Index Why and What Projects, Dependencies and Gopls Minimal Version Selection Mirrors, Checksums and Athens Gopls Improvements Vendoring Introduction Modules provide an integrated solution for three key problems that have been a pain point for developers since Go's initial release: Ability to work with Go code outside of the GOPATH workspace. Ability to version a dependency and identify the most compatible version to use. Ability to manage dependencies natively using the Go tooling. With the release of Go 1.13, these three problems are a thing of the past. It has taken a lot of engineering effort from the Go team over the past 2 years to get everyone here. In this post, I will focus on the transition from GOPATH to modules and the problems modules are solving. Along the way, I will provide just enough of the semantics so you can have a better understanding of how modules work at a high level. Maybe more importantly, why they work the way they do.