Project for GSOC 2013

Ashish Gupta ashmew2 at
Sun Apr 28 18:30:09 EDT 2013

Thanks for all the suggestions everyone, I have finally submitted my
proposal for GSOC '13 , Please let me know what changes are desirable in
order to strengthen the application. Thanks a lot.
Your Name

Ashish Gupta

IRC nick: ashmew2

Primary Email ID: ashmew2 at

What is your proposed project?

*File Transfer between libpurple/non-libpurple:*

I want to perfect the "Send File.." feature for two protocols between
official clients (Yahoo! Messenger and Google Talk) to and from Pidgin and
also between pidgin/libpurple clients. This File sharing mechanism will
enable a larger audience to use Pidgin as an IM client as the file transfer
has always been an issue when it comes down to transferring files between
Pidgin and the official clients. This project also aims to fixing the
one-side-transfer issue where a the sender believes that a file
authorization request has been placed but this request never reaches the
other end..

*Alternate file transfer plugin:*

For environments where P2P/IM File transfers are banned/blocked or in the
case where one client is a web based client without the ability to transfer
files, or any other case where the traditional method fails to transfer
files, the alternate file-transfer plugin comes in. It aims to effortlessly
let the user choose which files need to be transferred. Ask the user and
decide if it can, transfer the files in a non-standard way (HTTP File
Transfer) and initialize the transfer by sending a useful message to the
client at the other end.

The difficult parts of this project will be the isolation of responsible
parts which decide if a file transfer request is valid or not valid. The
protocol plugins which pidgin uses right now need to be modified according
to what the client at the other end expects. If the expectation is met, the
transfer is deemed authentic and can be proceeded with. Since all the
protocol plugins implement a different way in which the file transfers are
carried on, this requires all the plugins to be modified according to their
use cases and then tested by actually testing out the scenarios where file
transfers come in by using official clients/Pidgin/Web Clients as per the


*Required Deliverables:*

   - Hassle-Free File transfer to and from Pidgin and official clients of
   at least two IM Networks (Yahoo! Messenger and Google Talk).
   - An Alternate method of file transfer which will work in situations
   where the standard method falls short.

*If time permits:*

   - Fix/Perfection of more protocols that pidgin makes use of such as
   - Integration of cloud based services such as Ubuntu One into the
   alternate file transfer mechanism.

*Time Schedule:*(During this period, I will be in constant contact with the
mentor/community and making regular commits to the repository).

*Community Bonding Period (May 27 – June 17)*

   - Study the code in detail and get familiar with it's coding style and
   - Carry out a detailed study of the libpurple/pidgin API and get
   familiar with it.
   - Fix certain open tickets to gain a better understanding of the code's
   - Research and discuss about what makes the File Transfer not work
   - Read official documentation regarding file transfer APIs of concerned
   networks and plugin development.
   - Lay down rough designs on paper and discuss the same with the mentor
   and the community.

*2.5 Weeks (June 18 – July 4)*

Implement directional fix for YMSG (Yahoo! Messenger) protocol according to
the previous designs and test it using the official clients and pidgin. As
of now, Yahoo! Official to pidgin works as it should but is broken for the
other way round. Also, remove the erroneous scenario where either the file
transfer gets auto canceled OR there is no request to accept on the
receiving end.

*3.5 Weeks (July 5 – July 29)*

Enable bidirectional fix for XMPP/Jabber, focusing on Google Talk. When
sending FROM Google talk TO pidgin, “You cannot send files because
email.id123 at is using chat in Gmail or is using another chat
program.”. When sending files FROM pidgin, the “Send a File..” option is
greyed out .The way to fix this is to trick the Google Talk Client into
believing that libpurple is indeed the same and trigger file transfer.

*Milestone 1 Complete* : Google Talk/Yahoo Messenger transfers are working.


*4 Days Buffer (July 30 – August 2)*

Compile, Review and format the documentation. Review code and fix any
blocks not adhering to the coding style. Run intensive manual tests to
search and destroy even the slightest bugs that might have crept in, and
note/fix any misbehavior by our client, or the official client.

