File Sharing Utility

About you
Q.1 : What is your name?

Ans : Kartik Rustagi

Q.2 : What is your email address?

Ans : kashes911 [AT] gmail [DOT] com

Q.3 : What is your Sugar Labs wiki username?

Ans : kashes911

Q.4 : What is your IRC nickname?

Ans : kartik_rustagi

Q.5 : '''What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)'''

Ans : English and Hindi

Q.6 : '''Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)'''

Ans : Located in New Delhi, India, UTC +530. Since most of the period of Gsoc comes at a time of summer vacation for me, therefore I am comfortable working at any time of the day.

Q.7 : '''Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?'''

Ans : I have done the following relevant work:

->Implemented 7-zip compressed commics support in Evince Document Viewer, Gnome  Bug: #532312 * Link: http://ftp.gnome.org/pub/GNOME/desktop/2.23/2.23.5/NEWS

-> Was involved in the designing of a Joint Architecture for Unmanned Systems (JAUS) compliant Software Development Kit as a part of a startup I am co-founder off. Things I worked on (all in c/c++): * Unix System calls * Unix,UDP and TCP sockets * Threads, semaphores and mutex. * Design of the architecture which involved making UMLs * Object oriented designing I cant provide the link to the source code since the work if proprietary.

->Designed and implemented an Asynchronous Information Dissemination System using Delay Tolerant Networks. Was selected in the top 12 teams from Asia Pacific by Google as a part of Google Product Prodigy. The finals will take place in April. * Link: http://www.google.co.in/intl/en/productprodigy/finalists.html * Team: Mobile Health * Here specifically a lot of PyGtk was used along with XML DOM, imaplib, smtplib etc. TODO: Ask Google if the source code can be made public.

->Implemented a peer-to-peer file search and transfer utility in python. It had the following main features: #Remote discovery of active peers #File search queries using Multicast and File transfer #Object matching using regular expressions #Link: http://code.google.com/p/p2p-lan/downloads/list

->Made a distributed game based on Flash and Python and used Asynchronous servers, Mysql db, DOM in its design and implementation. #Link: http://code.google.com/p/etheravtar/downloads/list

About your project
Q.1 : What is the name of your project?

Ans : File Sharing Utility

Q.2 : '''Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?'''

a) : What are you making

Ans : There is a lack of file sharing ability in the Sugar Learning Platform right now. Sugar relies on Telepathy for most of its network requirement. Telepathy in turn uses XMPP Extensions as the bases of their various interfaces. The XMPP Extensions for File Repository and Sharing is XEP:0214. There is no Telepathy interface for this XEP currently and therefore File Sharing is not their right now. Also the File Transfer API is only to send files at the most, not request them. Therefore there will be a need to design a Telepathy interface to announce files, retrieves files from contact and request a file.

Steps for the complete implementation :

1) To design a Telepathy interface to announce files, retrieves files from contact and request a file.

2) Understand XEP-0214 and Telepathy enough to write a Telepathy Interface Specification for the functionality of XEP-0214.

3) Implementing that interface in Gabble.

4) XEP-0214 only gets you us as far finding out what files a person has. Step 4 is writing python code to actually retrieve those files, using Telepathy's existing FileTransfer API.

5) Modify the Sugar interface (probably Journal and Neighborhood view) to expose this functionality to the user, i.e to give an option to share a file or not.

b) : Who are you making it for

Ans : This will be of immense use for any one associated with sugar be it students, teachers and even developers since allowing such kind of functionalities will truly enhance Sugar's ability and bring to it a feature which is considered a basic utility in any platform.

c) : Why do they need it 

Ans : A typical use of this application is the transfer of assignments and similar work among students. Their can be many uses of this functionality for other activities as sharing has been a primary goal for the Sugar Platform. In order to connect the sugar community File Sharing according to me is some thing of prime importance.

d) : What technologies (programming languages, etc.) will you be using?

Ans : Most of the programming will be done in C followed by some part in python too. A major portion of this project will be to understand Telepathy's existing interfaces therefore Telepathy will be a major technology involved. The GUI will be done using PyGTK. Other technologies involved include D-BUS as the underlying IPC mechanism, GObject etc.

Q.3 : '''What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.'''

