I think it would be a good idea if we moved towards
defining stable APIs, particularly for repositories
outside github.com/juju/juju itself.

In particular, I hope we can make "go get" work
without people needing to jump through the godeps hoop.
This is a particular issue as we move towards having
more external commands in different repositories.

An additional motivation is that I would like us to provide APIs
to enable other people to use the juju code as a stable base on
which to build their own Go programs that use juju functionality.

I had a particular use case for this recently when we
made several breaking changes to the github.com/juju/charm
API. If we had just changed the API, without changing juju/juju and
juju/charmstore simultaneously to use new API, there would have
no way to have both the charm store and juju itself both
building from the same repository.

gopkg.in is a decent solution to this problem, I believe, and
a good direction to head in general.

After discussion with (and approval by) several juju-core members,
we have pushed the new API to gopkg.in/juju/charm.v2 (the
code now lives in the "v2" branch at github.com/juju/charm).
The changeover has been no problem. We have been
able to change the charm store and juju-core at our leisure,
and we have avoided knowingly breaking any external code too.

It has been pointed out to me that we have not raised
this issue on the mailing list yet. This is me doing that :-)

If there are any people that think that this is a bad idea, or
that we should be doing it differently, please speak up now.

  cheers,
    rog.

-- 
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