Posts Tagged ‘GSOC’

GSOC KGet — wrapup

August 18, 2009

Now that GSOC is over everyone expects to see the results, so here you go. 🙂

The last few weeks were mostly filled with improving the newly added features and adding some small features here and there. I was able to fix lots of bugs in my code I sometimes experienced and hope that the user experience won’t be that bad. 😀

KGet now supports:

  • multisource downloading
  • changing the destination of a download while downloading
  • adding/removing mirrors to downloads while you download and changing the number of connections to the mirrors
  • adding checksums to downloads and manually verifiying them
  • automatically searching for checksums on the server (by e.g. appending .md5 to the url)
  • automatically using present checksums to verify a download that finished
  • repairing a broken download (redownloading foul parts or whole download)
  • Downloading a metalink you can define which files should be downloaded and which not, can be changed later in the transfer settings
  • some data is passed from Metalink to Nepomuk, like Publisher etc.
  • MetalinkCreator –> an assistant to create metalinks, currently it is based on the most recent Metalink Draft (v. 12 — not all parts are supported in the GUI yet) so it is bound to change — I’ll probably show a video of the metalinkcreator in action once I have time
  • the parser used to parse the metalink files does also work with “old” metalink-files (v. 3.0 2nd edition) so it could be used to convert them to the new format

Having digital signatures support and a Bittorrent-TransferDataSource did not made it in though.

That’s a wrapup of what I did, I probably forgot a lot as it has been so much code: the diff has ~18.000 lines, more than 10.000 lines have been added a lot of comments, ui stuff and some code ;). [1] Interested people can look at the code here [2], an instruction can be found on the KGet-Ml in the “GSOC — Review”-thread. And yes, in fact it is planned to push all that to trunk, currently the code is being reviewed and changes are made to it.

What will the future bring? I am going to continue to work on KGet and plan to add some features, though the pace of changes will be a little slower now.

Thanks to my mentor Urs and to Lukas who helped me on my way along.

PS.: I’m a lazy blogger. I like writing code more than writing about writing code.

[1] Yeah, I’m proud of my work. 🙂 I didn’t think that I would end up writing so much.



GSOC status

July 6, 2009

Downloads other than bittorrent can have multiple files now, metalink uses this, I did a file-model for that.

So now you can

  • rename files of a download while you download
  • change the download location while you download
  • add/remove mirrors and change the number of connections to the mirrors while you download (bittorrent not supported yet)
  • automatic search for supported checksums (e.g. md5, sha1 etc.) –> that is an own plugin
  • manually adding checksums to a file
  • automatic verification of the downloads (no gui yet)
  • I guess most work went into datasourcefactory to make all of the things mentioned above possible. Also much I added so far is only used by some plugins or is not shown in the gui, but I’ll change that in the future.

    The following screenshots (is there something more interesting? O_o) show some gui-parts I did, feedback on them is welcome and appreciated!


    The transfersettings showing all files of the download. NOTE: The checkboxes do nothing at the moment

    I used a metalink I manually created in the example above (the greyed out parts were there before) – most metalinks are for large files and I got sick of downloading a cd-image every time I test something 😀 – the metalink-plugin uses some of the xml-tags of the metalink-specification, though many are still missing.

    Btw. I renamed “Current Destination” to “Download Destination” to make it more clear. There you can move downloads to different place. The folder structure (if there was one created) is not removed though as the user might have added files to these folders. Maybe I’ll make make that more clever in the future (most likely after GSOC), like a check if there are any non-download files in these directories.


    You can manually add/remove mirrors or change the number of simultanous connections to mirror


    Rename files whenever you want

    after rename

    Choose a useful ending 😉


    Manually add verification information or verify the file if you want

    In fact I did also lots of testing and found many errors in my code, depending on the changes some testing was useless a few commits later – but I like if everything is compileable and works mor or less. So I probably downloaded more than 20 GB just for testing. That does not mean that there are no bugs or problems though e.g. downloading is slow atm.

    PS.: git rules
    PPS.: git rebase -i rules even more
    PPPS.: Thanks for the help you gave me on the irc channels!

    Hi planet!

    July 6, 2009

    Hi there,

    my name is Matthias Fuchs and I am working on KGet as my GSOC-project. I know GSOC has started a “few” weeks ago but rest assured I started before GSOC started, I’m just the incarnation of a lazy blogger.

    Applying to GSOC was a very sponatous decision, on the one hand I came to know on short notice that I had time in the summer and on the other hand I was in search for a new challenge as I consider the comic applet — that introduced me to KDE developement — mostly feature complete (imo!) now. I know there are some bugs as well as feature requests — most of these are also on todo lists I did months ago — left and I’ll look into them when I have time.

    Good, so what will I work on, what did I work on? The most important part will be the implementation of a better metalink-support and thus implement adding additional URLs to downloads to speed them up, multi segment downloads, “repairing” (redownloading foul parts) of downloads via using md5 or sha1 etc. Some of these parts are already there, some need more work on them and others need to be implemented from scratch.

    As soon as I applied I started coding on some of the small ideas I had, these were mostly improvements to the GUI, shortcomings I experienced as a user.
    I improved the “Import Links” dialog — filtering works really nice now — activated the Nepomuk support [1] and improved it. Now you can not only tag and rate files (that was mostly there but not activated) but also add custom tags and tags to your download groups.
    The other things I changed were mostly minor things.

    PS.: This is my first blog entry ever (!), in general I do not like or at least I think that I do not like writing such kind of stuff.
    PPS.: The next blog entry will contain what I already did up to this point, parts of this entry have been written weeks ago and I simply was not motivated to publish it (see the PS above 😉 )

    [1] Many parts were there thanks to boom1992 but it constantly crashed, I “tracked” that down to the CMakeList.txt file, though I have to admit that happened more on coincidence than on knowledge (still do not know why it did not work and I fear that some problems are still left)