-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
make blogs more discoverable #17690
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
make blogs more discoverable #17690
Conversation
If I read the code correctly, then the blogging homepage will show all blog posts tagged by the LLM as "good" (or untagged but let's ignore this for now), sorted only by date. We lose the ranking of blog posts by:
As a result I expect the blogging homepage to be overrun with low quality content that just passed the LLM evaluation, without any additional ranking, therefore without opportunity for popular or quality content to float above the pile. But I suppose that's the idea. To give every post a chance for the top of the pile. And while I don't think it's a good idea, the implementation of it looks good, and I'm willing to give it a try. |
Good. The filter does a lot of work, check out testy.lichess.dev (which has the full prod blog db up until early march of this year) |
yes, blog tier's impact on community has been removed. but the db data and ui to set it remains, and i can see it being given purpose in the future (i.e. "best" tier auto-pins to carousel for 7 days, "good" tier auto-adds new posts to carousel, etc.)
mods only used this on titled bloggers they wanted to treat with kid gloves. most of the time they just nerf blog tier to make posters go away for good
good catch - that's an oversight. maybe we can treat lack of image as a downgrade from good -> weak for filtering
not really, there is now global options to sort by likes in most indices
the community page still lets you pick a language. if you're talking about the -30 days that UblogRank used to apply when looking at a post from another language, that was effectively just a filter. -30 day penalty posts would only begin to appear after roughly 80 paginator pages. |
@@ -79,6 +79,7 @@ GET /@/:username/tv controllers.User.tv(username: UserStr) | |||
GET /@/:username/perf/:perfKey controllers.User.perfStat(username: UserStr, perfKey: PerfKey) | |||
GET /@/:username/all controllers.User.gamesAll(username: UserStr, page: Int ?= 1) | |||
GET /@/:username/download controllers.User.download(username: UserStr) | |||
GET /@/:username/blog controllers.Ublog.index(username: UserStr, page: Int ?= 1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yikes. could we change /@/:username/:filtername to /@/:username/filter/:filtername to make routes less brittle or have external links committed us to the former for all of eternity at this point?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah we shouldn't break these URLs.
One thing we could do is /@/:username/$filter<all|me|rated|...>
if we value routes ordering enough to accept the duplication of https://github.com/lichess-org/lila/blob/master/modules/game/src/main/GameFilter.scala#L5-L5
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
or replace aggressive routes that can shadow more specific ones with a commented placeholder like # GET /*/:username/:filter - see end of file
, and paste the originals at the end.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
although i'm probably the only idiot who runs around copying and pasting blocks of our routes file without checking
about that untagged bit, that was kind of a "TODO". we should have a quality before listing or ingesting anything but we also want resilience to an extended together.ai outage. how about we add an "oh shit, allow untagged stuff in listings" button to my new favorite page in /dev/settings? if together.ai goes down for a period, we can toggle it and the system knows to just treat all the new stuff as good until the oh shit button is toggled off. we might want to move llm model from conf to there as well. not to make it easier to change, but so automod.mjs stays up to date with lila. |
I'd rather have it treat all the new stuff as bad. Not showcasing good stuff is sad, but showcasing bad stuff is worse. |
unreviewed stuff could be considered weak? it would allow a bare minimum of function during an extended outage. |
at = data.featuredUntil.isEmpty.option(nowInstant), | ||
until = data.featuredUntil.map(nowInstant.plusDays) | ||
) | ||
for _ <- colls.post.updateOrUnsetField($id(post.id), "featured", featured) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we could really use an abstraction like this that consolidates a list of options into respective $set or $unset documents, but it'd probably be an ugly hack given the type system and reactivemongo dsl.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes! setsAndUnsets is my new favorite function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i was thinking of Option[Any] (rather than BSONValue) but that would require introspection
I'm ready to merge. What are your recommendations for prod deploy? |
it was being shadowed by /@/:username/filterName
to make it clear it's an uncached, somewhat expensive operation
DatabaseException['Invalid $project :: caused by :: FieldPath field names may not start with '$'
1613366
to
5181c26
Compare
before i get to deployment steps, you'll want to thumbs up/down all the stuff i've changed.
you can mongosh localhost:37017 on snafu to give yourself admin and check out the carousel stuff
although this no longer uses the ublog_post.rank field and that code was deleted, all the ingredients that calculate rank remain untouched in the database. this means we can safely roll back to the old presentation & ranking code if mods threaten insurrection or some other insurmountable problem presents