lichess-org / lila

♞ lichess.org: the forever free, adless and open source chess server ♞
https://lichess.org
GNU Affero General Public License v3.0
15.79k stars 2.28k forks source link

Feature request: Learn from all your games #6980

Closed ddugovic closed 3 years ago

ddugovic commented 4 years ago

Longtime Lichess player and supporter here. The "learn from your mistakes" feature is really fantastic. Many thanks to the developers.

To make this feature even more useful, I suggest setting up a way to go through your mistakes across ALL games for which the computer analysis has been run. It would operate exactly the same, except the mistakes would not be drawn only from the one game you just played -- they would come from any of your past games where you hadn't already reviewed those mistakes.

Perhaps this option could be placed within the Learn menu at the top of the screen.

Thanks very much.

https://lichess.org/forum/lichess-feedback/create-learn-from-your-mistakes-across-all-games

ddugovic commented 3 years ago

Puzzles v2 provide adequate learning tools, from games which have been analyzed by computers. If something else is useful feedback will need to explain in greater detail why puzzles are inadequate.

gabbard commented 3 years ago

I'll have a shot at explaining why this would still be valuable. To be concrete, I would advocate for something which is just like the "Learn from your mistakes" interface, but which randomly selects mistakes from across all your games. A spaced-repetition scheduler would be ideal, but even a random selection would be useful.

Why are puzzles not adequate?

Here are some links to people asking for or trying to do something similar:

Possible objection: It would be computationally intensive to analyze all the games of every user. Solution: Just save mistakes from games where the user has already gone through the current "Learn from your mistakes" feature. In this case, the analysis is already complete and the mistakes just have to be recorded.

ddugovic commented 3 years ago

Sorry for closing this again; I think https://lichess.org/training/of-player is a satisfactory solution. Perhaps another Lichess developer can correct me if I am overlooking something important here (I am a bit overwhelmed and cannot advocate for new issues at this time although I like your feature request).

gabbard commented 3 years ago

I think lichess.org/training/of-player is a satisfactory solution

From the description of lichess.org/training/of-player, it's reasonable to assume it would work as a solution, but in practice it doesn't. It in theory could address the first point above (though not the second or third), but in practice any given player has very few puzzles in the database from their games. I have 150 games on Lichess and (sadly) 3-4 mistakes per game in "Learn from your mistakes" mode, but I don't have any puzzles in lichess.org/training/of-player . One of my kids has 200 games and has just one.

In terms of being overwhelmed, from a little searching in the repo it looks like all the analyzed games for a player are already being stored in the database together with the computer's judgement of moves as blunders, etc., so I might be able to (slowly) implement at least the backend of this feature and submit a PR, if it is likely that (high quality) PR for this feature would be accepted. I am guessing that the most challenging thing is that for a puzzle you have a single correct solution which can be precomputed, but this case you need to evaluate whatever the user's answer is to see if it is a good move or not.

jeremyjh commented 3 years ago

I have more than 300 Rapid & Classical games and 0 puzzles. Yet, I have made lots of mistakes that I could be reviewing from time to time. I would not expect other people to find my mistakes as useful as the average puzzle; they would probably just play the correct move which is distinguished only by the fact that I didn't play it.

The requested feature is not covered at all by Lichess's feature set, and if the answer is "we won't build this feature because we don't have time" then can it remain open so that someone else can submit a PR with a reasonable hope it would be accepted?

ddugovic commented 3 years ago

can it remain open so that someone else can submit a PR with a reasonable hope it would be accepted?

There are 609 open issues; I am raising my standard since in years past my optimism that "someone" would address open issues was misguided and Lichess needs to curate its backlog of issues. Personally my standard is that I only open issues I care about. Maybe if someone were to volunteer to do this, I could open it.

gabbard commented 3 years ago

Maybe if someone were to volunteer to do this, I could open it.

Sorry, I should have been clearer in my comment above. I meant to volunteer to (slowly) implement this, but before using up scarce free time on it, I wanted some confirmation that Lichess would be willing to add such a feature if I supplied the code (and the code was found acceptable by the usual criteria). At my day job I would usually write up a 1-2 page design doc laying out how the feature would work in detail and a high-level description of how it would be implemeted; I would be happy to supply such a document if it would be helpful in deciding.

ddugovic commented 3 years ago

Ah... thanks for checking. The more I think about this, I didn't think this issue scales well or could be done without writing lots of code which could be difficult to maintain. So although last June I was optimistic and might have been able to assist developers with new features (although in hindsight, probably not) today I am busy and this issue still has all the original scalability concerns.

The main reason I recorded this issue in the first place was to try to get someone to volunteer to develop it, that's true; but I wrote it "learn from all your games" to highlight the obvious scaling and code complexity concern at a time where my local lila instance runs but I cannot connect to its socket server and besides I am busy. Maybe some developer could foster this issue from inception to completion, but who?

benediktwerner commented 3 years ago

@gabbard I think the feature has merit. If you volunteer to implement it, there's probably a decent chance it will get accepted (although maintenance is of course always a problem, so it's certainly not guaranteed). I'd just ask on Discord and let Thibault decide since he has the final say anyway. A clear description and a rough idea of how it might get implemented would certainly help but I don't think a formal design doc is necessary. It might be a good idea to simply open a new issue and put it there, since this issue is a bit all over the place.

Keep in mind though that the lichess backend is written in Scala. I'd be happy to provide a bit of guidance and point you to the right parts of the project or help with the setup but you'll certainly need to implement it yourself.