Git Product home page Git Product logo

ifdb-suggestion-tracker's Issues

IFDB Top 100 slow; lists perform N queries for ratings

https://ifdb.tads.org/viewlist?id=k7rrytlz3wihmx2o takes more than 30 seconds to display anything at all.

If you set up the IFDB dev environment and navigate to http://localhost:8080/viewlist?id=k7rrytlz3wihmx2o you can reproduce the issue. If you add SQL logging by editing util.php line 13:

function mysql_query($query, $db) { error_log($query); return mysqli_query($db, $query); }

You'll see that most of the time is spent performing N queries, sequentially (not in parallel) like this:

select avgRating, numRatingsInAvg from gameRatingsSandbox0 where gameid='aearuuxv83plclpl'

Add "remarks from the author"

If you're the author of a game, there's nowhere to put your general remarks about your game, e.g. "This game was fun to write because …"

Some authors have accidentally(?) reviewed their own game in order to leave these remarks, which is clearly not the right way to go about this.

Categories

This sort of covers #35, #36 and #38 in a broader range.

I want to suggest to replace the tag system by a category system as used in Wikipedia. Which is, in a nutshell, a tree diagram of tags, so a two-dimensional tag system, if so you want. There's unspecific higher categories and specific lower categories. Examples:

  • game by authoring system
    • Inform game
      • Inform 6 game
      • Inform 7 game
    • TADS game
    • Twine game
  • game by setting
    • fantasy game
    • sci-fi game
    • slice of life game
  • game by genre
    • comedy game
    • horror game
    • mystery game
  • game by year
    • 2020 game
    • 2019 game
  • game by additional material
    • source code available
    • cover art
      etc etc etc

Advantages:

  • easy navigation through bulks of games to find similar games
  • enables automated analysis of game stock by combining categories ("How many horror games from the 1990's do we have that were written by women?")
  • combining categories enables the reader to find similar games on a very detailed level
  • prevents the total chaos that the current tag system is
  • easy to use through drop-down menus and/or auto completion

An example from Wikipedia: 1893 is in the category "2000s interactive fiction" which is in the category "Interactive fiction by decade" which is in the category "Interactive fiction". It is also in the category "Video games set in Chicago" which is in the category "Video games set in the United States by city" which is in the category "Video games set in the United States" etc etc etc - Very easy to navigate, and a tremendous step forward for a) the reader and b) analysis.

Banning users doesn't log them out

Set up a local developer environment. In an incognito window, go to http://localhost:8080/newuser and register a new user account. Check your Docker logs for the activation link and click it to activate the user, then, back in your incognito window, sign in as your activated user.

Now, in your non-incognito window, sign in as ifdbadmin, navigate to http://localhost:8080/adminops?finduser and search for the user you just created. Ban/delete/close the user account. (It doesn't matter which one, none of them work.)

Back in the incognito window, click on a game and attempt to leave a review.

Expected: Once your account is banned/deleted/closed, you should be logged out, and unable to leave a review

Actual: You're still logged in, and you can still leave a review. You can keep using your banned account and post as much as you like publish reviews and post ratings until your session expires 😱

Add description / image metadata to game details pages

When you copy and paste a game link into the intfiction.org forum, it tries to generate a preview card for it, but IFDB is missing the metadata Discourse wants in order to make that card, so card generation fails. This sort of data is used on other sites as well, including Twitter, Facebook, etc.

We should put that metadata in so the cards will work, e.g. adding OpenGraph elements to the head.

Prevent IFDB from recommending certain games/authors

In cases where authors have violated our code of conduct, we could delete the author's game listings, but instead of that, it would be better to restrict linking to their listings.

I'm imagining:

  • Put a banner on the game saying that links to the game were restricted
  • Never show these games on the home page (New on IFDB, IFDB Recommends…)
  • Never show these games in "more like this" recommendations
  • Hide these games in search results by default, but add a banner saying "some search results were removed, click here to see them all"
  • Hide these games in IFDB Lists as well (including the IFDB Top 100), again including a banner "some entries were removed, click here to see them all"

Add clickable search filters

Right now, to search for games that are rated at least 3 stars, you need to type "rating:3-" into the search bar (and in order to figure out that that's what you're supposed to type, you have to read the search help.) I'm not suggesting removing the ability to search that way, but it'd be nice to add some clickable, more intuitive search options where they make sense.

