Oooh. There's a question. How do you tackle control?
Right now we have chat commands. If the SE adapter is just going to be a thing that posts to chat rather than a part of the detection engine... what do we do?
Some commands become inapplicable
Some we could keep
Or we could invent some sort of integrated control system
Chat helpers are things like !!/test and !!/alive. Engine control is !!/watch or !!/reboot or !!/standby.
Chat helpers could be a part of the SE adapter, just interfacing with the engine as they do now.
Engine control... could, but then we have to build deeper access control into the engine and decide whether or not it can/should be part of every adapter
Seems like it'd be easier in some ways to do a rewrite, converting everything to a database, and at the same time write a control webapp that writes to that database.
I've got a one on one in an hour-ish, depending on how on time I plan on being. After that I'm going to work on some of these more detailed proposals. Right now I have something for each of the three sections in my image (Input, Analysis and Output), one for Infrastructure and one for Organization. Thoughts on what you'd like to see first? (Not infrastructure). If I do Organization, Can I get a quick summary of the options we've talked about? There have been a few and I want to include those
@Andy I think Input and Output are the most interesting technically to implement; maybe one of them? We all know how Smokey analysis works, but polymorphing IO to suit multiple platforms... less so.
@quartata You're still thinking too narrow here. Input might have more data than we do now. Input might have more methods than we do now. Output might not tell any rooms. Output might do other things. Output might not have privileged people. Etc, etc.
I don't have any implementation details in there right now.
At least I don't think I do.
I did mention it'd need to be able to handle input from multiple sources and output to multiple sources at the same time. Those sources could be SE, Medium, Bob'sDiscourse, Betty'sWordpress and Linus'sGitHub though. We don't want a deluge of posts on one to slow to processing of the others.
Two of those 5 instances are system wide things (SE/Medium) and will have a decent volume of traffic. The other three are small to medium things and will have a handful of posts per day.
Additionally, the first two are probably custom integrations that we run. The other three are plugins or bots (Github? not sure how that works right off hand) where it would just get the output of our middle step and then it implements the logic they want.
So, the work load for a post from entry to exist is going to very greatly.
More so when we add in logic that says "Bob'sDiscourse allows Pornhub links but Linus'sGithub does not"
The contents of deleted spam/rude/abusive questions
(like this one
on Stack Overflow – visible only for >= 10K users) is hidden behind an extra link:
However, in the mobile web view, the original full content is visible:
This can be observed with mobile browsers (in my case, Mobile Safari...
Possible business dynamic: Hiring folks to get issues fixed. Like "I really need this done, no time to do it myself, would pay a few bucks to get it done"
@Undo Hurting? Like, we'll go out and knee cap spammers that hit your site? Or something else. Because, if it's the first one, I'm calling dibs on the title of Chief Kneecapper.
Unrelated: Has anyone done any analysis on word length of the Markov spam we get? I half suspect there'll be patterns there, the spammers might be pretty lazy on setting that up.
E.g. if I'm working with Medium and really need more concurrency or something, I might bribe quartata to work on that. Then it's a simple 1099 for me, I know I'm getting competent work, and quartata gets time compensated.
We could do something like from blogspam import * vs from blogspam import specific_checks if we wanted more control, but in those situations we should probably just make a separate file
Internally I can do the work to make it so that regexes with the same names and same conditions e.g same max rep, score get grouped together into one for efficiency
So for stuff like max_rep and stuff I think instead it ought to be specific for a category of checks and not an individual check, which is how it is anyways usually
That means it would go into site-specific configuration
@Art I've opened a PR to fix a bug -- I accidentally made an item unreviewable if it was completed but all the reviews were skips, e.g. if you add a domain tag on a review others have skipped