msn-pecan 0.1.0-rc3 ready for testing; featuring direct file transfers

This release is almost completely concentrated on getting direct file transfers to work, and they do, pretty nicely. Not all the types of transfers are supported, but the important ones are, so most probably you wouldn’t have any problems.

Also featuring is a revamped Windows installer that looks much nicer, has uninstall option, and supports portable apps.

Other than that it’s mostly bugfixes.

Continue reading

How msn-pecan fixed a 6 year old bug, how Pidgin didn’t, and stole the fix

The bug we are talking about is the infamous switchboard timeout error which was very elusive, it happened randomly, and very often for some users in unknown conditions. Essentially you send a message, and after one minute you receive a notification telling you the message never arrived, after which you need to resend the message, and hope it will arrive this time.

Let’s see how the two projects approached this bug.

Pidgin

There have probably been many bug reports regarding this issue, but it’s very difficult to find old historic bugs in Pidgin’s new and old tracker. The modern version is reported in Pidgin’s tracker as #3330. There you can see people saying it happens a lot, that the priority should be increased, and many tickets were marked as duplicate. Developers however stayed in denial mode: they say it doesn’t happen to them, and then turn to the usual strategy: ask for irrelevant information such as a valgrind log, and to try again as it might have been magically fixed.

Then they try a simplistic workaround; re-send the message on failure. This doesn’t work on most cases, and even when it does, the message arrives more than 1 minute late. As usual, no developer did much else about the bug.

In the mean-time, Adium had many reports (2475, 2395, 6316, 6708, 6952, 7288, 9978, 11045, 11398, 11478) of the same bug. At this point something was very clear: it happens more often in OS X.

The interesting point is when Rasmus Hummelmose, an Adium user, logged to IRC to rant about the problem. He received the same response on both #adium and #pidgin; it’s a server problem, or it’s your slow connection, there’s nothing we can do. That didn’t convince him (it wasn’t true) and he effusively tried to explain that the issue was real and was affecting many users. He didn’t achieve anything more than upsetting the developers.

This is not the way to solve an important bug.

msn-pecan

The msn-pecan team on the other hand thought: hey, there’s a bug, and this guy can reproduce it, let’s fix it. I invited him to #msn-pecan. Rasmus was a bit reluctant; Why loose time with msn-pecan developers? Surely Pidgin developers must be capable enough to do the job. He changed his mind when I explained that the core parts of libpurple’s (Pidgin) msn were either developed or refined by me anyway, and therefore, Pidgin devs probably didn’t have the expertise required to identify this problem.

With that we started an endeavour to fix the problem through the weekend. I started by providing some infrastructure changes in order to visualize what was actually happening, Devid Antonio Filoni created Adium builds, and Rasmus tested, and provided feedback. We made some conjectures and discarded them with further testing and fixed some bugs along the way until we found a reliable way to reproduce: send a message, wait for 15 minutes of inactivity, and send another message.

After this is was clear that something bogus was happening with the network connection, but since we cannot fix all the elements involved, we implemented a simple fix: close the connection after 1 minute. That worked perfectly. Rasmus was happy, and we were too :)

That‘s how you do it.

The stealing

Logically after our success, Rasmus decided to rub the fix on the face of Pidgin and Adium developers, after all, they were the ones that said it was not a bug. But they were not impressed.

However, Daniel Ljungborg (aka Dimmuxx) was interested in the fix, and in good faith I pointed the commit message that explains the issue in detail.

Then I find out Ka-Hing Cheung, a Pidgin developer, implemented the fix as I described, but thought it was OK to not thank anybody, explain where the fix came from, or mention the msn-pecan project, or any external source at all. We (Rasmus, Devid and I) spent a weekend of our free time working hard to identify, fix, and verify the issue, and if you read the commit message you would think they came out with the solution:

Author: khc@pidgin.im
Timeout switchboard connections at 60 seconds, should Fixes #3330 for most people.

That is plagiarism, pure and simple, and unfortunately, it’s not the first time.

msn-pecan 0.1.0-rc1 ready for testing; on the way to the first serious release

The next msn-pecan release started as 0.0.20 but there are so many changes that
it’s going to be 0.1.0. It is way more stable than 0.0.19 but we still would
like to do more extensive testing, so we are rolling a release candidate in
order to fix critical bugs that might be lingering. Hopefully it will be the
only release candidate before the actual release.

The aim of 0.1.0 is going to be our “first serious release”, that doesn’t mean
the previous releases were bad, it just means that we were never truly
confident about the code being delivered until now.

Compared to 0.0.19:

  • Timeout issues fixed (switchboard error)
  • Better offline messages receiving support
  • Offline message sending support
  • Reorganization of P2P code (less crashes)
  • Several crash fixes
  • Adium improvements
  • Performance improvements
  • Massive code reorganization

