juju command progress ui
Julian Edwards
julian.edwards at canonical.com
Thu Feb 28 05:35:31 UTC 2013
Hello Gustavo, thanks for your response.
On 28/02/13 15:05, Gustavo Niemeyer wrote:
> On Thu, Feb 28, 2013 at 12:57 AM, Julian Edwards
> <julian.edwards at canonical.com> wrote:
>> Are you defining its task differently to me? Bootstrap is asynchronous,
>> so it returns you to the prompt as soon as the request went to the
>> provider. I've seen it return in half a second when bootstrapping a
>> MAAS environment.
>>
>> Given that if you then try to deploy, the deployment inexplicably blocks
>> until some apparently random later time. This feels like a poor user
>> experience to me.
>
> We should have a warning message in those cases to make the situation
> more clear, but I disagree that the proposal makes the situation
> better, as detailed below.
I agree that some extra output would be useful.
>> It makes far more sense from a user's point of view to block at the
>> point where the delay is really happening. I don't see that as
>
> Saying that the delay really happens in the bootstrap command is like
> saying that the delay for an SMTP message to reach its target really
> happens in your mail client.
I don't see that analogy at all, sorry. I am not waiting to do
something else after I send an email, it's gone and that's that. The
fact is that bootstrap returns before bootstrapping is actually finished.
> Having a client command that blocks for 10 minutes doing absolutely
> nothing while the provider decides to allocate a new machine on its
> own time seems to me like a pretty poor user experience.
This is exactly what "juju deploy" does if you run it immediately after
bootstrap returns. Do you agree that's a poor user experience?
>> artificial at all - in fact it feels more artificial when "deploy"
>> blocks because the bootstrap isn't done yet. I'd feel better if it
>> queued the deployment and returned immediately to the prompt. Can you
>> see how this is inconsistent?
>
> Bootstrap blocks while its intention isn't *requested*, at which point
> there's nothing else for this command to do. The deploy command
> blocks while its intention isn't *requested*, at which point there's
> nothing else for this command to do.
The end user doesn't care so much about completion of the request as
much as the completion of the whole operation - bootstrap and deployment
in this case. In simple terms, it's not done when the request finishes,
it's done at some point in the future.
> For your suggestion to be consistent, the deploy command would
> have to wait until the machines were all alive, and their respective
> services working. That's not a good user experience either.
I think you misunderstood me. The inconsistency arises because one is
blocked on the other, but the end user doesn't care about that. They
just want to deploy a service and what they see is that:
- bootstrap is really quick!
- deployment seems to hang for ages, then the command returns, but it's
still not deployed
When I first used Juju, this confused the heck out of me because it was
before I understood its architecture a bit less than I do now. I just
think we can work a bit harder to improve this with better and more
feedback to the user. And I am saying this mostly as a user who got
confused, and that's pretty much always a problem with the software not
the user - unless the user is too stupid to be in front of a computer,
which I don't think I am :)
Cheers
J
More information about the Juju-dev
mailing list