Version numbering, the release, and backwards compatibility
Mark Ramm
mark.ramm-christensen at canonical.com
Thu Apr 11 16:22:07 UTC 2013
Here's the TLDR summary:
After today's developer discussions, I believe we have some consensus
the about the upcoming public release of Juju-core, we believe it should
be version 1.10.0.
We also had agreement based on the current state that the new go based
juju core should become the default, both in Universe and in the ~juju
PPA. The python version 0.7 should also be explicitly installable via
update alternatives, and that 0.7 will likely be the "end of life" for
pyjuju.
Full context:
While huge progress has been made over the last month, I don't believe
we have enough charm testing completed to be completely ready to go for
the 2.0 moniker in this first release.
And our convention is that odd minor release numbers are "development"
versions, we would rather not directly put a dev version into the release.
So, the suggestion was made to go with 1.10.0. The rest of this e-mail
is an attempt to spell out what that means for our development process.
Once we release 1.10.0 two things should happen:
* ongoing development work will move to 1.11.x
* critical bugfixes and security issues should be handled by fixing
both the current working tree, and backporting to 1.10.x
Compatibility breaking changes to the websocket API, the command line
interface, the mongo database schema, or agent communications should be
flagged immediately on juju-dev, and a smooth upgrade process should be
mapped out as soon as they are discovered.
We should be promising basic compatibility, and a fully supported
upgrade path from 1.10.x to 1.12.x and to 2.0.x. We should be
developing MongoDB schema update support, and all the other tools
necessary to manage these upgrades in a sane way.
We are in a somewhat difficult position at the moment in which the
"effective API" of juju includes:
* Mongo DB Schema
* Command Line input/output
* and the websocket API
We have different levels of documentation and testing for each of these
three "public interfaces" and there is code that talks to all three. So,
determining what is a real backwards incompatible change may not always
be easy, but whenever any of these things change in a backwards
incompatible way, we will have to increment the major version number.
Ultimately it is our plan to get to the point where the websocket API's
will become "the critical contract" and the command line client will
just use that API to talk to the state server(s), as will the agents,
the GUI, and other third party tools that are part of the ecosystem.
At that point the internal mongo schema will no longer be part of the
public API, and we could also consider the possibility of breaking out
the command line API contract from the "core" api, and visioning them
separately -- but for now our contract uses all three (but we should be
working very hard to avoid adding any new components that talk directly
to MongoDB).
If I've missed anything from our discussions, or anybody has a proposal
on how to handle all of this more cleanly, now is the time to raise issues.
--Mark Ramm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju-dev/attachments/20130411/8925f7bb/attachment.html>
More information about the Juju-dev
mailing list