Title Improving Yahoo! Implementation of libpurple
Student Sulabh Mahajan
Mentor Mark Doliner
Abstract
The project aims to enhance the support for the Yahoo! protocol by polishing the existing code and adding new features, making pidgin a more fulfilling experience for the yahoo users. The official Yahoo client will act as the basis for all the comparisons.

Deliverable:

1. P2P File Transfer:
(Service-YAHOO_SERVICE_P2PFILEXFER=0x4d, key:49-value:FILEXFER)
Currently the direct P2P file sharing is not supported.
I propose to implement the receive only support for the transfer. The problem with initiating the transfer is discussed later.

2. IM with Windows Live Messenger buddies:
Adding and Removing buddies,
Ignoring,
Sending IM,
Changing groups (Ticket #5193)

Proper implementation would require modifying libpurple to specify additional information to be used by the UI while adding buddy/sending IM.

Proof of Concept in Detailed Description

3. Send SMS:
(Service-YAHOO_SERVICE_SMS_MSG=0x02ea)
Currently not supported. I propose to implement sending as well as receiving SMS through the yahoo network.

4. Support for the new Status Keys:
The new protocol v15, has several unknown status keys. Its important to figure out the purpose of these by exploring them under a packet sniffer.

5. Photo Sharing:
(Unhandled service – 0xd2)
Image display Interface
Add/Remove photos
Saving photos: Screen size or full size
Show pointer

Photo Sharing utilizes the P2P transfers, and would use the same constructs as used by the P2PFileXfer

6. "Firewall with no Proxy" and cleaner interface to advanced connection settings:
Firewall with no Proxy uses the YMSG protocol but encapsulates the data in HTTP packet, enabling to pass through many firewalls. Yahoo's advanced properties are mostly redundant, rarely used. I propose to implement the new connection type, and to provide a user friendly interface for advanced connection properties.

If Time Permits:

1. Multiple profile support and implementation of "send-as" feature (Ticket #286):
I would give libpurple, the capability to handle multiple profiles, and be able to send IM from non-primary contact using "send-as".

2. "Sign into Mobile Device" and protocol documentation:
Signing into a mobile when exiting is a useful feature. The IM messages will be delivered to your cell as SMS, and your replies as IM to the buddy.
Also, I would document the Yahoo protocol while doing this project.

As a long term goal, beyond SOC, I will love to work on voice and video support for the Yahoo!.