# Package Oriented Design

DevFeed: [Package Oriented Design](<https://devfeed.tech/articles/package-oriented-design-22122.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2017/02/package-oriented-design.html>)

Published: 2017-02-24T00:00:00Z

Content type: opinion

Language: en

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

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Library](<https://devfeed.tech/topics/library.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [ardan-labs](<https://devfeed.tech/tags/ardan-labs.md>), [blog](<https://devfeed.tech/tags/blog.md>), [cli](<https://devfeed.tech/tags/cli.md>), [design](<https://devfeed.tech/tags/design.md>), [developer](<https://devfeed.tech/tags/developer.md>), [go](<https://devfeed.tech/tags/go.md>), [go-programming](<https://devfeed.tech/tags/go-programming.md>), [golang](<https://devfeed.tech/tags/golang.md>), [programming](<https://devfeed.tech/tags/programming.md>), [projects](<https://devfeed.tech/tags/projects.md>), [repo](<https://devfeed.tech/tags/repo.md>), [services](<https://devfeed.tech/tags/services.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>), [structure](<https://devfeed.tech/tags/structure.md>)

## AI overview

This article presents package-oriented design for Go projects, explaining how project structure and package guidelines can clarify package ownership, improve team communication, and support clean architecture. It proposes separate approaches for shared kit projects and application projects.

## Source excerpt

Updated on February 28th, 2017 Prelude This post is part of a series of posts designed to make you think about your own design philosophy on different topics. If you haven't read these posts yet, please do so first: Develop Your Design Philosophy Design Philosophy On Packaging Introduction Package Oriented Design allows a developer to identify where a package belongs inside a Go project and the design guidelines the package must respect. It defines what a Go project is and how a Go project is structured. Finally, it improves communication between team members and promotes clean package design and project architecture that is discussable.