boinc icon indicating copy to clipboard operation
boinc copied to clipboard

Make "Request tasks to checkpoint at most every N seconds" clearer

Open hucker75 opened this issue 2 years ago • 14 comments

The option "Request tasks to checkpoint at most every N seconds" is ambiguous. Does it mean no more often than every N seconds, or does it mean at an interval no longer than N seconds? I can see both being equally likely and have no idea which was meant.

hucker75 avatar Feb 18 '23 20:02 hucker75

Does it mean no more often than every N seconds, or does it mean at an interval no longer than N seconds?

I may be confused, but I think what you've asking means the same things. Can you provide examples? The setting means to checkpoint at X seconds or less, dictated by the project.

Vulpine05 avatar Feb 18 '23 22:02 Vulpine05

It should say "Request tasks to checkpoint every N seconds". Apps can checkpoint only at particular points in their execution. The semantics of the pref: N seconds after the last checkpoint (or the start of the task) the client sends the app a message telling it to checkpoint the next time it is able to. When the app has finished checkpointing, it informs the client.

davidpanderson avatar Feb 18 '23 23:02 davidpanderson

Vulpine: For example if I said to you, "don't mow the lawn more often than every week, or you'll damage the grass". That means mow every 7+ days. I could also say in a similar way to Boinc, "mow the lawn at most every week". Surely that also means don't mow more often than that (as in the most often you should be mowing it is 1 week), so do it every 7+ days. But you're reading it as <=7. Both are valid interpretations. Is "most" referring to the time interval, or to how often you're doing it?

David: "Request tasks to checkpoint every N seconds" would be clearer, I like that. Or it could be "Tasks checkpoint every N seconds or more." Or "Tasks must checkpoint no more often than every N seconds"

hucker75 avatar Feb 19 '23 00:02 hucker75

Or it could be "Tasks checkpoint every N seconds or more."

I'm not a native speaker, but this sound to me like 'do at least one checkpoint every N seconds', and has the opposite meaning (like do it more than 1 every N seconds).

Or "Tasks must checkpoint no more often than every N seconds"

The problem is that task are not forced to do that. So they may do checkpoint or not, it's completely up-to-them, because not every application can make a checkpoint any moment in time. And even more, some applications have no checkpoints at all.

AenBleidd avatar Feb 19 '23 20:02 AenBleidd

Being a native speaker wouldn't help, English is a very imprecise language. Try working out what "next Wednesday" means when today is Monday. 50% of people will say it's in 2 days, 50% will say it's in 9 days. Depends on whether you group days into weeks or not.

I assume tasks are not allowed to checkpoint more often than the number of seconds you put in the setting?

Perhaps a more precise wording would be "Minimum time between checkpoints"? I can't see that meaning two things.

hucker75 avatar Feb 19 '23 21:02 hucker75

It should say "Request tasks to checkpoint every N seconds". Apps can checkpoint only at particular points in their execution. The semantics of the pref: N seconds after the last checkpoint (or the start of the task) the client sends the app a message telling it to checkpoint the next time it is able to. When the app has finished checkpointing, it informs the client.

I think @davidpanderson's revision makes the most sense for what the client is doing.

Vulpine05 avatar Feb 20 '23 03:02 Vulpine05

My way lets the user know it might not happen :-)

hucker75 avatar Feb 20 '23 04:02 hucker75

My way lets the user know it might not happen :-)

I would argue the opposite. "minimum time between checkpoints" assumes that the application will checkpoint. As mentioned previously, some applications don't checkpoint. The way your suggestion is phrased implies to me that there will be a checkpoint.

David's way is simply requesting to checkpoint. It may or may not happen, nor do we know how soon it will happen once requested (depends when the application is ready to checkpoint once requested).

Perhaps the User Manual needs to be more descriptive for users to understand what this setting does?

image

Vulpine05 avatar Feb 20 '23 04:02 Vulpine05

the client sends the app a message telling it to checkpoint the next time it is able to. When the app has finished checkpointing, it informs the client.

Can the app checkpoint more often, even if the client has not requested it? I so, then I agree with @davidpanderson's suggested wording. If the app can checkpoint only after a request from the client, then I think "minimum time between checkpoints" is better.

"minimum time between checkpoints" assumes that the application will checkpoint.

Not necessarily. Never is the same as infinite time between checkpoints which is greater than, and so consistent with, any possible value for "minimum time between checkpoints."

CharlieFenton avatar Feb 20 '23 09:02 CharlieFenton

Can the app checkpoint more often, even if the client has not requested it?

Technically - yes. Since 'checkpoint' request from the BOINC client is just an event that is sent to the running application, it's up to the application to handle it properly. Application developer can even completely ignore these events and do checkpoints when they would like to do that as well as not do any checkpoints at all.

AenBleidd avatar Feb 20 '23 09:02 AenBleidd

I would argue the opposite. "minimum time between checkpoints" assumes that the application will checkpoint. As mentioned previously, some applications don't checkpoint. The way your suggestion is phrased implies to me that there will be a checkpoint.

No, because "minimum" does not imply it has to. It means you're asking the application to checkpoint every 30 seconds, or every more than 30 seconds if it wishes. Like if I said to you "leave a minimum gap of 7 days between each application of fertiliser". You could choose to do it every 7 days, or every 50 days. I'm just warning you you'd damage the plants with an overdose if the time is less than 7 days.

hucker75 avatar Feb 20 '23 18:02 hucker75

Seems like the most descriptive and true to reality would be some form of this lengthy "Remind tasks to checkpoint every N seconds; tasks might ignore this and elect to checkpoint at a time of their own choosing with less or more frequency, including never." Otherwise, some subtleness of the reality gets lost between how people read "at most" or "at least" or "no more than" or whatever else, given their own linguistic biases based on their own non-English languages, etc. I know that despite being an English/Turkish/German-speaking computer/software engineer, this one setting had me always confused until I read this thread. :)

TunaErtemalp avatar Feb 20 '23 19:02 TunaErtemalp

Yes, a shortened version of that would be good. Perhaps "Ask tasks to checkpoint every 30 seconds (some tasks may ignore this setting)", with your full text available as a mouseover.

hucker75 avatar Feb 20 '23 19:02 hucker75

Yes, a shortened version of that would be good. Perhaps "Ask tasks to checkpoint every N seconds (some tasks may ignore this setting)", with your full text available as a mouseover.

Yup. I'd love that. I'll leave it to the source code warriors to make that sort of change. I am not at all set up to do that. :)

TunaErtemalp avatar Feb 24 '23 17:02 TunaErtemalp