As far as I’m concerned, Google Groups is dead.

For the jQuery project we’ve run all of our community discussions through Google Group mailing lists for the past three years. At this moment the main jQuery group is the second most popular programming group (next to Android developers) clocking in at over 21,000 members. We also have the jQuery Dev and jQuery UI groups. The main jQuery group averages around 83-143 messages per day. I also use Google Groups for discussion on a number of my other projects (Processing.js, Env.js, Sizzle.js, and TestSwarm).

This post isn’t so much about the usefulness of mailing lists as a discussion medium, it’s the complete failure of Google Groups as an adequate purveyor of public discussion software. For the jQuery project we’re already in the process of moving the full discussion area to a forum that we control. We should have it set up, and everything moved over, within the next month or two.

There is one area in which Google Groups continues to shine: Private, or restricted, mailing list discussions. However any attempts at using it for a public discussion medium are completely futile.

The primary problem with Google Groups boils down to a systemic failure to contain and manage spam. Only a bottom-up overhaul of the Google Groups system would be able to fix the problems that every Google Group faces.

To better illustrate the problem, let’s step through the common experience of running a Google Group.

The Beginning

When you create a public group everything will go well for a couple days, at most. Without fail an onslaught of spam will start to come through your group – I’ve even seen it happen within the first day. It happens to every group and doesn’t matter how well you advertise it (or try to hide it). After having watched Google Groups for as long as I have I can only assume that there exists no spam filtering whatsoever. Or, if there is any, it’s the most grossly incompetent spam filter I’ve ever seen.

When these spam messages start to come to your group a couple things will happen. First, you may not even notice the spams coming through. Since you’re likely reading the list in a competent email client (such as Gmail) it’ll detect the messages and dump them into your personal spam folder. Don’t be surprised if you visit your group and see a pile of spammy messages sitting there greeting your new visitors.

Most email client spam detection software is smart. It looks for common points of failure and tries to take care of the root problem. One such tactic is to realize that a lot of spam is coming from a single address (like a Google Group) and start to flag most of it as it comes through (regardless of the actual content). The result is that much of your list is being flagged as a false positive. In the case of Gmail people will then start to un-flag the falsely-binned group messages. This works well until the system starts to think that all group messages are ok – and here comes the spam again.

To fight the spam you’ll likely start flagging emails as “spam” in the groups interface. This works well (the user is permanently banned and the message deleted) – until a couple hours pass, that is. You’ll see the spammer return, with a slightly different username, posting the same exact spam messages. Flagging a user/message as spam does absolutely nothing to train the groups spam detection system (for reasons that aren’t entirely clear and only be explained by incompetence).

It’s a horrible game of cat and mouse with the spam destroying the quality of your group. It’s at this point that you say “enough is enough” and you turn on moderation for your group.

Moderation

Google Group moderation seems like a palatable idea but in practice is aggravating and crippling. To start, it creates a horrible first-participation experience for your users. For example, let’s say you go to bed at the same time as someone in Tokyo attempts to post a message to the group; you won’t be able to moderate the message through for many hours (and that’s assuming that you moderate messages during your work day). While the experience is much worse than instant posting it is par for the course for most moderation systems.

Of course, this would assume that Google Groups actually informs the users that their message has been held in moderation. Looking through the moderation queue you can see users attempting to submit their message over-and-over again, wondering why it isn’t working. Eventually they’ll just give up in frustration.

In order to combat this you’ll typically need to bring on a bunch of people to help with the moderation duties. In the case of the main jQuery and jQuery UI groups we divvy up the moderation based upon the time of day and week (and where the moderator lives). This is incredibly frustrating but still manageable.

This moderation load also assumes that you are able to successfully navigate the abysmal Google Groups moderation user interface. It’s a horrible quagmire of radio buttons and un-evenly spaced rows with no visual delineation. I’ve provided an example of the interface below (BEWARE: Contains Not Safe For Work text).

When you begin moderating all the radio buttons start on the “Ignore” column, it’s your duty to move all the messages to the right columns. The “Spam” and “Always Allow” columns were added just recently (thank goodness) – the moderation process use to be much worse.

