Some of you will be aware of the excitement over the last week getting
Juju 2.0 into Xenial, this is an update mail so everyone knows what
the goal is with the user experience.

The challenge here is we want Juju 2.0 and all the new functionality
to be the default on release, but not break our existing users who
have working Juju 1.X environments and no deployment upgrade path yet.
So, versions 1 and 2 have to be co-installable, and when upgrading to
xenial users should get the new version without their existing working
juju being removed.

There are several ways to accomplish that, but based on feedback from
the release team, we switched from using update-alternatives to having
'juju' on xenial always be 2.0, and exposing the 1.X client via a
'juju-1' binary wrapper. Existing scripts can either be changed to use
the new name, or add the version-specific binaries directory
'/var/lib/juju-1.25/bin' to the path.

Because the meaning of 'juju' is changing, we want to give a
on-first-run message about how to work with any existing environments
the user may have. That work is covered by:
<https://bugs.launchpad.net/juju-core/+bug/1564622>
The best way to detect seems to be, when creating the new
configuration for 2.0, if ~/.juju or JUJU_HOME is set, use the series
to suggest ways to access or install the 1.X client.

There were some other interesting points from review.

The way we do plugins both leads to large binaries with a lot of
duplication, and means the only sane way to deal with multiple juju
versions is through path manipulation. If anyone is wants to
distribute juju plugins, they'll need to watch out for this. See this
bug on the binary sizes:
<https://bugs.launchpad.net/juju-core/+bug/1564677>

Also we've had to avoid stripping the juju binaries, which is
otherwise standard distro practice, as it was unsupported and go 1.2
breaks. With the switch to go 1.6 it seems like this may now work as
expected, but needs to go through testing:
<https://bugs.launchpad.net/juju-core/+bug/1564662>

We also have some ongoing questions over golang packaging in the
distro as a whole, but have demonstrated we an split out and create
seperate golang-*-dev packages for nearly all the juju dependencies as
needed.

We hope to avoid most of the pain from this packaging process next
cycle by putting our alpha releases into the devel disto (Y 16.10),
rather than just adding them to our PPA. This will not need to replace
the 2.0 version if we have compatibility concerns with early versions
given the packaging changes from this cycle, but we will also be back
to no-breakage mode as well.

Martin

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev

Reply via email to