*2 Weeks (August 3 – August 18)*

Begin work on Alternate file Transfer Plugin. Modify libpurple so that
every greyed out instance of “Send File..” is made click able and informs
the user that the regular file transfer is not working out at the time, so
an alternate approach will be used. Confirm from the user.

Implement the basic Alternate file transfer plugin which aims to help any
lacking native file transfer mechanism and enables it to at least get the
work done. This will involve the usage of an HTTP File Server. Since
something very light weight is required. Lighttpd or woof seem to be
suitable options as they require little or no configuration scripts.Get up
to speed, discuss any issues with the mentor regarding any desired changes
and guidance.

*4 Weeks (August 19 – September 16)*

Merge the Lighttpd OR woof (OR any other server) into the plugin. Fix
calls. Auto Generate scripts. Implement a port scan which can easily
determine which port is available to be opened as gateway for the transfer.
Implement a routine for gauging the external IP. Enable the link being sent
to the receiver in the form of http://<IP HERE>:<OPEN PORT>. Experiment
with different scenarios, find out even more use cases and work to
implement their functionality.

*Milestone 2 Complete* : Alternate File Transfer via HTTP File Server.


*(September 17 – September 23)*

Review and format documentation. Finish up any work that is remaining.
Check code for any mismatches regarding coding style, minor errors,
refactoring etc. Make final commit.

Why do you want to work on this project?

I want to work on this project because pidgin (Gaim at that time) was one
of the very first open source projects i ever used. Since then, I've been
looking forward to a developer opportunity to help the community grow in
any way possible. This summer seems to be the most appropriate time when i
can work on perfecting the feature I have always wanted to see.

The proposed File Transfer project, once implemented will appeal to a
larger non-developer community as file transfer is a feature used time and
again and do not work, as the threads on many community forums suggest.
Once the transfer mechanism is in place, it will help a lot of people who
need to use Virtualbox/Wine just because the official clients are not
supported on Linux, or lack of this feature in the Linux clients.

Why should we choose you?

I have been programming in C/C++ for the past couple of years intensively
and been programming in general for the past six years(Python, GW-BASIC,
Shell scripting). I am an open source enthusiast and have also been using
Linux for a few years now. I'm a fast learner and can adapt to using new
libraries. I can also suggest practical features which i feel are important
from a user's perspective and work towards implementing the same.

I have been a user of open source applications for a while now and I have
always wanted to give something back to the community, and this seems like
a perfect time to do that since the File Transfer will affect a large
audience and make their lives happier:)

I will have a lot of spare time to utilize and work towards the
accomplishment of this project and since this has always been a feature I
have missed , I really wanna see it incorporated at the earliest.

Please list relevant academic, industry and/or open source experience

I'm a Second Year IT Undergraduate at Pune Institute of Computer
Technology, India. I have enrolled in various courses at school/college,
the notable being Data Structures, Data Communication, Algorithm Design,
Computer Organization and Applied Mathematics.

I have been using GNU/Linux for the past few years and am well versed with
using the system both as a user and a power user. I also have experience
dealing with Version Control Systems such as Mercurial, Subversion and Git.

I am a member of the programming team of the IEEE Student Branch of my
college and developed a project for the same which is on my github.


I also developed a (quite) small patch to fix the issue of multiple
instances occurring on Ubuntu when using VLC, as it was something that was
cutting down too much on user experience.

(Link: )

The languages I prefer to program in are C/C++ and Python using Emacs and
GCC for C/C++ and Emacs/Python or IDLE when programming in Python. Since
this project will primarily be in C, my pre existing knowledge about the
same will be useful regarding the completion of this project.

I like to learn new things and I am a fast learner and can quickly adapt to
using new tools and libraries.

Anything else?

I will be maintaining the packages/plugins that i work on during the summer
, even after GSoC has taken place so this project has scope of keeping up
with changes as they come up.

I will be able to spend at least 40 hours a week for working in GsoC.

Whenever I am online, I am available via IRC on Freenode alongside being on
IM networks, hence I can be contacted easily as and when required.

