The Kibana plugin interfaces are in a state of constant development. We cannot provide backwards compatibility for plugins due to the high rate of change. Kibana enforces that the installed plugins match the version of Kibana itself. Plugin developers will have to release a new version of their plugin for each new Kibana release as a result.
Most developers who contribute code directly to the Kibana repo are writing code inside plugins, so our Contributing docs are the best place to start. However, there are a few differences when developing plugins outside the Kibana repo. These differences are covered here.