<div dir="ltr">Matty, this sounds like a great idea.<div><br></div><div>Dave, I understand and thanks for clarifying. Please give us some time to coordinate the package relocation in our next iteration (begins next week).<div><br></div><div>Thanks,</div><div>Casey</div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 19, 2016 at 2:57 AM, David Cheney <span dir="ltr"><<a href="mailto:david.cheney@canonical.com" target="_blank">david.cheney@canonical.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks Matty!<br>
<br>
On Thu, May 19, 2016 at 6:51 PM, Matthew Williams<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:matthew.williams@canonical.com">matthew.williams@canonical.com</a>> wrote:<br>
> Yeah - the mistake we made was starting with pure intentions but over time<br>
> starting to think of it as just another part of core. I'll have to discuss<br>
> it with Casey when he's up<br>
><br>
> On Thu, May 19, 2016 at 9:47 AM, David Cheney <<a href="mailto:david.cheney@canonical.com">david.cheney@canonical.com</a>><br>
> wrote:<br>
>><br>
>> I think that would be the best solution, I don't see how we can undo<br>
>> the dependencies between cmd/juju and romulus -- they're so tightly<br>
>> coupled they should probably live in the same repository.<br>
>><br>
>> On Thu, May 19, 2016 at 6:45 PM, Matthew Williams<br>
>> <<a href="mailto:matthew.williams@canonical.com">matthew.williams@canonical.com</a>> wrote:<br>
>> > Really sorry about this Dave, I'd not realised just how much they relied<br>
>> > on<br>
>> > each other. Surely there's an argument for romulus being merged into<br>
>> > core?<br>
>> ><br>
>> > On Thu, May 19, 2016 at 8:55 AM, David Cheney<br>
>> > <<a href="mailto:david.cheney@canonical.com">david.cheney@canonical.com</a>><br>
>> > wrote:<br>
>> >><br>
>> >> On Thu, May 19, 2016 at 5:04 PM, roger peppe<br>
>> >> <<a href="mailto:roger.peppe@canonical.com">roger.peppe@canonical.com</a>><br>
>> >> wrote:<br>
>> >> > On 19 May 2016 at 07:02, David Cheney <<a href="mailto:david.cheney@canonical.com">david.cheney@canonical.com</a>><br>
>> >> > wrote:<br>
>> >> >> Hello,<br>
>> >> >><br>
>> >> >> <a href="http://github.com/juju/juju/cmd/juju/commands" rel="noreferrer" target="_blank">github.com/juju/juju/cmd/juju/commands</a>:<br>
>> >> >>   <a href="http://github.com/juju/romulus/cmd/commands" rel="noreferrer" target="_blank">github.com/juju/romulus/cmd/commands</a>:<br>
>> >> >>     <a href="http://github.com/juju/romulus/cmd/setplan" rel="noreferrer" target="_blank">github.com/juju/romulus/cmd/setplan</a>: <<<<<<<<<<<<<<<<<<<<<<br>
>> >> >>       <a href="http://github.com/juju/juju/api/service" rel="noreferrer" target="_blank">github.com/juju/juju/api/service</a>:<br>
>> >> >>       <a href="http://github.com/juju/juju/cmd/modelcmd" rel="noreferrer" target="_blank">github.com/juju/juju/cmd/modelcmd</a>:<br>
>> >> >><br>
>> >> >> cmd/juju depends on the romulus repository, and the romulus<br>
>> >> >> repository<br>
>> >> >> depends on juju.<br>
>> >> >><br>
>> >> >> This is terrible. It means we _cannot_ change the public api of the<br>
>> >> >> juju that romulus depends on because then juju won't compile, and we<br>
>> >> >> cannot land the fix to romulus without breaking juju.<br>
>> >> ><br>
>> >> > I agree that this is unfortunate, but "cannot" is a strong word. I<br>
>> >> > believe<br>
>> >> > that there is a (somewhat painful) workaround for this - we've been<br>
>> >> > in<br>
>> >> > similar situations<br>
>> >> > before.<br>
>> >> ><br>
>> >> > Say you want to change the public API of juju in a backwardly<br>
>> >> > incompatible<br>
>> >> > way. Here's how you can do it.<br>
>> >> ><br>
>> >> > First change the API and fix romulus to work with the new API,<br>
>> >> > without<br>
>> >> > merging either change into their repos.<br>
>> >> ><br>
>> >> > Then push the romulus change to the romulus repo in a *feature<br>
>> >> > branch*<br>
>> >> > rather onto master. Tests will not pass in this branch because it<br>
>> >> > depends<br>
>> >> > on as-yet-to-be-landed changes in juju, but the code is now available<br>
>> >> > in<br>
>> >> > the romulus repo.<br>
>> >> ><br>
>> >> > Then propose the Juju changes with the feature-branch revision<br>
>> >> > of romulus as a dependency. Tests should pass OK because godeps<br>
>> >> > doesn't care which branch its dependencies are pulled from.<br>
>> >> ><br>
>> >> > Once that's landed, land the romulus changes in romulus master<br>
>> >> > depending on the just-landed changes in juju.<br>
>> >> ><br>
>> >> > Then update juju to use the latest romulus dependency.<br>
>> >><br>
>> >> Or I could just land the commits directly. I guess it depends if we<br>
>> >> want to play the CI game or not. My point is creating loops like this<br>
>> >> means we have to reach for even more creative measures to mitigate<br>
>> >> them.<br>
>> >><br>
>> >> To be clear, this is a big mistake, it's fine for juju to depend on a<br>
>> >> project, we currently depend on 72 projects. What is not ok is for<br>
>> >> that project to then depend back on juju, that is poor software<br>
>> >> engineering.<br>
>> >><br>
>> >> > As for the cyclic dependency itself, perhaps there's an argument for<br>
>> >> > moving the main juju command into a separate repo (or everything<br>
>> >> > *but*<br>
>> >> > the juju main command into a separate repo) so that it's possible<br>
>> >> > to include externally implemented commands without creating a cycle.<br>
>> >><br>
>> >> I'd very much like to see this. It's clear that the juju command is<br>
>> >> going to have to serve multiple masters, and by breaking it off into a<br>
>> >> separate project this would force us (juju) to create a supported<br>
>> >> public API which we currently do not have.<br>
>> >><br>
>> >> ><br>
>> >> >   cheers,<br>
>> >> >     rog.<br>
>> >> ><br>
>> >> >> Casey, please fix this immediately. Either juju depends on romulus,<br>
>> >> >> or<br>
>> >> >> romulus depends on juju, but at the moment they both depend on each<br>
>> >> >> other and that is a showstopper,<br>
>> >> >><br>
>> >> >> Thanks<br>
>> >> >><br>
>> >> >> Dave<br>
>> >> >><br>
>> >> >> --<br>
>> >> >> Juju-dev mailing list<br>
>> >> >> <a href="mailto:Juju-dev@lists.ubuntu.com">Juju-dev@lists.ubuntu.com</a><br>
>> >> >> Modify settings or unsubscribe at:<br>
>> >> >> <a href="https://lists.ubuntu.com/mailman/listinfo/juju-dev" rel="noreferrer" target="_blank">https://lists.ubuntu.com/mailman/listinfo/juju-dev</a><br>
>> >><br>
>> >> --<br>
>> >> Juju-dev mailing list<br>
>> >> <a href="mailto:Juju-dev@lists.ubuntu.com">Juju-dev@lists.ubuntu.com</a><br>
>> >> Modify settings or unsubscribe at:<br>
>> >> <a href="https://lists.ubuntu.com/mailman/listinfo/juju-dev" rel="noreferrer" target="_blank">https://lists.ubuntu.com/mailman/listinfo/juju-dev</a><br>
>> ><br>
>> ><br>
><br>
><br>
</div></div></blockquote></div><br></div>