Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use disperse siblings by default after reschedule #174

Closed
user1823 opened this issue Aug 5, 2023 · 22 comments · Fixed by #393
Closed

Use disperse siblings by default after reschedule #174

user1823 opened this issue Aug 5, 2023 · 22 comments · Fixed by #393
Labels
enhancement New feature or request

Comments

@user1823
Copy link
Contributor

user1823 commented Aug 5, 2023

I think that disperse siblings should be automatically called after reschedule (if the user didn't disable it in the config). We have tested it extensively and I don't think it would cause any problem with the majority of the users.

Originally posted by @user1823 in #173 (comment)

@L-M-Sherlock
Copy link
Member

There still is a problem: disperse siblingswill break load balance.

@user1823
Copy link
Contributor Author

user1823 commented Aug 6, 2023

But if someone wants to use disperse siblings, he would use it manually if dispersion doesn't occur automatically after reschedule.

So, I don't think that this is valid reason to not bind disperse siblings to reschedule.

Coming back to the problem you highlighted, it might be desirable to make disperse siblings work with load balance if the user chose to enable both. But, I am not telling you to implement this now, considering that it would probably require a lot of work. You can implement it whenever you find the time to do so.

@Expertium
Copy link
Contributor

I agree that disperse siblings should be used after rescheduling.

@L-M-Sherlock
Copy link
Member

L-M-Sherlock commented Aug 6, 2023

The current implementation of disperse siblings is based on a random allocation. So it would be impossible to work compatibly with load balance and no anki. I have tried to alleviate it in #87, but it doesn't solve the problem completely.

@L-M-Sherlock
Copy link
Member

I find that I have set it by default in #165.

@user1823
Copy link
Contributor Author

I find that I have set it by default in #165.

I don't think so. When I click disperse all siblings after clicking reschedule all cards, there is always a reduction in the number of due cards.

@Expertium
Copy link
Contributor

#194 (comment)
I'm using that version. I just tried dispersing siblings and saw no change in the number of due cards.

@L-M-Sherlock
Copy link
Member

Yeah, auto dispersing siblings only works after the auto rescheduling after sync and reviews. For manual rescheduling, I need to solve these problems:

The current implementation of disperse siblings is based on a random allocation. So it would be impossible to work compatibly with load balance and no anki. I have tried to alleviate it in #87, but it doesn't solve the problem completely.

@user1823
Copy link
Contributor Author

What do you think about this?

But if someone wants to use disperse siblings, he would use it manually if dispersion doesn't occur automatically after reschedule.

So, I don't think that the incompatibility of disperse_siblings with load balancer is a valid reason to not bind disperse siblings to reschedule.

Also, please reopen the issue because it has not been solved yet.

@L-M-Sherlock L-M-Sherlock reopened this Aug 23, 2023
@L-M-Sherlock
Copy link
Member

L-M-Sherlock commented Aug 23, 2023

I'm afraid that #438 is caused by dispersing siblings. I'm still not confident with that feature. Because it is complicated than rescheduling, involving multiple cards. And it is based on a random sampler.

@L-M-Sherlock
Copy link
Member

So, I don't think that the incompatibility of disperse_siblings with load balancer is a valid reason to not bind disperse siblings to reschedule.

I think it is a valid reason. Or we should warning the user that disperse siblings and load balancer are mutually exclusive.

@user1823
Copy link
Contributor Author

user1823 commented Sep 8, 2023

Or we should warning the user that disperse siblings and load balancer are mutually exclusive.

I think informing the user is the best approach. However, I don't see any moment where we can warn the user in the form of a popup. So, I think that this advice should be added to the README and the add-on page. Write it like this:

When both auto disperse siblings and load balance are enabled, auto disperse takes a higher priority. So, the daily review load would not be as smooth. If you want your daily review load to be as smooth as possible, you can disable auto disperse.

@L-M-Sherlock
Copy link
Member

L-M-Sherlock commented Apr 20, 2024

I'm re-considering this feature. Here is my initial design:

  1. merge disperse sibling into reschedule
  2. add a global setting named "Disperse sibling when rescheduling (it breaks load balance)" (enabled by default)
  3. remove "Auto disperse siblings reviewed on other devices after sync" (because it will be executed if users enable "Auto disperse siblings reviewed on other devices after sync" and "Disperse sibling when rescheduling".)

What do you think of?

@Expertium
Copy link
Contributor

Expertium commented Apr 20, 2024

Hard no. I rarely use rescheduling, this would make Disperse Siblings nearly useless for me.
Maybe you misunderstood my initial comment at the top. I'm not suggesting to merge Disperse Siblings and rescheduling, I'm suggesting to run Disperse Siblings after rescheduling.

@L-M-Sherlock
Copy link
Member

L-M-Sherlock commented Apr 20, 2024

I'm suggesting to run Disperse Siblings after rescheduling.

Are they the same? Running Disperse Sibling after rescheduling is just putting the disperse_sibling function in the end of reschedule function. It doesn't mean I will remove the disperse sibling function.

@Expertium
Copy link
Contributor

Expertium commented Apr 20, 2024

Right now I'm using "Auto disperse siblings when review". I'm suggesting to keep that option but also automatically disperse all siblings when rescheduling happens.

  1. "Auto disperse siblings when review" is activated after each review
  2. Additionally, ALL siblings will be dispersed after rescheduling

@L-M-Sherlock
Copy link
Member

I won't remove "Auto disperse siblings when review". As I mention before, Auto disperse siblings reviewed on other devices after sync" will be removed.

@Expertium
Copy link
Contributor

  • "Auto disperse siblings when review" is activated after each review
  • Additionally, ALL siblings will be dispersed after rescheduling

If your plan matches what I wrote here, then sure.

@L-M-Sherlock
Copy link
Member

@user1823, what about you? I plan to implement it in the next week.

@user1823
Copy link
Contributor Author

remove "Auto disperse siblings reviewed on other devices after sync" (because it will be executed if users enable "Auto disperse siblings reviewed on other devices after sync" and "Disperse sibling when rescheduling".)

I assume that you mean "it will be executed if users enable "Auto reschedule cards reviewed on other devices after sync"".

This approach wastes CPU and network resources unnecessarily because, in this case, the users would have to enable "Auto reschedule after sync" and, as a result,

  1. ALL the synced reviews would be rescheduled, not only those which have siblings (In my case, only about 20% of the notes have siblings).
  2. the memory states of the cards would be recalculated.

But, to prevent this issue, we would have to create a new option without removing any of the current options, which can increase clutter / confusion.

@L-M-Sherlock
Copy link
Member

Fine. So I need to keep "Auto disperse siblings reviewed on other devices after sync", and add an extra option "Disperse sibling when rescheduling".

But in this case, if the user enable auto reschedule after sync and auto disperse after sync, the disperse function will be called twice.

@user1823
Copy link
Contributor Author

user1823 commented Apr 20, 2024

if the user enable auto reschedule after sync and auto disperse after sync, the disperse function will be called twice.

You can easily prevent that by adding a simple condition.

Edit:
I don't mean showing an error. The condition would be that if all the three options (auto-reschedule, auto-disperse and disperse after reschedule) are enabled, then disperse executes only once, i.e., after rescheduling.

@L-M-Sherlock L-M-Sherlock added the enhancement New feature or request label Apr 21, 2024
@L-M-Sherlock L-M-Sherlock linked a pull request Apr 21, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants