Nepomuk is useful, but is it useable?

October 3, 2009 by mat69

Lately there where some blogs on Nepomuk and in the comment section there were also some critic points and I want to touch one myself here, the usability.

We have seen that Nepomuk can store (sic) lots of data, lots of “sentences”, like an object has a tag, a date or whatever. That is pretty nice as it enables to connect all that information together.

Problem

Now where I see the problem is that accessing all that information basically works the same way: nepomuksearch:/hasTag:OpenCL

That’s the problem! I do not care to enter these lines to learn the verbs, neither do other users especially if they do not know that they have to do it this way. And I’m not even sure if hasTag/tag is localised, if it is not yeah fun for the regions in the world where they use different letters/alphabets than that.

As you see the problem is not really Nepomuk, but rather the present ways to interact with it as a user.

Explaining what you want

As I’ve posted in a comment of a blog some weeks ago the way searching in my opinion should work is the way you explain something to others. You talk about “London”, your counterpart thinks you are talking about the city, so you say “No, not the city but …”

  • “… a book by Jack London”
  • “… our school colleague Jeffrey London”
  • “… a person on irc with that nick”
  • “… the paper I wrote on London’s homeless people”

It is a trial and error, you throw one term and maybe your counterpart instantly knows what you are talking about and if not you have to be more specific, make connections etc.

The perfect search you should always avoid is “Let’s talk about Jeffrey London, you know who we went to school with [nice so far], who was born on 1/1/1970 in Bram, whose parents were …, whose RNA is.”

Proposal

But this is not to become a troll-entry, so what I propose – actually most likely not do, so drive-by-posting ;) – is imitating and improving Gnome’s tracker search.

Tracker in Ubuntu 7.10 (two years old)

There you have one line where you enter whatever you want to enter, be it names, tags, parts of a document etc. When in their gui you have categories on the left, like “Documents”, “Images” etc., we should add Contacts, Mail, and other categories we find useful, but there shouldn’t be too many.

None has to care about the semantics of a search and as probably most people don’t have thousands of files with “London” somewhere they should find what they want easily.

If they don’t find what they want they can specify one of the categories I mentioned above, add another term to the search term, or in the KDE case they should also have an options-section where they can fine-tune the search:

  • part of filename
  • created (on|before|after|between)
  • last viewed (on|before|after|between)
  • created by (dropdown list with people who were found in the search as author etc.)
  • etc.

And that’s not all, there could be an automatically created section with nepomuk categories that were found with this search like:

  • Tag
  • Contact
  • Mail

essentially this could be merged with the categories mentioned above, though there should be a fallback e.g. if Strigi did not index a file-yet there should still be a category “Images” with it inside.

That should give them results very fast. The target should not be to create the “perfect search” where you get what you want on first try, but rather to have a good starting point where the user can narrow the results down if they want or need to.

GSOC-project

Yes I have read about the gsoc projects for nepomuk and like the changes on the search (I’m not sold on the loading/saving), though judging from screenshots (!) it still rather tries to implement a perfect search rather than adding means to improve the non-perfect result.

Backdraws

Yes with all that you would not be able to use all of Nepomuk features but you will be able to use it, everyone will be.

It would be a starting point where improvments could happen, there is no sense in waiting for KDE 4.4++ or whatever to have a nice desktop search, if the capabilities are there already.

Please make Nepomuk useable, you can make it perfect later on.

GSOC KGet — wrapup

August 18, 2009 by mat69

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. :D

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.

[2] http://github.com/mfuchs/kget-gsoc/tree/GSOC/master

GSOC status

July 6, 2009 by mat69

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!

    transfersettings

    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 :D – 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.

    mirrors

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

    rename

    Rename files whenever you want

    after rename

    Choose a useful ending ;)

    verification

    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 by mat69

    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)