Summer Coding 2010 proposal - libyahoo2 chatroom

About me

 * 1) Name:             Kai Zhang
 * 2) Email:            kay21s@gmail.com
 * 3) wiki username:    kay21s
 * 4) IRC nickname:     kay21s
 * 5) primary language: Chinese， Secondary language: English
 * 6) Located:          China.(GMT+8) I will work in afternoon and night.
 * 7) Work: During my scientific research period in USTC，I have engaged in several projects based on some open-source projects, such as Flex, Libnids, Libumem, Ntop, Nprobe and so on. Working on an open-source software is of great significance to the sustainability of global development and the vital interests of human beings,which fills me with enthusiasm and motivation to develop new innovation to the world. Meanwhile the whole exploring process is very rewarding and it always thrills me up when the thought occurs to me that millions of people around the world will use the code I compile. What's more, the opportunity of cooperating with experienced mentors will provide me with more channels to improve myself in the research and appliance field of open-source software.

About my project

 * 1) Project Name: Add Yahoo chat room support into Libyahoo2
 * 2) Idea page: []
 * 3) Libyahoo2 is a Yahoo messaging protocol library implemented in C. As the Yahoo! messaging protocol(YMSG) is updated to version 16, there are a number of differences between it and the protocol currently implemented in Libyahoo2. My project is to work on the chat room module of Libyahoo2 to get it to support YMSG 16 and have the package updated in Fedora for use since the two messengers in Fedora that use this library -- ayttm and freehoo. Much of the work needs to be done by studying protocol dumps of Yahoo! messenger with a new version and then interpreting and writing similar functionality. As two messengers in Fedora and many other messengers are based on Libyahoo2, if it doesn't updated to support the new version of YMSG 16, these clients will not be feature complete and will cause some inconvenience.In this project, C is the primary language in which the Libyahoo2 is implemented. Wireshark and Tcpdump are the common tools to capture packets to analysis the YMSG protocol. Autotools used for building the library.
 * 4) Timeline:
 * 5) *Week 1: Analyse the YMSG 16 protocol to find out the new features and changes.
 * 6) *Week 2: Implement the function of getting chat room list.
 * 7) *Week 3: Implement the function of joining a chat room
 * 8) *Week 4-5: Implement the function of parsing the system messages
 * 9) *Week 6: Implement the function of exchanging messages in a chat room
 * 10) *Until now, 90% of the work has been done.
 * 11) *Week 7: Add keep alive message support.
 * 12) *Week 8: Implement the function of leaving chat rooms
 * 13) *Week 9-10: Debug the previous work and capture the packages that have been sent out from the process to verify their accuracy.
 * 14) About myself:I am on the first year of pursuing my master degree. The focus of my lab program lies in building parallel NIDS on multi-core platforms,and based on the lab experimens I build a high-performance parallel HTTP parser which can achieve at least 2Gbps line rate in a harsh environment.I am experienced in C programming and specialized in network domain knowledge. Wireshark and tcodump are frequently-used tools, and regular expressions are also generally reserved in locating a particular pattern when debugging the system. I have kept enriching myself through reading the HTTP and TCP RFCs and accumulated the ability to learn more complex protocols. Many of the skills applied in this project are similar to what I have explored in my previous research . In conclusion, it is ideal for me to work on this project.

I and the Community

 * 1) If my project is successfully completed:
 * 2) *Mine:If the project is completed, many of the Yahoo messengers based on Libyahoo2 will be able to support the new YMSG protocol, such as freehoo and ayttm. That will facilitate many people who are using Fedora as their OS, because they will not be troubled by switching to Windows when they need to use Yahoo! messenger to communicate with others. The Libyahoo2 will also benefit other Linux users. What's more, if these common and fundamental functions are not supported, it will block Linux to get more popular.
 * 3) *Mentor:libyahoo2 is packaged for Fedora and is used by two instant messengers in Fedora -- freehoo and ayttm. Those messengers can then avail of the group chat feature as a result of successful completion of this project.
 * 4) If I get stuck on my project and my mentor isn't around. I will first keep a clean mind to analyse the sticky situation and figure out the reasonable scheme options to remove the obstcle . At the same time, consulting with the team members on the mailing list of Yahoo forum who are working on the other projects of Libyahoo2 is a beneficial alternative as well. I believe I will overcome the barriers with my individual research capacity and cooperational spirit
 * 5) In addition to the required blogging minimum for twice per week, I will send a mail when a main function module has been completed and when I confront with any problems that I feel uncertain about.

Miscellaneous

 * 1) Answers:
 * 2) *Yes, I have installed Libyahoo2, Wireshark, Tcpdump and other tools for development on my computer.
 * 3) *Yes, I have contacted with Siddhesh Poyarekar, who is going to be the mentor of the project and has given me lots of guidence.
 * 4) T-shirt size: XL
 * 5) Learning experience as a child: The magic cube. As a knowledge –thirsty little boy in my childhood, I always got inquisitive about the tiny stylish cubes and considered them being compiled without any regular rules. However, when my father showed me he could work this out in 1 minute and instructed me there were meticulous rules and formulas being built in each one of them,I got fascinated with the magic-like cube.I decided to learn computer science because I think everything has an algorithm to implement, just as the magic cube.
 * 6) I’m a person of challenging spirit and I have the confidence to conquer the obstacles on the marching process.