Since whatever work I will do will be put up openly for the mentor and
community to view, this project is very open to suggestions and feedback
for improvements.

The archive of the discussion on the mailing list is at : (Also included in
Additional Info).

Thanks for taking out time to read this.


Ashish Gupta

On Sun, Apr 28, 2013 at 7:33 PM, Arun <marunk at> wrote:

> Hi Ashish,
> You have a Great Idea !!!
> Also someone can lookinto a plugin : filetransfer or file explorer built
> into same. this shall help to view files like winscp GUI and transfer for
> the other side if listneing and file trasfer enabled. alternately, allow
> file trasfer can be one of the inbult option and whole trasfer mechanism
> can be simple with or without security.
> Thanks and Regards
> arun
> On Tue, 23 Apr 2013 14:41:35 +0530 wrote
> >Oh, thanks for the information, i didnt know that libpurple-nonLibpurple
> should be working. All i saw from a user perspective is that it doesnt, and
> i have seen a lot of people(including myself) being frustrated as to why it
> does not work. Why does it have to be official ? All i want to do is work
> on fixing the file transfer issue. If it can be done in a more official
> way, I'll still be more than glad to contribute to that. Just the end
> result should be the ability to transfer files.
> The ideas i mentioned(via HTTP/FTP server or via  a cloud), we could ask
> the users that the "official" file transfer is not working out for some
> reason, and then give them options as to what they want to do. If the files
> are to be sent urgently , at least they'll have an option of getting the
> work done through some other way.
> Looking forward to your views on the same,
> Ashish
> On Tue, Apr 23, 2013 at 3:21 AM, Jorge Villaseñor ** wrote:
> On Sun, Apr 21, 2013 at 12:58 PM, Ashish Gupta ** wrote:
> Hello, I am Ashish , Second Year Undergraduate in Information Technology.
> I've been using pidgin for a long while now ,started as a replacement for
> Yahoo Messenger because there was no "real" messenger for Linux at that
> time (still isnt). And i would love to contribute to Pidgin.
> 1) File Transfers are a pain at times.
> I'm talking about the scenario where the Send File button is greyed out.
> Instead of it being greyed out, one of the following could be implemented .
> * Open up a temporary FTP/SFTP server on the senders end with the browsed
> file automatically added to this user's "sendable space". You can choose to
> discard this whole sendable space immediately after the file transfer or
> preserve it for sending it to other users at a later time. This can help in
> sending directories as well. Can be achieved using something like a
> stripped down version of something like vsftpd. Login/Password for access
> can be generated on the fly.
> This could fix a generalized problem of sending files.
> * Push files to a cloud service such as Ubuntu One.
> The advantage of the FTP approach is that your files stay with you and the
> concerned receiver, no copies are made anywhere else.
> I don't know if I understood correctly but libpurple tries to behave JUST
> as the official client (when there is no open standard specification) and
> be 100% compatible with other clients. That is, if we send a file to a
> non-libpurple based client, they should just work. Doing file transfers for
> any protocol in a different way than the spec or the official clients do,
> is a no-no.
> 2) Buddy Search
> As mentioned on the Future Scope page, the buddy search should cut down on
> the search results instead of shifting to the best match, irrespective of
> expanded/unexpanded groups. Searching by alias is supported, while by email
> is not supported. It should merge both the results using a weighted
> algorithm based on matches, not just at the beginning but the string being
> present anywhere in the whole name/email ID/alias.
> This could be made into a plugin but imo , it needs to be integrated by
> default.
> I have C/C++ experience of a couple of years. And also some experience
> regarding Gtk/Qt.
> Can both of these features be good enough for a GSOC '13 Project for
> Pidgin ?
> Awaiting feedback on the same.
> Thanks,
> Ashish
> --
> Masca
> A: Because it messes up the order in which people normally read text.
> Q: Why is top-posting such a bad thing?
> A: Top-posting.
> Q: What is the most annoying thing on usenet and in e-mail?
> _______________________________________________
> Devel mailing list
> Devel at
> <>
> Get your own *FREE* website and domain with business email solutions, click
> here<>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Devel mailing list