Skip to main content
10 of 10
Add bookmarklet
Makyen
  • 1.7k
  • 1
  • 12
  • 20

Roomba Forecaster - When will the question be Roomba'ed? If it won't, why?

Roomba Forecaster ( install ) ( GitHub )

Roomba Forecaster is a user-script that shows the question's status with respect to being deleted by Roomba.

This script adds a "roomba" status line after "viewed"/"active", in the question stats line just under the question title on question pages, which shows:

  • If Roomba will delete the question
  • How long until the question is deleted
  • Why the question won't be deleted (by default, displayed in a tooltip)
  • If you down-voting on the question or answer(s) will qualify the question for Roomba

You can click on the "roomba" status line to open an options dialog to change display settings.

Where it is on the page relative to the question

enter image description here

Original location, which can be obtained with a userscript which restores the old layout with question stats in the sidebar

The "roomba" status line (old location)

Roomba Forecaster

Where it is on the page relative to the question (old location)

Roomba Forecaster location on the page

Why it won't Roomba: tooltip (default) or always visible (optional)

The reasons the question does not qualify for the three different Roomba tasks is included in a table. The table is, by default, displayed in a tooltip when the mouse hovers over the "roomba" status line:
tooltip

Alternately, the table can be always visible by selecting the appropriate display option. While this is still available, it doesn't look nearly as reasonable with the stats in a line underneath the question title (the new/current location).

Option to show if your down-vote(s) will result in the question being Roomb'ed (not enabled by default)

There is an option to display if you down-voting the question and/or answer(s) will qualify the question to be Roomba'ed.

You should not downvote just to cause a question to be deleted

There is considerable controversy with respect to downvotes to a question or answer(s) resulting in the question being deleted by the Roomba.

If the post content is poor and you would have downvoted that post anyway, then just downvoting and not close-voting or delete-voting, because it's likely that the Roomba will delete it in a couple/few days, is a valid choice for how you use the limited resources available to you for moderation (i.e. how you allocate the use of your up/down-votes, close-votes/flags, and delete-votes). However, downvoting either the question or answer(s) just to cause the question to be deleted by the Roomba isn't permitted. See: Clean-up by downvoting? A ridiculous user experience.

What it looks like

Question
downvote question will roomba

Answer(s)
downvote answer will roomba

Note: The 30 day Roomba task, RemoveDeadQuestions, if there are any downvotes on the question, then it requires that there be a downvote on the question which is greater than 2 days old at the time the question is being considered for deletion. See answer to: Lost 5 questions following a serial downvote and the comments on that answer for more details.

Number of days to deletion

If the question will be deleted by Roomba, then the number of days until it is deleted is displayed, along with if it is a daily, or weekly Roomba task.

One Roomba task runs daily:
daily roomba

Two Roomba tasks run weekly:1
weekly roomba

Options

Clicking on the "roomba" status line will open an options dialog where you can select what is displayed. The following GIF shows how the display looks with the various different options:

Roomba Forecaster options

Clicking on the Close button will keep the selected options for use on this page only. Save will store the options for use on all pages. Cancel abandons any changes you have made to the options.

Short descriptions in the status line (optional)

The optional short descriptions in the "roomba" status line are cryptic:
short reasons

The best way to learn what they mean is to match them up against what is displayed in the larger table (either as a tooltip, or always displayed).
short reasons

Getting the code

Install from GitHub

It's a userscript. Use a userscript manager.

This is a userscript, so you will want/need Tampermonkey (closed source, most widely available), Violentmonkey (open source), or other userscript manager.

I recommend against Greasemonkey 4.X, but Roomba Forecaster is functional

