This page has archives. Sections older than 30 days may be auto-archived by ClueBot III if there are more than 5.
Feedback request service
I was wondering what was happening with RFC notifications and I noted the status of the bot running the Feedback request service has been killed. Does anyone know if there is going to be some replacement for this? TarnishedPathtalk13:56, 21 August 2024 (UTC)[reply]
You are correct that the Yapperbot's Feedback Request Service is no longer enabled. Last I checked a couple of months ago, it was still active and I assumed it was still running. I will work on getting it restarted and/or a new bot to do the Feedback Request Service notification tasks. Thanks for putting this notice here and drawing my attention to the problem. --David Tornheim (talk) 06:35, 22 August 2024 (UTC)[reply]
@BDavis (WMF): Thanks. I bookmarked that page too, and I put warnings on the two IPs pages for vandalism.[1][2] I will keep an eye to make sure FRS is still enabled and properly running until we finish up adoption or transferring the bot. I have been somewhat concerned that some of the internal data that Yapperbot uses is stored on Wikipedia and is vulnerable to these attacks. I don't think the author Naypta was sufficiently familiar with how Wikipedia works to understand the vulnerability. The new page protection will help, but there are some other internal data places that are still vulnerable to similar attacks by new IPs. I can give you a list of the ones I am aware of as I start spending time reviewing the code again.
Please note that the second IP messed with the kill switch to the "Uncurrenter" Yapperbot process too, but reverted the change.[3] All the kills switches should minimally be protected to either autoconfirmed users and/or more established user or possibly just to admins. --David Tornheim (talk) 10:18, 23 August 2024 (UTC)[reply]
Pppery That's good. I believe I saw one one or more of those JSON pages saying, "Do not edit this page". I thought that meant editors were capable of it, and he hoped the warning was sufficient to deter them. Glad that is not the case. I'll still keep an eye out for any other similar vulnerabilities as re-familiarize myself with the code. I haven't looked at the code for "kill" recently, so I might look at that first. If there is anything you would like me to focus on or investigate, please let me know. --David Tornheim (talk) 20:01, 23 August 2024 (UTC)[reply]
Bug report when the bot removes a Current template
It looks like the last significantly discussed instance of the FRS service stopping whilst the bot was otherwise running normally (briefly mentioned above) was solved in this comment & its reply on David Tornheim's talkpage in August, which I'll copy below for ease of access [minus @'s and sigs]:
Based on a quick look at the code (and some mocking up using python) [4] should have been the culprit. — User:Sohom Datta
Thanks for fixing it! Based on the error, I suspected it was a problem with the online data of a recent GA nomination. I was working through extractGANom() of matchers.go and the loop that called it from main.go to see if the data it was parsing didn't match its requirement. I'm impressed you figured it out so quickly. I'll post soon about my thoughts on adopting Yapperbot-FRS vs. starting a separate bot for the FRS piece. — User:David Tornheim
Additionally, I noticed a set of technical debugging questions from David to @Sohom Datta, at User talk:Yapperbot/FRS/Bugs. [IANADev but…] it might be helpful to get answers to those questions, if it'll help more people to debug this in the future?
I ended up just running the code locally this time, it seems the runfile seems to be stuck on a date range that is causing mediawiki to spit back Categories alongside Talk page which caused the bot to exit and throw a fit. I asked @Taavi on discord ([5] for folks on Discord) to remove the run-file and I'll try to see if that fixes it (it should per my tests). Sohom (talk) 13:11, 12 June 2025 (UTC)[reply]
To respond to the original questions, (which I completely missed, sorry on that) I don't remember what the python code was, but the idea would have been making a request to the same APIs as the Go code was making and loop through and dump the content and regex outputs for all the entries inside Category:Good article nominees. (Which was what helped me debug the issue). With respect to a list of routines, I don't think there is a good way to do that in Golang, I typically start at the main function and then jump around inside the code following functions as they call each other to try and understand why or how the error happened. I also don't use a debugger of any kind preferring to do Printf debugging and just commenting out/disabling parts of the code to make sure I don't actually make any edits (in this case, I also used a botpassword with no edit capabilities to test the program as a additional layer of protection) Sohom (talk) 13:54, 12 June 2025 (UTC)[reply]
@Sohom Datta: Thanks for responding to my questions. I'm amazed there is no decent debugger. I am pretty used to the printf method too and was doing some of that with my copy of the code. Surprising there is no decent program to provide a simple index of where all the routines are, so we don't have to go hunting for them in all over the code. I even made an Access database to help keep track of the routines, but not much in it.
I typically start at the main function and then jump around inside the code following functions as they call each other to try and understand why or how the error happened. Me too. It's usually easier with a debugger, though. And I hate cluttering the code with all those printf statements! The original author didn't seem to have any. --David Tornheim (talk) 04:06, 11 July 2025 (UTC)[reply]
Surprising there is no decent program to provide a simple index of where all the routines are. VS Code (open source IDE that supports every language via plugins) has an outline panel that shows all of a class's methods / file's functions. You can also click on a function/method and press F12 to jump to its definition. You can also do an entire repo search in VS Code's search panel.
I'm amazed there is no decent debugger. With some configuration, debuggers can be configured in VS Code. Then debugging can happen by setting some breakpoints, then hitting the play button in the "Run and Debug" panel. –Novem Linguae (talk) 04:23, 11 July 2025 (UTC)[reply]
@Pppery, could you add Yapperbot's FRS task to that list? The signal-to-noise ratio feels pretty high when you only care about one bot, but maybe it would be better than nothing. WhatamIdoing (talk) 01:45, 13 June 2025 (UTC)[reply]
Done. And the BAM syntax also supports posting on a talk page when the task goes inactive, which I also set up. That was the true answer I meant to give, not watchlisting. * Pppery *it has begun...01:47, 13 June 2025 (UTC)[reply]
Yapperbot's task "FRS" failed to run per the configuration specified at Wikipedia:Bot activity monitor/Configurations. Detected only 0 edits in the last 1 day, whereas at least 1 was expected. If/when the issue is fixed, please change the section title (e.g. append " - Fixed") or remove this section completely. When that is done, this notice will be reposted if the bot task is still broken or is re-broken. If your bot is behaving as expected, then you may want to modify the task configuration instead. Or to unsubscribe from bot failure notifications, remove the |notify= parameter from the {{/task}} template. Thanks! – SDZeroBot (talk) 17:20, 17 June 2025 (UTC)[reply]
Pppery, do you think this is actually due to failure, or because we didn't happen to have any RFCs in the specific time range? We get an average of two RFCs per day, but we could have a 24-hour period with no RFCs happening. WhatamIdoing (talk) 22:54, 17 June 2025 (UTC)[reply]
Hmm, this looks like the same bug again. @Taavi, could you delete the same file (/data/project/yapperbot/frs/CategoryGood-article-nominees.frsrunfile) again? Sohom (talk) 23:40, 17 June 2025 (UTC)[reply]
Also, given that this seems to be a re-occurring issue (that will need actual code changes to fix), would y'all mind if I just took over this task using User:SodiumBot ? Sohom (talk) 23:41, 17 June 2025 (UTC)[reply]
I had a talk with a few folks on IRC and it seems like taking over the Yapperbot account is going to be messy, I'll go down the copy binaries and file a WP:BRFA route Sohom (talk) 10:29, 18 June 2025 (UTC)[reply]
@Sohom Datta. Thanks for taking over Yapperbot. As you probably know, for some time I had intended to do it at the urging of Novem Linguae, but all the various platforms I was having to learn has been overwhelming. I am used to the old days of C programming, where you just had the one piece of code and powerful subroutines. Things have changed so much since then with so much to learn. Unfortunately learning so much about coding today doesn't interest me as it did when I was younger and had a lifetime of use for what I learned, and back when I loved to spend endless hours coding in what was then the most popular language. Now it just feels tedious and like work.
If I were going to spend a significant amount of time coding for Wikipedia or elsewhere, it would be worth it; however, this bot is really the only code that grabs my attention. So, it's probably better that someone younger like you who knows and/or has used all the platforms--and most importantly knows Go--take over the bot.
If you would like any help trying to understand the code, I've spent quite a bit of time reviewing the various routines to get the big picture of how the various pieces work. Also, I have had recommendations for fixing part of its implementation way back when the code was first being worked on. I believe the selection routines Yapperbot uses to choose who and when to notify users is not properly random, being for example dependent on what day of the month RfC goes out. I also believe it under-notifies by picking a random number of users to notify (with a limited range) rather than seeking to notify the maximum number of users who do want to be notified.
Again, sorry I was not here to jump on this when it occurred. I was on vacation, haven't been doing much Wikipedia lately, and finally saw this. --David Tornheim (talk) 03:48, 11 July 2025 (UTC)[reply]
I think nowadays software engineering requires a lot of breadth of knowledge. The dev has to glue together a bunch of different technologies, knowing a little bit of everything. For example, for web development even when I was a kid, I had to learn 5 languages: PHP for the backend, SQL for database, HTML/JS/CSS for the front end. Then anything even a little complicated is going to need git for version control, VS Code for IDE, a framework library, various automated test suites, a bug tracker website such as GitHub Issues, etc. And those all have their own quirks and things to learn.
It might not have been C, but the idea of just needing to know one language was generally true for most software. You could spend a decade writing only in COBOL, for example. If you supported more than one piece of software, then you might need to know a handful (COBOL for this, Fortran for that...) and you'd probably need to know one operating system/other hardware-specific systems (e.g., IBM's JCL), but you didn't need to know five different languages to write one thing. WhatamIdoing (talk) 06:05, 11 July 2025 (UTC)[reply]
Although I was not a software engineer--I was a VLSICPU design engineer, who designed with simulators like Verilog (VHDL), structural models (RTL), gate models, and SPICE--I agree with WhatamIdoing that a lot of programming in the 1980s and early 1990s (before HTML took off and the Internet was ubiquitous) could indeed be done on a single system O/S (e.g. VAX, IBM, Unix, etc.) and that you could basically stick to one or a few languages. And before that, like WhatamIdoing said, COBOL, FORTRAN and PL/I were common. And, of course, if you really wanted fast code, you'd learn assembly. Some machines like my father used required you to program in binary with on-off buttons! (e.g. HEWLETT-PACKARD 5451B Fourier Analyzer) After programming an early HP calculator like the [HP29C], I learned my first language HPL on [this device] with one line of display. Then I moved on to a number of high level languages (BASIC, FORTRAN, Pascal, C, LISP/PROLOG) and some assembly languages (Z-80, 8085, 8086, VAX and MIPS assembly). C++ and OOP was the rage when I started losing interest in the latest and greatest software advances, but I did learn HTML (some PhP), Perl, Python, and love to make Access Databases. And now some Go. I can't deny I like Wiki source code. ;) --David Tornheim (talk) 08:54, 11 July 2025 (UTC)[reply]
Thanks for those details. Very interesting.
I think as time goes on, lower level languages are being dropped in favor of higher level languages. I think this makes sense too. Now that fast and memory-rich computers are cheap and plentiful, hardware and performance are no longer the bottleneck. Now dev time is the thing to optimize, and the way one optimizes dev time is to write really readable code. Readable code is easier to maintain. And in general higher level languages have easier-to-read code than lower level languages.
I think assembly language is pretty much gone (I think you can do everything in C that you can do in assembly? And for the odd thing you can't easily do in C, like an interrupt, you can use the asm() function. And modern C/C++ compilers can micro-optimize very well.) And I think languages without garbage collection for their memory (such as C and C++) are also avoided except for the most performance-intensive applications, such as big, popular software suites. If one looks at the tags list on Stack Overflow, which sorts by popularity, you have to go all the way down to #9 to find a lower level language such as C++.
Not that I am speaking ill of assembly. I watched a super interesting series on YouTube about restoring an Apollo spacecraft CPU. All the code for the Apollo missions was written in assembly. The CPU was as big as a modern day computer tower, and contained a latticework of wires instead of a silicon wafer.
@Novem Linguae: Glad it interests you. People are always amazed at what we had to put up with, as we always were with our predecessors who had slower computers with less memory. As a kid, I used to write programs for my TRS-80 (Model I) in BASIC with no spaces, no comments, variables with the minimum number of characters (1 or 2), and try to use all 256 bytes on every line--if I could. Why? When you only have 16K, every byte counts! BASIC was too slow and bulky to write an interactive video game like Space Invaders, so I learned assembly. Although I got the base to move back and forth with lightning speed, debugging assembly without a debugger (or print facilities), and storing and loading each version from cassette tape was unmanageable. More important, I wanted to know how the computer worked on the lowest level—preparing me for my future career.
Honestly, I think historically few people have programmed assembly compared to higher level languages--even in the 1970s. If you aren’t programming a low level hardware controller, I believe people almost always prefer higher level compilers that create the assembly. Unix was written in C. That says a lot. I believe quite a few other O/S were too, like AmigaDOS (partially). But DOS, one of the worst O/S’s ever created IMHO was written in assembly, which is probably why it is so bad. ;)
My sense, you only use assembly when the maximum speed or minimal use of certain resources is absolutely essential, like with firmware or writing a compiler (as you said). That said, I believe there will always be aspects of computing and in hardware where that is the case--as long as we are using Von Neumann architecture.
I believe we would have used higher level languages in 1980s--if they existed (or were not so bulky, like LISP). C was great because you could do both the higher level coding like PASCAL -and- low level like demanding an entity be put in a register and working with pointers, linked lists, and intricately optimized data structures, etc. I don't exactly miss the days of having to write all the support code associated with complex data structures, linked lists, and trees and tree pruning that are so much better handled with a database. --David Tornheim (talk) 10:11, 21 July 2025 (UTC)[reply]
@David Tornheim Back on topic, I did fix the random-ness bug since Golang has since removed the seeding functionality (it is still psuedo-random). I'll take a look at the other bug!
Back offtopic, my mileage with Golang has been much better than languages like Rust, even though they are still much higher level than something like C (I've done a fair bit of modern C/C++ work IRL) but yeah if you are interested in the subroutine style of programming I can understand why it might feel overwhelming (as you mentioned the meta has moved a lot over the years). Sohom (talk) 12:12, 11 July 2025 (UTC)[reply]
Yapperbot's task "FRS" failed to run per the configuration specified at Wikipedia:Bot activity monitor/Configurations. Detected only 0 edits in the last 1 day, whereas at least 1 was expected. If/when the issue is fixed, please change the section title (e.g. append " - Fixed") or remove this section completely. When that is done, this notice will be reposted if the bot task is still broken or is re-broken. If your bot is behaving as expected, then you may want to modify the task configuration instead. Or to unsubscribe from bot failure notifications, remove the |notify= parameter from the {{/task}} template. Thanks! – SDZeroBot (talk) 23:20, 17 June 2025 (UTC)[reply]
Yapperbot: FRS failure
Yapperbot's task "FRS" failed to run per the configuration specified at Wikipedia:Bot activity monitor/Configurations. Detected only 0 edits in the last 1 day, whereas at least 1 was expected. If/when the issue is fixed, please change the section title (e.g. append " - Fixed") or remove this section completely. When that is done, this notice will be reposted if the bot task is still broken or is re-broken. If your bot is behaving as expected, then you may want to modify the task configuration instead. Or to unsubscribe from bot failure notifications, remove the |notify= parameter from the {{/task}} template. Thanks! – SDZeroBot (talk) 06:20, 11 July 2025 (UTC)[reply]