Ans : Since overall quite a lot of work is involved including learning many new things, therefore I specially aim to use the preiod between filing my application and the actual begining of GSoc to maximum use. I aim to make my self done with Telepathy's existing source code in this period along with having a first draft of the TP interface to to announce files, retrieves files from contact and request a file in this period only.

Before GSoc


 * As a start I will be done with step 1 and step 2 by April 8. Here is the 'yet to be complete' 0-th Draft of the TP specification.
 * After this I will be starting with TP's source code to get a hang of it. This will be finished by maximum by April end.


 * I will have 2-3 hours/day ( may lesser on few days) in May to start coding for step 3.

During Gsoc


 * Step 3 will be finished maximum by 2nd week of June.


 * After this I will start working on the design and the implementation of the GUI required to use the feature of making files public. This task will be done with by the end of 1st week of July.


 * Having done with the GUI Python code will be written to actually retrieve the files. This will be done by the 2nd week of July.


 * The rest of the July will be consumed for rigorous testing.


 * A buffer of 2 weeks is kept for any kind unpredictable delay.

After Gsoc


 * Find a way to share files locally i.e. via Salut and implement it.

Q.4 : '''Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, school work, and that sort of thing, but be creative. Link to prior work or other resources as relevant.'''

Ans : The biggest asset with this proposal is that this proposal has been a result of intense discussion with developers associated with the parent projects i.e Telepathy and Sugar. Very crucial issues like the viability of the implementation and the actual use of such a project for the Sugar community were taken into account before I actually sat down to write this proposal. Therefore I am very clear about the major tasks that I need to complete. Also I being in constant touch with developers had provided me with a basic approach to actually implement these tasks. Regarding the issue of my personal skills to complete this task, I have been involved in a startup which helped me realise how the principles of Software Engineering are actually brought into action in the real world. Other then this most of the work I am doing in this startup is infact in C, the major language I will be using. Regarding the Python I have done many small/mid-sized projects which make use of each of the libraries I will be needing to conceptualise this proposal. I have also done few projects which were specifically addressing the File sharing (and transfer). This again brings clarity of the process involved. Other then this my wish to contribute to the Open Source community in any way possible (Gsoc or no Gsoc) will be the biggest inspiration that will make me complete this project.

You and the community
Q.1 : '''If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.'''

Ans :

 From myself :

With the completion of this project a very essential feature will be made available to the Sugar Platform. Having the freedom of sharing with anyone any time is essential for such a platform and this project essentially achieves that. Other than this it opens the door for other developers to make creative use of this utility for their own activities. Also it will be a way for Sugar to payback to the Telepathy Community which it makes use of for so many of its needs :)

 From Benjamin M. Schwartz : 

"So what I mean is, this feature, file sharing, has been part of the Sugar design since before Sugar existed." This was said in reference to the discussion : http://lists.sugarlabs.org/archive/sugar-devel/2007-August/003323.html

 From Andrés Ambrois :

If this project succeeds it will be providing a very important missing piece in Sugar's vision of a learning environment, encouraging content creation and distribution in a local, peer-based fashion.

From my experience here in Uruguay, the collaboration possibilities are being largely ignored in the classroom, partially because of infrastructure problems, but also because of the lack of semantically basic functions such as this.

Q.2 : '''Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?'''

Ans : I would like the deployment to be at a near by Government school for the poor since they are the students that are usually isolated from the strength of electronic education and hence have the maximum curiosity to learn.

Q.3 : What will you do if you get stuck on your project and your mentor isn't around?

Ans : I will do the following things in the same order:
 * 1) Search about it Google
 * 2) Ask people on the mailing list and IRC for the solution
 * 3) Will go through the various discussion forums

Q.4 : '''How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? '''

Ans : I will do the following things :
 * 1) Updating the project wiki
 * 2) Sending regular updates on the mailing list
 * 3) Ping IRC and asking users/developers for review

Miscellaneous

 * 1) We want to make sure that you can set up a development environment before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of "Restart." See the image on the right for an example. It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.

Ans : [Here is the prerequisite]

Q.6 : What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)

Ans : XL

Q.7 : Describe a great learning experience you had as a child.

Ans : I was always afraid of maths during childhood and never used to score good in the subject. Then at a certain time I watched this show on Discovery where they were showing how to visualise maths problem in head. I adopted that methodology in Maths and their has been no looking back. This proved useful not only in maths but in other subjects especially Physics.

Q.8 : Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more? Ans : No