[Kget] Google Summer of code proposal on KGet

Ningyu Shi shiningyu at gmail.com
Thu Mar 27 03:50:34 CET 2008


Hi everybody,
    My name is Ningyu Shi and I'm new to here:) I plan to submit a
proposal to GSoc this year. The project is about some feature
enhancement on KGet. The proposal is based on the KGet come with KDE
4.0.2. I've downloaded the cutting-edge code from svn but haven't read
through it yet, so I'm not sure whether the 'features' mentioned below
has already been implemented. The original idea is on [
http://techbase.kde.org/index.php?title=Projects/Summer_of_Code/2008/Ideas#KGet
]

Here Comes my proposal
-----------------------------------------------------------------
=Abstract=

KGet is a multi-threaded downloader which can handle http, ftp and
bit-torrent protocol through a transfer-plugin system. Been well
designed with robust basic features, the program lacks some
easy-to-use features which are common among other downloaders. The
project tries to address these problems.

=Detailed Description=

==Project Details==

===TreeView Transfer Groups & Sidebar View===

The transfer group structures of the program are flat and don't have a
per-group based setting now. We propose to make groups into a tree
structure modeling virtual folders. Each group can have subgroups
which will inherit parent's setting when first created. Various
settings can be added to transfer group, e.g. default download
folders, default number of threads used to download and other plugin
based settings. All will be made in a per-group based scheme. The
group structure and settings will be stored in a XML file. Based on
these, a sidebar with a TreeView will be added to the main widget to
show downloading processes in different groups. The properties of
group can also be exported to Nepomuk.

===Ability to Modify Properties of Download Session===

Now once a download session is created, there is noway to change
various properties of it. A right click menu will be added to the
download item which will be able to modify properties based on the
status. If the download session has already started, only the number
of download threads can be changed. If it has not started yet,
filename, URL, download destination can also be changed. The 'New
Download' dialog will also be equipped with these settings.

===Multi-source Download Improvement===

The program already has a search engine to add alternative source to
the download. Different kind of sources including http, ftp and BT
should be able to manually added to the download session. A strategy
needed to be devised to carefully cut the file into proper segments to
enable downloading and resuming from heterogeneous sources also
allowing checksum verification. Special attention will be needed for
BT which has a fixed segment size. A finished download session with
multiple-source should be able to export a meta-link file for sharing.
Repairing a file with a meta-link file can be done in similar way.

==Personal Info & Experience==

I'm a graduate student majored in ECE. My research is about electronic
device simulation. I'm familiar with C++ and have done several
nontrivial projects one of which is an device simulator which heavily
use OO. I have read some tutorials on Qt and went through some toy
examples which make me feel quite comfortable. I've written a tiny
multi-thread project to download bunch of files from some website. The
project is written in python with several downloading threads and a
GUI thread to update the status using PyQt. From that project, I
learned some basics of multi-threaded programing.

I propose this KGet enhancement project because I didn't find a
multi-threaded GUI downloader as good as its windows counterpart like
Flashget. Among the various downloader project under Linux, I find
KGet to be most promising which has a well designed object model and a
decent codebase. Mostimportantly, KGet is under active development. So
I can work with the team to get the job done. I can work for this
project for 10 hours per week.
-------------------------------------------------------------

Can you guys give some comments and suggestions about the proposal?
Since It's my first time to work on an open source project and I'm
only able to work 10hours/week on this project, can this project be
done on time based on your experience?

Thanks a lot!
Regards
-- 
Ningyu


More information about the Kget mailing list