It would be nice to be able to use more than one filter in a given search. So, for example, you could search for historical games that are rated at least 3 stars, without having to look at the search help.

Edit: To see an example of the type of thing I'm talking about, try doing a search for "shelf" at https://www.homedepot.com. On the left side of the search results screen, there's a box where you can click 1-5 stars to show what minimum star rating you want, checkboxes you can click to choose different options, and fields where you can type minimum and maximum number values. As you choose options, the search results narrow.

Cover art should be optionally displayable on the home page

Cover art is much more an integral part of interactive fiction now than it was when IFDB was created. There should be a way to see full cover art for games mentioned on the main page.

Simultaneously, there should be a way not to see cover art. Many IFDB users are blind, and others have slow or expensive internet connections.

Following/Subscribing

It would be cool if users could follow stuff and get updates about them in their IFDB inbox.

  • Follow a game and get notified about reviews/comments/updates on it
  • Follow an author and get notified about new games (and reviews/comments/updates?)
  • Follow a reviewer and get notified about their new reviews (and comments? and updates??)
  • Follow a tag
  • Construct a saved search and get notified when there are new games that match it

Moderators need a way to hide/delete stuff without deleting an entire user

I've been playing around with the moderation tools in my local dev environment, and, even when I'm logged in as ifdbadmin, I see no way to delete or hide any individual thing (a game listing, review, or "comment" on a review) without deleting/hiding the entire user who posted it and everything they've ever posted.

I guess this makes sense, because MJR's primary focus was around spam management, not around content moderation, but if I were tasked with moderating IFDB, I'd insist on the ability to delete a comment without deleting the author and all of that author's comments.

Click on a genre to search by genre

Many games have a genre field, but mysteriously, you can't click that field to see all games of that genre. There could also be a specific search for genres.

Deadflag

It might be that the following is already being dealt with, or that things will be solved in a different way. That's fine, I may have missed the discussion. This tackles #22, #25 and #41.

I would suggest to add two "deadflag" variables to the database, connected to an author, that are 0 by default, and if set to 1 define that (flag 1) the reviews of the respective author are not to be displayed and counted and that (flag 2) the games of the author are not to be displayed and counted into lists and analysis. That's how I as a complete layman would make the database "fit" for when we've decided on how to deal with malicious reviews and/or authors. May be a stupid idea, in that case just delete this suggestion.

IFDB's home page "IFDB Recommends" shouldn't randomize

The IFDB home page has an "IFDB Recommends" section wayyy down at the bottom.

These are a few randomly-selected games with high average member ratings.

IMO, this section shouldn't randomize. Instead, it should just show the best-ranked games on IFDB, as a leaderboard.

I see it as similar to the "Reviewer Trophy Room" section on the home page, which shows the top 5 reviewers on IFDB. It wouldn't make sense to show five random reviewers. In this setting, we want the best.

Remove review downvotes

Edit: As review flagging is a separate issue, this issue is about removing downvotes on reviews, a course of action only made possible when we've already added flags for low-quality reviews.

Right now, you can vote for reviews as helpful or unhelpful. The total number of people who voted is displayed, with the number of positive votes indicated (such as 0 out of 12).

Positive review upvotes are helpful, particularly for very popular games, which are likely to be the ones most viewed. For someone looking at Photopia or 9:05, it's helpful to see the highest-rated review.

Negative review upvotes are frequently abused. I have some self-interest here, as someone's been downvoting each of my reviews for about two months, but others have experienced this too (for instance, someone was downvoting all CYS reviews). Outside of such trolling, they mainly are used to express disapproval with troll reviews.

By removing negative downvotes, bad reviews will still sink to the bottom as they will receive few upvotes. By replacing it with review flagging (an flag that is only seen by moderators), troll reviews can be removed.

Error when trying to join a club

Fatal error: Uncaught ArgumentCountError: Too few arguments to function mysql_query(),
1 passed in /homepages/28/d173029870/htdocs/ifdb/club on line 301 and exactly 2 expected 
in /homepages/28/d173029870/htdocs/ifdb/util.php:13 Stack trace: #0 /homepages/28/d173029870/htdocs/ifdb/club(301): 
mysql_query('select publicli...') #1 {main} thrown in /homepages/28/d173029870/htdocs/ifdb/util.php on line 13

