GSoC: Konqueror Bookmarks with Akonadi and Nepomuk

Eduardo Robles Elvira edulix at gmail.com
Tue Mar 31 08:46:41 BST 2009


Name: Eduardo Robles Elvira

Email Address: edulix at gmail.com

Freenode IRC Nick: edulix

Location: Seville, Spain (GMT +1)

Proposal Name: Konqueror Bookmarks with Akonadi and Nepomuk

Summary
=======

Current Konqueror bookmarks system is showing its age. Most of the
main browsers today have a more advanced bookmarking system. Currently it's
easier for a user to search his bookmarks with krunner than do it with Konqueror
itself.

On the other hand we have KDE4 technologies like Akonadi, which allows us to
PIM data in a very convinient way. There's also Nepomuk, which has the potential
of bringing the desktop more meaning and thus better ways to categorize and
retrieve data.

There are already some proof-of-concept of konqueror bookmarks using
Akonadi/Nepomuk, but bothing more. My propposal is to develop a complete
bookmarks system replacement for konqueror ready to replace current one, using
akonadi as the backend-frontend interface, and using Nepomuk as the backend in
which those bookmarks are stored. This idea has been already proposed and
discussed in http://techbase.kde.org/Projects/PIM/Akonadi/Bookmarks .

However, A bookmarking system like that is no better than current one
if we don't
let its power flow to the user. I would also develop a new location bar similar
to firefox awesomebar which lets the user type keywords and find related
bookmarks, a krunner plugin similar to the current one to be able to find
bookmarks using krunner, and a bookmarks editor which exposes all the
new posibilities to the user in a friendly way.

One important point to take into consideration is that bookmarks are
already used
widly in other applications: Konsole, Kate, Okular. The idea is to try to keep
as much as possible backwards compatibility: I will try to reuse and
extend existing
kdelibs/kio API.

There's no doubt  this is an ambitious project, but I will take advantage of my
experience with KDE technologies and Konqueror to make it happen.

Implementation Details
======================

1) Core: Nepomuk storage and Akonadi resource:
The bookmarks will be stored as pages with some semantic data attached to them:
url, title, tags, user rating, usage, date, and full text of the page using
Nepomuk + strigi. This will allow me to easily implement a powerful search in
the frontends (Konqueror, Krunner). The comunication with the backend will not
be done directly, but through Akonadi. Thus, bookmarks will be accessed via
Akonadi Resources.

2) Bookmarks menu:
I will also rework the Bookmarks menu showing not only the bookmarks but also
submenus for recently added bookmarks and most visited bookmarks. There won't
be foders anymore as such: the tags will act as virtual folders. Other web
navigators already work like this, for example Epiphany.

3) "Awesome" location bar:
This is probably the most visible part of the new bookmarking systems from the
user perspective. The location bar will be reworked to search not only in
konqueror's history as it does now but also in the bookmarks, throught akonadi
to nepomuk.

Similar to what Firefox does, adding a new bookmark will be as easy as clicking
in a star next to the url. Clicking again in that star will allow the user to
modify that bookmark, for example adding some tags to it, or even removing the
bookmark. The drop down list with the matches of the user input in the location
bar will have multi-line entries, one line showing the url of the page and the
other line showing its title title. In essence, it will work and feel pretty
similar to Firefox' awesome bar, but it will allow full text search inside the
bookmarks html pages as opera does.

4) Krunner integration:
The awesome bar is similar to krunner in the interface: the user enters some
keywords and using different data sources (konqueror history, bookmarks..)
some matches are found and shown to the user in a list. Because of this
similarity, I will use krunner as a guide for developing the new location bar.

5) Bookmarks organizer:
The user will be able to organize bookmarks using the bookmarks editor. It will
be either the current editor modified to use the new bookmarking system and
allowing user to use tags, etc or a new editor will created as a konqueror
sidebar. Whichever way is choosen, a bookmarks sidebar will also be
needed, and it
will have a search field with filtering capabilities similar to the awesome bar.

Deliverables
============
  Mandatory
  ---------

1. Bookmarks storage using Akonadi to handle storage and sync and
 Nepomuk to handle tagging / metadata.
2. New location bar which allows the user to search through bookmarks and
history.
3. Integrate the new bookmarks in the Bookmarks menu.
4. Integrate the new bookmars in the Bookmarks organizer and/or sidebar.
5. Krunner integration of the new bookmars.

  Optional
  --------

6. Support sync with online services / other sources
7. Use not only tagging but also typing (via Nepomuk): kde.org could be of type
Project, google.com could be a SearchEngine, etc.
8. Merge bookmarks and history (to get history tagging / rating)

Timetable
=========

Now - May 23: read all the documentation related with the technologies I will be
using; namely, Akonadi and Nepomuk. I will set up a working Nepomuk enviroment,
code some small programs to learn how to use Nepomuk and Akonadi, and read the
existing code in Konqueror, Akonadi and Nepomuk related to bookmarks. I will
also talk with KDE usability people to start determining the best user interface
for the new location bar and bookmarks organizer.

May 23 - late June: Develop the core of the bookmarking system using nepomuk
and akonadi and test it. Use it in the bookmarks menu.

late June - mid July: Develop the new location bar.

early/mid July - late July: Rework the bookmarks organizer and the krunner
integration using the new bookmarks system.

late July - August 10: Polish the project and implement missing features.

August 10 - August 24: Write more tests and documentation, finish stabilizin
the code, do some bug hunting, and try to merge into trunk if it's not
there yet.
The code should hopefully land at least partially in konqueror trunk if it
hasn't landed there yet.

About me
========

I'm a last year student of Computer Science in the University of Seville. I have
experience working with Qt and KDE being myself a Konqueror developer,
so it will
be easy and fast for me to make my way in the code because I know it. I like
to implement features in Konqueror that makes life easier, like konqi's session
management which is a child of mine. I have large experience developing in C++
(about 7 years) and I've been writting code for KDE and Konqueror since two
years ago.
I'm completly comfortable with working via irc + email and used to it. I plan
to meet with my mentor during Akademy though which will hopfully be a very
productive week.

Dedication and other obligations
================================

>From now to just a few days before Akademy starts I will have to combine GSoC
with study as I am a CS student, and I am also developing my final year project.
I plan to work in this project for 15-20 hours per week before Akademy. Starting
in Akademy until the end of the project, I will push the dedication to
20-30 hours
per week. This level of dedication should be enough to assure that the project
will be successful.




More information about the kfm-devel mailing list