With a user interface this bad mistakes happen. Sometimes spam accidentally slips through, sometimes users get completely banned. I estimate that this happens about once in every couple hundred messages. With 84-143 messages coming to the main jQuery Google Group every day that means that there’ll be at least a few users banned and a few spam coming through every week.

While the occasional spam slipping through is a reality of the web, accidentally banning users is unacceptable – but it does happen, even when you don’t mean to. For example, here’s a message that I got from a user just today:

I seem to have been banned from the jQuery Google Group for a reason

I’m not aware of.

> The owner of this group has banned you from this group. Not sure if this is another Groups glitch or not. I can still access

the jQuery UI group, though.

My account is under email: XXXXX@gmail.com Please advise. Thanks.

Nothing quite like insulting, confusing, and scaring your users, due to a poorly-designed user interface and abysmal spam detection. This is the reality that Google Group owners have to live with on a daily basis.

All of this changed a couple weeks ago.

End Game

The final straw was placed upon my patience with the Google Groups system a few weeks ago. Spammers are now spoofing the email addresses of existing group participants to sneak their messages through. Previously you would’ve seen a delightful “FREE MOVIE DOWNLOADS” spam from “freemovies123@gmail.com” – but now you’ll see it coming from existing group users – or even the group moderators themselves. This cheat completely bypasses the moderation system since the spammers are pretending to be pre-moderated users.

The Google Groups system is completely fooled. The spam message comes in claiming to be from an existing group participant – and according to the Google Groups interface there is no difference. If you click the user’s name you’ll be taken to a full listing of that user’s posts (with the spam messages delightfully interspersed).

For example, here’s a user whose email address is being spoofed and an email that was actually sent to Google Groups. Note that the actual email is coming from a .ch domain and not from the actual Gmail server.

The only “cure” to this problem is to watch for a spam message to come through and then force that user into a permanent state of moderation. Of course, you then have to be careful not to bring that user into a “pre-approved” state the next time you clean up the moderation queue. There is no way to keep track of which users should be kept in a always-moderate state and which should skip moderation.

At this very moment my own email address, and the email addresses of most of the jQuery group moderators, are being spoofed by spammers. This means that we (the owner and moderators of the group) have to moderate our own messages before we post, for fear of letting a spoofed spam through. This will likely happen indefinitely since Google Groups has been notoriously slow to fix problems with the site.

On top of all of this, Google Groups actually strips out many of the original spam indicators from the message when it re-broadcasts it to the full list. This means that when the message finally arrives at a user’s email client it actually looks like it came from the spoofed user. Since I’m currently being spoofed I’ve actually had a bunch of my legitimate email end up in spam folders as a result. Having my email address become flagged as a spammer is positively infuriating. The fact that Google Groups is silently sitting by and blindly letting this happen communicates one thing to me: Google Groups is dead, time to move on as quickly as possible.

Moving On

I’ve completely given up on Google Groups – and I’m not the only one. Feel free to ask any Google Group moderator and I’m certain that you’ll only get a sad shake of their head. The situation is completely untenable – which is why the jQuery team is actively working to get all our lists off of Google Groups as quickly as possible.

To give you an idea of the overall level of quality that Google Groups exhibits here is an anecdote: A couple weeks ago the jQuery UI Google Group was completely deleted for no apparent reason. It was gone for the better part of a day before it was restored. The only mechanism for contacting support, even in a situation as serious as that, is to post on a public Google Group. We never received a response from an admin regarding the missing group. Are there backups of group data? Who knows! Forget it, life is too short for the stress and aggravation that Google Groups provides.

While Google Groups provides a mechanism for exporting a CSV members list it provides no way to export the full message archive for a group. With over 120,000 messages tied up in the main jQuery Google Group alone it’s going to take some significant work to get everything out and move on. Our only avenue of escape (short of screen scraping the entire Google Group archive) is doing an IMAP dump of my personal Gmail account and extracting all the jQuery group posts from it. I’m sure that experience will be absolutely delightful as well.

Bye Google Groups, you won’t be missed.