The State of Go Plugins

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Less time debugging, more time building
  • SaaSHub - Software Alternatives and Reviews
  • goprotobuf

    Go support for Google's protocol buffers (by golang)

    The difference to the client-server solution is subtile when it comes to the details in implementation. protoc-gen-go and other plugins in the Protocol Buffers ecosystem use this approach.

  • yaegi

    Yaegi is Another Elegant Go Interpreter

    They dynamically load, interpret and execute Go code. The folks at Traefik Labs have created Yaegi to do this. This allows for calling into the plugin code by using an interface and a bit of reflection magic of the runtime. Because the code is loaded and interpreted only once the performance penalty is only a the startup. But, it increases the complexity.

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • terraform

    Terraform enables you to safely and predictably create, change, and improve infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

    Terraform, Protocol Buffers, Waypoint or Traefik have build a flourishing ecosystem by using the Go programming language and providing pluggable interfaces. But, not all pluggable interfaces in Go are created equal. There is more than one solution to the problem.

  • gRPC

    The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

    Plugins are standalone Go programs (executables) that the main program executes. The main program runs a server that the plugin can connect to when run. The connection information are passed to the plugin as parameters or environment variables. Client and server commonly communicate via gRPC. Which allows for efficient communication, sharing the used interface and code generate client and server boilerplate.

  • Protobuf

    Protocol Buffers - Google's data interchange format

    Plugins are again executable that the main program runs. But in contrast to the client-server communication via gRPC the main program and the plugin communicate via the standard OS streams stdin / stdout with each other. In order to standardize the communication, many of the programs use Protocol Buffers.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts