WordPress putting the real time web to a halt?

Alert to all bloggers!

We have a  serious problem:

In an attempt to reduce the numbers of outbound pings a new undocumented ”feature” was introduced in WordPress 2.8 (this change is not mentioned in the WP 2.8 release notes).

Instead of notifing ping services every time a post is published or edited, pings are now sent once every hour, at the most. Every time a new post is published, WordPress checks if there is a ping batch queued to be sent within the next hour.  If so, the ping is added to that batch. If there is nothing in the queue, a ping is sheduled to be sent after 3600 seconds (one hour).

Screenshot from the Cron View-plugin panel.
From the Cron View-plugin panel: Ping is not sent instantly. Instead it is added to the list of scheduled jobs.

This has a huge inpact on the speed of post announcements to services such as Google Reader and is effectively sabotaging the steps towards real time search and initatives such as FeedBurner’s support for PubSubHubBub.

The solution:

If you want your posts to be announced as soon as possible and don’t want manually ping services such as Technorati, Twingly or FeedBurner you should install the WordPress plugin MaxBlogPress Ping Optimizer. It will override the new default behavour. Not only does it instantly send a ping when a new post is published, it also corrects the initial problem that the new feature in WordPress tries to solve, by not pinging when you publish future posts or edit previously published posts, as WordPress used to do by default.

I learned this while digging in the WordPress code after debugging my FeedBurner connection to FriendFeed. Big thanks to Brett Slatkin/Google for the initial assistance and Nikke Lindqvist for proof-reading.

Update: Kristoffer Forsgren/Twingly notes that to be able to activate the plugin MaxBlogPress Ping Optimizer you need to sign up on the developers mailing list. To me, that is not a big problem (I publish my email adress publicly on this page anyway), but if you are paranoid: be warned.

Since the plugin is licensed under GPL, it is possible for whoever got the time to deal with it to ”clean” the plugin (drop me a mail if you do and I will link to your version here).

Update 2: If you think that the new setup is flawed, please make yourself heard and leave  a comment at the WordPress development ticket system (thanks Pelle Wessman!).

Update 3: Denis de Bernardy, the developer who submitted the patch that changed the behaviour of WordPress’ pinging, has left a comment in which he dismiss my critique as ranting. Denis says that this change are off less importance, and that it easily can be overridden by third party plugins. Commenters at Digg and Reddit are saying things like: ”If once per hour isn’t real-time enough for you, maybe you should be using Twitter!” and ”If you think the world cannot possibly wait an hour for your next post…you are probably wrong”.

Clearly these people don’t value the new web and it’s rapidness as I do. I even doubt that we see the same web. When I look at the blogosphere I see a revolutionary democratization of the media landscape. In  the last decade people all over the world have become their own publishers and  have connected themself with other blogs and portals. In recent years, newspapers has showed inbound links with offsite comments using services like Twingly. During the last year big players like Google and FriendFeed has worked together and established near real time announcements with PubSubHubBub. All this communcation between different platforms could not be possible without rapid pingbacks. Pings simply need to be sent out from blogs as soon as possible.

If the change in WordPress itself is one problem, the lack of information of it is another. People can not, like Denis suggest, change the behavior of WordPress with a plugin if they don’t know that they need to. Since this change was not clearly communicated from the head developers I can only assume that the patch was accepted by a misstake in a stressed situation before the release of WordPress 2.8.

I would love get some official comments from Automattic (or some of the ”victims” like FeedBurner or Twingly ), but I guess I have to wait until monday for that.

Anyway, Pelle Wessman has submitted a counter-patch that change this behavior , it will be exciting to see how it is recived by the WordPress community.

Update 4: WordPress core developer Ryan has reverted the code back to the default ”ping often” behaviour. It look like everything will be as usual in the 2.8.3 release. More on this later on …

23 kommentarer

  1. I truly fail to see the point of your rant. Overriding the behavior in a plugin is a trivial 3-liner.

    if (wp_next_scheduled(’do_generic_ping’) ) {
    wp_clear_scheduled_hook(’do_generic_ping’);
    do_action(’do_generic_ping’);
    }

  2. When I see Denis de Bernandy comment I get a bit confused.

    I have not followed every change for WordPress and the development for 2.8, but it’s quite clear that there is an attitude of ”Just fix it, stupid” here that I don’t like.

    Well – everyone does not know how to exactly fix this. Everyone does not read this blog. I had no idea of this change before Christian Bolstad brought it up.

    As Christian said – this is not unimportant because it is important for the real time web.

    Here in Sweden we have a lot of bloggers (some figures say 350 000 active blogs for a population of 9 million). A lot of bloggers with WordPress and most of them have no clue how to add a plugin with a ”trivial 3-liner”.

    We also have a lot of services depending on direct ping like Knuff.se, Aitellu, Twingly, Bloggportalen – services that almost every major newspaper in Sweden counts on. If you don’t know every major newspaper have blog comments to their articles with direct link to the blogs. A bit reason why blogging is big in Sweden.

    So if you change this to a 1 hour delay – well, for important and for fast news your blog comments will be delayed.

    I would say that this is not good – anyone disagree?

  3. @Simon: Yes. I disagree.

    WP is an open source software. Leaving Ryan and Andrew aside, all of the contributors offer patches on a voluntary basis. We don’t get paid for doing so.

    If an end user with no coding skills can’t write a patch, he can always submit a comment in trac, and suggest things to be done otherwise. That’s fine.

    The same from a coder is not fine. Add an alarmist post on top, and things become intolerable. If a coder isn’t not happy with a behavior, he can and should write a patch. If he doesn’t, he should put up with the behavior.

    As to why this wasn’t added in the release notes, it’s a Wiki. It occurred to nobody who contributed to them (without getting paid either) that it was worth a mention. Go right ahead and add the note yourself if you think it’s so important.

  4. @Denis Thank you for the explanation here. Apperantly we have different opinions about this and that’s ok.

    I will never agree with you because I think that direct ping is crucial for a blog platform like WordPress.

    As you probably have seen here this is quite important for many people. Regarding the ”rant” language that’s actually a sign when people are upset and quite angry. I don’t say it’s ok but it’s an explanation.

    One thing though that I’ve learned personally it’s that I have to be more aware of the changes made to WordPress. I’m not familiar at all with the ticket system but seems that I have to learn it.

    So yes – you will see more of me there 🙂

  5. As I wrote about recently, delays in pings of updates to posts can be a liability.
    Stories can change in minutes, and this titles need to be updated, an pings sent, otherwise meme trackers will have the wrong headlines.

    If people continue retweeting the wrong story because WP refuses to update Tweetmeme, there is a problem, as it is not expected behaviour.

    In many ways it is a bigger problem constantly changing date headers, as that can annoy your subscribers.

    I would suggest not using MaxBlogPress if you blog about anything news related.

    Also add to whis Feedburner delay – whilst they will update your cached feed almost immediately, they make up their own mind on further notifications.

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *