[Kget] Google Summer of code proposal on KGet

Lukas Appelhans l.appelhans at gmx.de
Thu Mar 27 17:44:13 CET 2008


Am Mittwoch, 26. März 2008 19:50:34 schrieb Ningyu Shi:
> Hi everybody,
Hey :)
>     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
Cool :)
> -----------------------------------------------------------------
> =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, 
We have that option already in KDE4.1-trunk...
> 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.
Cool, the sidebar could be a really great improvement for advanced users. For 
the group settings we already have a simple dialog, this should/could be 
extended then :)
>
> ===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.
Ok, the "Number of Threads" settings should be handled by the Plugins itself, 
the others in core/ (probably, perhaps an option to override)...
>
> ===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.
Ok, I'm currently working on this... we have transferdatasources, which get 
data from other transfer-plugins and I'm currently working on a 
DataSourceFactory, which downloads from different DataSources itself, so you 
only have to do:
DataSourceFactory().addDataSource(KGet::createTransferDataSource(url));

Anyway, that's a lot of work to do all that chunks stuff, so we can work 
together on this (and get it in a good version into 4.1)...
>
> ==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.
Great! :)
>
> 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?
I really like it... :)
> 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?
I'm not sure, perhaps Urs can comment?

Regards

Lukas
>
> Thanks a lot!
> Regards




More information about the Kget mailing list