[Blog] Toward Vagrant 3.0

Hi! Sure, I’d be happy to provide a bit more information. I’ll keep my answers in the same order as your questions.

  • For that range of compatibility in a single plugin implementation, the current Ruby based plugin API would be the ideal focus. At some point when pre-3.0 support is no longer required, it would be advantageous to move to the new API mainly because that is where we will be focusing adding new features and enhancements. However, we will be keeping the existing Ruby based plugins fully functional.
  • At this point in time we have no plans on deprecating or replacing vagrant-spec. There will likely be some updates as we work through porting to keep things properly functional, but it will still be used for running high level acceptance tests. Since vagrant-spec cares mostly about a vagrant executable which it runs tests on, there’s no reason pressing reason that we would need to replace it with something else.
  • The new plugin API is built around go-plugin. This is a golang library, but it does not require the plugins to be implemented in golang. There will not be any C bindings introduced to connect Ruby and Go. Instead, Vagrant will interact with plugins over GRPC. While there won’t be any helpers for converting parts of a plugin from one language to another, there is a plugin SDK that will be publicly available once we have shipped Vagrant 2.3.0. The plugin SDK is currently golang based (providing base GRPC server/client implementations, helpers, and interfaces) but it will also include a Ruby implementation as well. The Ruby implementation will also include some extras that the go-plugin library provides to make building plugins using the new API in Ruby easier.

We are planning on publishing a blog post along with the Vagrant 2.3.0 release that includes much of this more developer/maintainer focused content. It will provide more detailed explanations and examples than my somewhat summarized answers. Hope that helps, and if you have more questions, or need something expanded upon, just let me know.

Cheers!