Packages are the building blocks of large projects in Go. Whether intended for internal use, or destined for open-source stardom, writing good packages with clean and clear APIs will greatly increase the chance that the code is used and reused. This talk will explore best practices, goals, and helpful tips and tricks that help you to write beautiful packages.
Many applications have a requirement to load plugins, from either first or third parties, but until recently Go lacked the ability to use the standard shared memory model for this. Back in 2013 with the launch of Packer, HashiCorp built a plugin system for Go which works in multiple processes using RPC. It's since been used in Terraform and Otto, and separated out into a battle-tested library named 'go-plugin' which anyone writing Go can use.
In this talk we'll look at the history of go-plugin, build an example host and plugins using it, and talk about what is coming in future.
James is a software developer and consultant living in Bath, England. He often works on systems in industries with significant regulatory constraints, including pharmaceutical manufacturing, healthcare and energy. He is currently working on the op