Monday, June 27, 2011

Project Integration in Nepomuk - My project in Gsoc 2011

Ok time to start blogging again this time the reason : Google Summer of Code 2011 + KDE + Nepomuk.Its a bit too late for me to be writing a 'introductory' blog post about the gsoc, but better late than never.

The project is called Project Integrator (or Project Manager) to give you a brief idea, en excerpt from GSoC 2011 Nepomuk Ideas Page :

One lands up working on various different projects. It would be beneficial if Nepomuk could keep track of Projects. This would include remembering which files were involved, the people involved, TODO lists, etc. One of the most important aspects would be a form of browser integration, as research for a project is primarily done through a browser. There should be ways to annotate web pages, bookmarks, and even selected parts of a web page.

State Of the project right now

This is the (rather ugly) GUI at the moment, it'll get changed after I'm done implementing all the functionalities.


What is it capable of doing at the moment:

  • Create 'Projects' (in nepomuk its stored as something called PIMO:Project)
  • List out all the Projects in nepomuk (also list out other things like notes,Persons,tasks etc.
  • Double Click and select a 'LiveProject' : The concept of live project is central here, more on that in a while.
  • Drag and drop text snippets, Web Urls, Any kind of files and the project manager will store it in nepomuk in 'proper' association with the current 'Live Project'
  • Open filedialog and associate files with the project

Why would you want to use it?

The concept of a live project presumes that one is working on one project at a time, say I want to start working on the Gsoc project: I open up the project manager. List projects and double click the Gsoc project. This sets Gsoc project as a live project. What it means is whatever you drag and drop in the project manager will be associated with the Gsoc project (until you change the project). When i say associated I mean, a nepomuk resource for that dropped file/text/webpage will be created and associated with Gsoc project. When you start working on another project you can just double click another project and set that one as the live project.

What is in scope for coming few weeks:

  • A plasmoid! : its not really convenient to keep the project manager window open and adjust your current window just to drop some weburl to the project manager. I tried a system tray icon but then realized it doesn't support darg-drop (if you know a way to do it, please let me know). So a plasmoid is the way to go. You don't need the window open just drag and drop things in the plasmoid
  • Ui for browsing the resources related to a project: Ui is not very neat at the moment. It needs work and some way to browse all the resources related to a project.

Tell me what you would want!

This project is something everyone of us can use. It would be awesome if you can suggest features to add, concerns about GUI, or ANYTHING.

Project Repository : git://anongit.kde.org/scratch/swairshah/projectintegrator.git

my IRC nick is swair, I hang out mostly at #kde-in , #nepomuk-kde on freenode.If you have ideas, comments or concerns about the project just drop in a mail at the nepomuk mailing list.or my personal address swairshah at gmail dot com.

19 comments:

  1. Thx for this nice overview about your project. One question though:
    What are the similarities of your (live) projects and the Plasma activities? Don't they overlap somehow? Did you talk with the Plasma guys?

    ReplyDelete
  2. Hi Swair. I have a very real use-case that can help focus your efforts. I am a post-doc researcher in geophysics. For each project I take part in, I set up an activity.
    Here lies the first request: allow the activity name to be the pimo:project name.
    Secondly, I set up several folderviews pointing to:
    1) Relevant computations and results folders (My computer should know that this folder belongs to the project)
    2) Relevant text and figures folders for the manuscript of the associated scientific paper being developed. (Another thing my computer should know about.)
    3) A folder with links to relevant literature, ususally pdf's in a specific folder, cataloged in a bibtex file. At this point I need to do the linking myself but allowing to just drop files into this folder should allow me to relate-them to the project.

    What I think would be awesome to have:
    1) lionmail widget showing a condensed view of all the e-mails (old and new) related to the project.
    2) Todo list with only todo's associated to the project;
    3) akonotes/kjots widgets for the project;
    4) widget with related contacts;
    5) Dragging and dropping to activity associates with project;
    6) Last but not least, a way to pack all related things (documents, pdf's, images, mails, contacts, notes, im conversations, ...) into a neat tar-ball. Maybe a predefined/standardized package structure could help here. Some (non-reusable) things should be deleted after packing; some other things (reusable for other projects: contacts, bibliography,etc.) should be kept.
    Can you see my idea, here?

    I know some (most?) of this lies outside the scope of your project but I think it is worth to bring it o your attention, anyway. Thanks for your work and the best of lucks.

    ReplyDelete
  3. Hi!

    First of all, I want to say I really appreciate your GSoC project. It's something I would use a lot, and it would take Nepomuk usage a step further. Because of this, I would like to share some ideas with you, in order to better develop this functionality. For example, have you ever heard about Etoilé (etoileos.com)? They have a concept of Projects in many ways similar to yours, but it seems to be more complete and powerful (although they don't have such a powerful tool as Nepomuk). Unfortunately, their web page isn't as informative as it could be. But if you are interested, I would be glad to present you the basic concepts.

    ReplyDelete
  4. Drag-Drop:
    It should be possible, I did something similar (python):

    def dragEnterEvent(self, e):
    e.accept()
    self.applet.showPopup()

    [from main.py http://kde-look.org/content/show.php/Drop2Tag?content=111943]

    /nik

    ReplyDelete
  5. For drag-drop, have you thought of using an always-on-top window?

    Anyway, a plasmoid would be more convenient.

    ReplyDelete
  6. I've always wanted something that helped me keep track of "projects" and gather information, I tried setting korganizer todos and add information that way but it was useless, it wasn't flexible enough, this seems to be the kind of project I was waiting for.
    I know this have to do with nepomuk, but each time I hear of an app using It I can't stop feeling some part of the database files will get corrupt and it will die.
    Can't the data specific to projects be in a different file in the disk?, it would be awesome to be able to save load this (load means adding to system nepomuk).
    I'm also thinking of 2 features which would be awesome.
    1-Integration with calligra, It would be nice to be able to see previews of calligra documents under a specific section. And maybe a button in the app to start calligra, So it's seamless to add and view brainstorm documents from "braindump"(calligra app) and images from karbon or krita.
    2-Password protection, I'd also like to be able to make some "diary" project, which is only readable with a password (Also for the diary usecase, it would be nice if the list was browsable by date).
    PD: Is there any "bugtracker" for this application?, I would like to help reporting bugs and stuff, and also If I'm able to understand the code help with some bugs squashing.

    ReplyDelete
  7. At someday I hope having a project management where I can open a KWin's presentation effect where I see every open window and I can drag'n'drop side of the screen project tags to them and they get assigned to the apps and their open files.

    Or then I could just get same effect to show all files about the project.

    ReplyDelete
  8. @unormal Though you can say they are kind of similar (the activities and project manager), project manager is more about associating 'things'(files,contacts,webpages..) with projects and keeping track of them. Also the concept of an activity is a bit more generalized than that of a project. There can be a large number of projects, some in one activity some in other, and a limited number of activities. Interestingly there are plans to integrate the plasma activities with nepomuk in future.

    ReplyDelete
  9. @LuísAs in mentioned in the above comment there are plans to integrate activities with nepomuk, and in turn with project manager. What you said will be possible then. Also i would like to point of that though there is no suppor (yet!) to associate a folder with a project, which is 'project aware'. You can have a folder view point at a pimo:Project, by setting the Url to the nepomuk:// url of the project. What you mentioned would be really cool to have. I'll be working on that for sure. Thanks a lot of the ideas :D

    ReplyDelete
  10. @abouthey i just had a look at the Etoile website, you are right its not very informative. I would really like if you could introduce me to the basic concept.(btw do you use it? and any chance they use a semantic database - RDF store?).It would be nice if we can talk this over mail if possible.I couldn't find your mail address on your profile. can you please drop me one at swairshah at gmail dot com? thanks :)

    ReplyDelete
  11. @nik do you mean drag-drop in a system tray icon? 'cause i stumbled upon this and didn't try anything further.

    ReplyDelete
  12. @Aditya Bhatt yes plasmoid would be more convenient, though in addition to that here is what i think: the plasmoid would be just for small jobs like drag-dropping stuff. If one wants to browse/modify resources related to a project-do 'bigger' jobs one would open up the project manager. Also project manager need not be running for you to use the plasmoid.

    ReplyDelete
  13. @damian there is a thing called nepomuk backup. Though it takes backup of the whole nepomuk database. I would like to provide support to take a back up of data related to a project.
    About the password protection: at the moment nepomuk does not support any kind of authentication support. So its not possible - YET. but i think its in the scope. About the caligra integration: you can have list any file related to a project and open them from the project integrator. It should be the same with caligra apps. Though i'm not familiar with braindump and karbon, i'll surely look into it. My git repository for the project is mentioned in the blog post.There is no bug tracker since its a 'pre-playground' project at the moment but you can surely mail bugs to me at swairshah at gmail dot com.

    ReplyDelete
  14. @swair

    yes drop-n-drop on system-tray-icon (and panel-plasmoid) worked the last time i altered the plasmoid.. (your link talks about ms windows.. )

    ReplyDelete
  15. @nik i tried Drop2Tag out, and the drag-drop there is for plasmoids not system tray icon. I quote Volker from the link i sent "No chance to get drag’n‘drop working with pure Qt, at least not in a platform independent manner.
    QSystemTrayIcon is “only” a QObject, not a QWidget and therefore does not have setAccptDrops()." Though it does work on Mac, not on linux or windows.Though if you can confirm the contrary please let me know. thanks!

    ReplyDelete
  16. @swair: "project manager is more about associating 'things'(files,contacts,webpages..) with projects and keeping track of them."

    this is actually no different from activities. this is most visible in Contour, part of the work for the tablet UX in Plasma Active.

    "Also the concept of an activity is a bit more generalized than that of a project. There can be a large number of projects, some in one activity some in other, and a limited number of activities."

    while an activity may be more generalized in concept, i'm not at all sure that the distinction you make is accurate. (in fact i'm 95% sure it isn't. but perhaps i'm missing something in your description of the project.)

    "Interestingly there are plans to integrate the plasma activities with nepomuk in future."

    in future? we shipped inital support in 4.6, it's expanded for 4.7 and in Contour the integration is very deep between activities and nepomuk.

    perhaps we (plasma team, you and your GSoC mentor) should get together to discuss things a bit so we don't end up with duplicated efforts?

    ReplyDelete
  17. @Aaron J. Seigo ,ah well i guess i should have had a talk with the plasma team before posting it. I had a talk with my mentor (Vishesh Handa) on the topic a while back. We think though there are overlaps, the concept of project is semantically different than that of activities. Also I have not used activities in a manner that would keep track of all files or something. I still run 4.6, i'm yet to check out 4.7. You are right we should definitely have a talk. I'll talk to Vishesh and we'll do it soon. Thanks a lot of pointing these things out :)

    ReplyDelete
  18. I think, from a user point of view, this project and activities are at a different level of abstraction.
    For example I would make a "summer vacation slideshow" project, but I would make a "photo" or "video editing" activity.
    Also do activities show/will show files related to it in some manner?

    ReplyDelete
  19. @swair
    What is the exact syntax for the Folder view to show project related files? I tried nepomuksearch:/?query=pimo:myProject but it doesn't show anything.

    IMO Luis gave a very precise description, that's exactly how I would dream of using activities and projects together. I actually would add the browsing history per activity to this list but maybe that's pushing it a bit :-)

    A funny think I noticed when playing with your application. Before compiling projectintegrator I had already tagged some email with project names in KMail2 and have assigned an icon to the tag. When I created a project in projectintegrator with the same name (as the previously existing nepomuk tag) it actually displayed the icon of the nepomuk tag next to the project name. On the other hand projects I set up in project manager don't show up as tags in dolphin or kmail2.

    ReplyDelete