Special thanks for Devid Antonio Filoni, and Andrea Piccinelli who have been
very active fixing issues and making sure msn-pecan is rock-solid. Also Rasmus
Hummelmose who was essential in fixing the timeout issues, it wouldn’t have
been possible without his testing. Also thanks to the Pidgin developers (we
picked some patches), and many other contributors.

This is the list of issues fixed so far:

  • 37: Pidgin leaves handle on files after transfers
  • 82: Implement sending of offline messages
  • 117: Received offline messages are being cut
  • 138: Translation is not whole integrated from Launchpad
  • 144: Unable to chat after message timed out
  • 155: Pidgin crashes after connecting (using NTLM Authorization Proxy Server)
  • 156: msn-pecan crash in msg_ack() at cvr/slplink.c:321
  • 157: msn-pecan crash in msn_switchboard_can_send() at switchboard.c:779
  • 158: msn-pecan crash in msn_switchboard_free() at switchboard.c:262
  • 159: Pidgin crash when connecting to MSN
  • 161: 0.0.19 ubuntu package
  • 163: Translations not working on win32
  • 164: msn-pecan crash in pecan_contact_get_personal_message() at ab/pecan_contact.c:616
  • 170: Crash upon sign in
  • 171: crash when disabling account
  • 174: Windows 7 RC and Pecan
  • 177: Offline messages of blocked contacts should not be displayed
  • 181: Too many timeout messages
  • 183: msn-pecan should use audio:// links with pidgin 2.6.0
  • 184: already showed OIM message show again using another client
  • 185: Add support for receiving winks
  • 133: pidgin crashed with SIGSEGV in msn_message_destroy()
  • 154: Pidgin Randomly Crashes
  • 166: proxy authorization support missing
  • 153: User Adding Problems

The diffstat is huge:

44 files changed, 3423 insertions(+), 3116 deletions(-)

For the source tarball, win32 installer and maemo package check the usual location:
http://code.google.com/p/msn-pecan/downloads/list

And the Adium build is here:
http://code.google.com/p/msn-pecan/wiki/AdiumBuilds

So, start the testing! And please report back any issues :)

Here is the current list of pending issues for 0.1.0 final:
http://code.google.com/p/msn-pecan/issues/list?q=label%3Amilestone-0.1.0

Finally here’s the shortlog:

     6  Andrea Piccinelli
     1  Chris Stafford
     1  David Geary
    29  Devid Antonio Filoni
     1  Devid Filoni
     4  Elliott Sales de Andrade
   214  Felipe Contreras
     2  Mike Ruprecht

msn-pecan 0.0.19 released, more stability and “now playing” support

This is mostly a bugfix release that should make msn-pecan much more stable. Bug also brings some nice features such as “now playing” support.

Everyone is encouraged to update.

I’ve been busy with other projects so I have not been able to work as
much as I would have wanted, but all in all, this is a good release.

The features (thanks to Devid) include support for “now
playing” (ported from libpurple), and a new way to be notified when a
contact has deleted you (you’ll see on the conversation window). Also,
some issues in Adium were fixed, so we will probably roll an Adium
build with msn-pecan enabled.

I’ve updated my system so it might take a while before the win32
binaries are uploaded, anyone willing to take this one?

Download from the usual place at googe code.

Bugs fixed

  • 99 Unable to retrieve display pictures when invisible or logged as invisible
  • 109 Protocol priority
  • 120 Aliases not cleared properly
  • 133 pidgin crashed with SIGSEGV in msn_message_destroy()
  • 154 Pidgin Randomly Crashes
  • 135 russian translation doesn’t work

Enhancements

  • 140 Support for “Now Playing” status field
  • 129 Can’t verify installation, or uninstall
  • 124 Notify when deleted by a contact

Taks

  • 121 Make dbg package for the launchpad repo

Diffstat

105 files changed, 1295 insertions(+), 749 deletions(-)

Contributors to this release

Albert Cervin (1):
     po: update Swedish translation

Devid Antonio Filoni (14):
     Fix use_userdisplay option using Adium.
     Change PACKAGE to GETTEXT_PACKAGE.
     Translate msn-pecan also using Adium.
     Fix use server alias option
     Move utils/msgplustags.{c,h} to pecan_util.{c,h}.
     Update COPYRIGHT.
     Add PURPLE_STATUS_TUNE support and parse contacts's CurrentMedia.
     Update MsnClientCaps in msn.h.
     Add "Has Space" to get_info.
     Show "You are not in A's contact list" message opening a conv