Unfortunately, I can no longer recommend Greasemonkey (open source; Firefox only). I try to make sure that my scripts are compatible with Greasemonkey 4.X (GM4), but it lacks features which some of my scripts use, but, for my scripts, I try to make it that their lack just degrades performance. The change to Greasemonkey 4.X was required by Firefox moving to only WebExtensions based add-ons. However, there were significant changes made to Greasemonkey 4.X which broke backward compatibility (and there's still a significant lack of functionality). There is no intent to fix backward compatibility. As a result, using Greasemonkey 4.X will result in ongoing issues with older scripts which have not been updated to be used with it, or with scripts which don't consider the differences. Thus, while I used to strongly recommend Greasemonkey 3.X due to a significantly better security environment (gone in GM4), I recommend against using Greasemonkey 4.X vs. the alternatives. To give an idea of the scope of the incompatibility issues, at least 30 of the scripts which I use for Stack Overflow/Stack Exchange do not function correctly under Greasemonkey 4.X.

Using a bookmarklet (e.g., on mobile browsers)

javascript:void(function(){
    if (typeof window.GM === 'undefined') {
        window.GM = {};
    }
    GM.setValue = async (key, value) => localStorage[`makyen-RoombaForecaster-bookmarklet-${key}`] = value;
    GM.getValue = async (key, defaultValue) => {
        const value = localStorage[`makyen-RoombaForecaster-bookmarklet-${key}`];
        return typeof value === 'undefined' ? defaultValue : value;
    };
    GM.setValue('config', '{"scrapePage":false,"showShortRoombaStatus":true, "useTooltip":true, "showShortReasons":false, "showIfDownvoteWillRoomba":false, "alwaysShowRoombaTable":false, "disabledScraping201910OriginalScrapePage":true, "disabledScraping201910":true, "disabledShowIfDownvoteWillRoomba202107":true}').then(() => {
        $.getScript('https://cdn.jsdelivr.net/gh/makyen/extension-and-userscript-utilities@10254c2cba80cbf5f34dc69cd87ba21caa9eb911/executeInPage.js').then(() => {
            $.getScript('https://cdn.jsdelivr.net/gh/makyen/StackExchange-userscripts/Roomba-Forecaster/RoombaForecaster.user.js');
        });
    });
})();

The source code is on GitHub

Please file any bugs/feature requests as issues there.

Contact

You can contact me here through Stack Exchange comments or in SO/SE chat.

If there are problems with, or feature requests for, this userscript, please file an issue on GitHub. While GitHub issues are preferred for bugs/feature requests, making sure I get the information (e.g. comments/chat) is sufficient.

Browsers

Roomba Forecaster has been tested on Chrome, Firefox, Firefox ESR, Firefox for Android, Opera, and Edge. It should also be compatible with other browsers.

Compatibility Notes

The tooltip is styled to look like a native tooltip in the browsers which were tested: Chrome, Firefox, Firefox ESR, Firefox for Android, Opera, and Edge. Thus, the tooltip will look slightly different in in each browser. The images above are from Chrome.

License

Roomba Forecaster's code is released under the MIT License. Earlier versions of Roomba Forecaster's code were released under CC BY-SA 4.0, the international version of the license used for all contributions to Stack Exchange.


This is a fork of RoombaForecast.

1. Actually, four Roomba tasks run weekly. The other two affect only questions which have been migrated to another Stack Exchange site (leaving a migration stub) or migrated from another site and rejected. While the script does detect these, the Stack Exchange system automatically redirects the page to the site where the question currently exists. Thus, unless something changes in how Stack Exchange displays such questions, you add the ?noredirect=1 parameter to the URL, or are a moderator on the site where the migration stub exists, it's unlikely you will see one. OTOH, you could, of course, go searching for rejected migrations which have not yet been deleted.

Note that there are some old, migrated questions that have been closed on the destination site, which should have triggered their rejection. While these fit the documented criteria for Roomba deletion, they do not get deleted. If the question has not been deleted after twice being eligible for deletion when Roomba ran, then Roomba Forecaster assumes that the question is not actually eligible to be Roomba'd. If the documentation is updated to indicate the actual criteria, then the script will be updated.

Makyen
  • 1.7k
  • 1
  • 12
  • 20