I can look into it after the code published.

Don't show irrelevant options when writing "From the Author" comments

When a user goes to write a review for a game, the review page shows several steps. Step 6 gives an option to write a "From the Author" review. But when this option is chosen, some of the other items on the page no longer make sense, and should probably not be available:

  • "1. Rate this game on a scale of 1 to 5 stars"
  • "2. Give your review a title" (I am guessing this title doesn't get used, because there is a "From the Author" title instead, but I haven't confirmed it)
  • "Omit my rating from the game's average" (one of the checkboxes in step 7)

It might also make sense to put the "From the Author" option earlier on, so the person doesn't waste time filling in irrelevant options.

Site news should show up on the home page

Set up a dev environment and login as ifdbadmin. Go to http://localhost:8080/adminops?addnews and add a Site News item. You'll be able to see your news post on http://localhost:8080/news (which you can access by clicking the "Site News" link from the home page).

Actual: The site news item isn't directly visible from the home page at all. From the home page, you have to click the "Site News" link in the upper right to see any news. https://ifdb.tads.org/news

Expected: Site news should show up in the "New on IFDB" section (or perhaps the "Welcome to IFDB" section, if it's new within the last month?)

Multiform search

Searching in online search engines delivers results in multiple forms: images, music, videos, text.
This is helpful because although form-specific searches are more specific, it's hard to know what specific form is best to use for a given search.
IFDB's main search should return results for multiple specific forms e.g. games, tags, lists, polls...

IFDB's logged-out home page should deprioritize updates, and instead prioritize good games

When you visit the IFDB home page for the first time (e.g. in an incognito/private window), the first/primary section of the page is "New on IFDB." This section doesn't even necessarily show new games on IFDB, (new "listings") but also new reviews of old games.

If this is your first time at IFDB, there's a good chance that you're new to IF. We almost certainly don't want to direct IF newbies to the newest games/listings/reviews; instead we want to direct them to the best games we have to offer.

Concretely, I'm imagining that IFDB home page should be:

  • IFDB Top Games: It should show the top 10 games sorted by reviews. (But not just sorted by average; see issues #16 and #17.)
  • "New to IF?" and there it should show the top 10 games with the "recommended for beginners" tag; we'd ensure that each of them have enabled their "Play Online" button
  • New on IFDB
  • Vote!

Perhaps logged-in users could click a button to collapse the "Top Games" / "New to IF" section so they can navigate to the news/votes more quickly…?

User filter lists

These lists can get long. It's hard to find things without any sorting.

There should be separate filter lists by status: promoted, demoted, plonked.

Each list should be sorted e.g. by username.

This way users can easily manage their groups, and easily find individuals.

Split "author" into a table of credits

There's no way to say something like:

  • Art by X
  • Text by Y
  • Programming by Z
  • Adapted by Q

(Initially I'd written that there's no way to have multiple authors, but it turns out you can, as long as they all have IFDB profiles. If you just type "X and Y" they show up as a single string.)

Banning users deletes reviews, should hide them

In a dev environment, login as ifdbadmin, go to the admin console at http://localhost:8080/adminops and search for a user with reviews. Use the "Banned" radio button to ban them and click "Apply." Now, have a change of heart and set them to "Active" and click "Apply." Click through to their user profile to see their reviews.

Actual: When a user gets banned, all of their reviews are deleted in the process. There's no convenient way to restore their reviews.
Expected: I think it makes sense to delete reviews when you use the "delete account" button (which is clearly labeled), but when you use the "Account status" switcher, it should just set the account status to "B" without deleting anything. (It is separately possible to hide a user's reviews without deleting them using the "Sandbox: 1 (Trolls)" feature, which is effectively a shadowban if their account status is still "active.")

So, specifically, I think the buttons at the top should say:

  • Ban account: block email address and hide user submissions
  • Delete account: delete email address and delete user submissions (user may re-register)

The account switcher should just set the account status without deleting anything, even if you set the status to "closed."

As a temporary workaround, I think we shouldn't use the "Account Status: Banned" radio button, but should instead set the user to "Account Status: Pending Review, Sandbox: 1 (Trolls)"

Tag suggestions

On some websites when you start typing tags, a popup appears suggesting known tags. This feature makes it easy to discover (how to spell) tags if you are a new user or have difficulties remembering popular tags. IFDB would be easier to use with tag suggestions.

Use UTF-8

IFDB stores all of its data in a MySQL latin1 database and jumps through a bunch of hoops to prevent itself from getting accidentally transmogrified into UTF-8.

When I was porting from MySQL 5 to MariaDB 10, I accidentally restored the database as UTF-8, and so I began the process of trying to adopt UTF-8. I found it didn't seem to be that much work to just use UTF-8. It was more a matter of deleting code than adding it, and making sure nothing got missed.

It would need a pretty serious test plan to make sure nothing got missed, but it seems doable to me.

"Related Games" doesn't work

Each time I refresh the "Related Games" section of Hadean Lands, it shows a different set of games; none of them are even remotely related to Hadean Lands. https://ifdb.tads.org/viewgame?id=u58d0mlbfwcorfi

For example, right now it says HL is related to Witch’s Girl https://ifdb.tads.org/viewgame?id=zp26o8weiphxjlby a delightful mini Twine game with easy puzzles and kid-friendly graphics.

It would be cool if there were an algorithm that actually did find games related to Hadean Lands. (But, how…?) Barring that, iInstead of an algorithm, I think "Related Games" should be a section where users can manually suggest related games, perhaps allowing upvotes/downvotes regarding whether the game is related.

Barring that, it could just show "More games by this author"

Sort by "Highest Ratings" shouldn't just sort by average rating

If you Browse by "Highest Rated First," the first page will be full of games with perfect 5-star averages. These are typically games with a very small number of ratings, often just one rating. https://ifdb.tads.org/search?sortby=ratu&browse=1

To see the number of ratings, you can search for #ratings:1- and sort by "Highest Rated First," which typically shows a subtly different random set of games, but it makes it all the more obvious that these are games with just one or two 5-star ratings.
https://ifdb.tads.org/search?sortby=ratu&searchfor=%23ratings%3A1-

Sorting by average is a notorious bad practice; there are a number of alternative approaches. This article by Evan Miller discusses the problem https://www.evanmiller.org/how-not-to-sort-by-average-rating.html and includes a proposal for binary thumbs-up/thumbs-down "positive" and "negative" votes. He also has an article (more relevant to our situation) about sorting by star rating. https://www.evanmiller.org/ranking-items-with-star-ratings.html

I've posted a version of Evan Miller's algorithm in SQL. https://gist.github.com/dfabulich/fc6b13a8bffc5518c4731347de642749

IFDB should use that algorithm when sorting by rating.

Search for tags

A search which lists matching tags.

Although you can currently read through the list of IFDB's public tags, the list is rather long, on multiple pages, and it's sometimes more convenient to search directly if you have a specific tag in mind but e.g. don't know precisely how it's spelt.

It's also possible to construct a custom search using e.g. tag:furry in the search box - but this is nonobvious to new users.

The search should return the same results as for a custom tag:x search e.g. it should return multiple tags if tag:x would.

Company

I suggest to add a variable "Company" to the database, for commercial games. Infocom, Zenobi, Failbetter Games, you name it.

Advanced search offers sort by "relevance" even when no search terms provided

You can do advanced searches on IFDB. https://ifdb.tads.org/search

For example, you can search for published:2020 #ratings:3- to search for games published in 2020 with at least three ratings. https://ifdb.tads.org/search?searchfor=published%3A2020+%23ratings%3A3-

But when you do that, the default sort order is to sort by "Relevance." Relevance makes some sense when you type in some text in the search bar; you're finding games that are as close as possible to what you searched for. But when doing an advanced search like this, there's no text to be "relevant" to.

When there are no search terms, it should sort by "Highest Rated" or something. (But it shouldn't just sort by average rating; see issue #16.)

allow anyone to remove tags

Currently anybody can add tags to a game, but only the person who added a specific tag can remove that tag.
This creates situations where games have been tagged wrongly (e.g. "incomplete") - or occasionally downright abusively - and it is impossible for anyone else to remove the tag. You can't even message the person who made the tag and ask them to remove it, because you can't see who the tagger was.
I see no reason it shouldn't be possible for anyone to add and remove tags, just as anyone can edit a game's description.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.