window if needed.
     Set the passport also to session->user.
     ab/pecan_contact.c: cleanup.
     slp: destroy object at the right time
     po: update Italian translation

Elias Julkunen (1):
     po: update Finnish translation

Felipe Contreras (44):
     Cleanup login steps.
     Show up 'connecting' state.
     session: Cleanups.
     Trivial cleanups.
     Cleanup configuration stuff.
     session: Random cleanups.
     Remove bad Russian translation.
     cmdproc: trivial cleanup
     slpcall: avoid extra error cb call
     status: trivial cleanups
     status: improve "available" state mapping
     Trivial cleanups
     userdisplay: report failure
     Log general server notifications
     Makefile: add debugging symbols by default
     session: destroy ud manager after freeing slplinks
     contact: store pecan status instead of pidgin one
     Reorganize how bad statuses are handled
     notification: store user state
     contaclist: add function foreach_contact
     Get user displays when returning from 'hidden' state
     status: trivial cleanup
     contact: use "invisible" for the HIDDEN status
     Use pidgin mobile status only when offline
     Update copyright notices
     command: trivial cleanups
     command: remove unused refcount
     command: general cleanups
     contact: enable workaround for server aliases
     fix_purple: trivial cleanups
     fix_purple: rename purple_buddy_set functions
     Reorganize switchboard handling.
     Close the http node when not needed.
     Make sure the switchboard is not freed when it's still used by slplink.
     transaction: trivial cleanup
     transaction: add ref/unref
     Properly ref/unref transactions
     transaction: fix initial ref_count
     sb: set error properly
     Fix wrong memory access
     Optimize GType retrieval
     Fix SLP DATA message creation
     po: general translation updates
     Bump version to 0.0.19

Geoffrey Antos (1):
     slplink: fix buffer overflow vulnerability

Luís Neto (1):
     po: update Portuguese translation

Wei Hsiang Hung (1):
     po: update Traditional Chinese translation

100,000 views, and some stats

Well, it seems 100k views is a good milestone to talk about some stats of my blog, so here they are. I’m also trying to understand what are the sources of the traffic and how you might increase your viewers too.

Blog grow graph

Blog grow graph

General stats

  • Total views: 102,436
  • Busiest day: 1,903 — Monday, January 12, 2009
  • Views today: 112
  • Posts: 110
  • Comments: 458
  • Spam: 21,913 comments

As you can see I don’t post too often, but somehow I still manage to get some views. The day I got most views was the day the MSN servers did some strange update that made all new clients stop working. The new clients use MSNP13 and newer, while msn-pecan uses MSNP12. So everybody rushed to download the only Pidgin plug-in that worked. The number of downloads increased to 10,000 and many of those viewers ended up in my blog. Sadly, it lasted only one day.

But where does the normal traffic comes from?

Top 10 referring sites

So, important planets like maemo.org and beablegoard.org constitute a big chunk of the visits. Maemo.org, specially, has a good voting system so good stories go to the top. Unfortunately I don’t blog so often about maemo-related stuff, and I try to not spam topic-centric planets.

Somehow that list seems not enough to fill 100k. Could be that Google is helping here?

Top 10 Google searches

Still some stuff seems to be missing. My guess? RSS feed subscribers. At least 66 people are subscribed to my blog through Google Reader. So, thanks to all the people that follow my blog. If you have any recommendation on how to improve it, please share it :)

Also, special thanks to WordPress for making this blog possible, and always providing great stats to help me figure out what to blog about next.

Finally, here is the list of top 20 posts:

Top 20

msn-pecan 0.0.18 released, now with voice clips support

Hello!

It’s time for msn-pecan 0.0.18. There are many bugfixes and important new features like voice clips support.

Again, Devid did most of the work. The most important fix is that personal status messages now work properly (can be enabled and disabled), the most important feature is voice clip support; thanks to Devid Filoni for the port, original patch from Chris Stafford, and Youness Alaoui for libsiren.

Also important is a fix for WLM 2009 user displays (Thomas Gibson-Robinson), P4-context support for groups.im (Thiago Silva and Devid), a new option to hide Plus! tags (Devid) and support for Plus! sounds (Devid and Thiago).

Also, some cleanups and reorganization heading towards a standalone library.

An interesting event happened on January 12; for some reason the MSN servers changed something that prevented many clients (>MSNP13) from working, while msn-pecan kept working just fine. That day the number of downloads increased dramatically (100010,000 a day), but unfortunately it lasted only a day.

12,552 page views.

12,552 page views.

New translations: Turkish, Portuguese (standard and Brazil) and Arabic. If your favorite language is not translated you can help at Launchpad’s site.

Here’s the diffstat:
diffstat

Download from the usual place at googe code.