Re: Beagle's benefits over eg. Tracker



Hi,

On Thu, 2006-09-07 at 16:29 -0700, Ethan Osten wrote:
> I'm currently about to write an application using a search technology
> like Beagle or Tracker (only the file search parts) and I'm not sure
> which to choose for the task, as both should be broadly suitable.

So, I'm somewhat reticent to list the things Beagle does better than
Tracker because I admit that I don't know a lot about Tracker.  I've
used it only sparingly.  Rather, below I mention a number of things I
think that are strengths of Beagle.

> Tracker currently (and importantly) has tagging, which Beagle (as yet)
> does not. Are there plans to integrate Leaftag or some other solution in
> the near future?

What do you mean by Tracker having tagging?  Does it allow you to set
tags itself or does it just pull tags out of existing sources like
Leaftag?

Beagle does support pulling tags out of F-Spot and Digikam, but we don't
yet index tags from Leaftag, although doing so would probably be fairly
straightforward.

> Beyond that, I'm wondering "what are the palpable benefits for using
> Beagle, especially given the apparent intention of the Tracker guys to
> propose Tracker for GNOME 2.18?" The latter point is particularly
> important, as I don't want to spend the time to use Beagle only to find
> that Tracker is going to win out.

Among Beagle's strengths, though some might not apply to you:
        
        * The ability to pull from a large number of data sources.
        Today Beagle supports files, emails, web history, IM
        conversations, addressbook contacts, calendar items, RSS feeds,
        Tomboy notes, etc.
        
        * Related to this, supporting these other data sources has been
        a core part of Beagle's design from the beginning.  Beagle has
        always been about "ransacking your *personal information
        space*", not just your files.  Currently Tracker only supports
        files so I am not confident the same ideology is codified in its
        design.  But, not intimately knowing Tracker's design, I might
        be wrong about this.
        
        * It is quite mature and widely deployed.  It's been shipped
        enabled by default on SUSE distros since 10.0 (including SLED)
        and Fedora since FC 5.  It's a straightforward addition to
        Ubuntu as well.  This has allowed us to address and fix a lot of
        bugs, especially with difficult and racy file system semantics
        and the wide variety in volume and content of user data and how
        the user interacts with it.
        
        * Beagle is today already supported well by GNOME: Nautilus,
        Yelp, and Deskbar can use Beagle for search and it was the
        Beagle community that drove the development in adding search to
        these apps in the first place.
        
        * Using Beagle in your applications is dead simple.  You can use
        C#, C, or Python with Beagle.  The C# and C bindings are
        typesafe and you can implement a simple search client in
        probably 30 lines of code.  You can also index your own data
        from your app.
        
        * Beagle has "Live Queries", which mean that not only do changes
        to your data get indexed in real time, but those changes are
        pushed out to listening clients so that the search results
        displayed are always in sync with the index.  Inotify was
        basically implemented for Beagle for this purpose.
        
        * Beagle uses a real full-text indexing engine (Lucene) for all
        text searches.  This performs substantially better than any
        relational database we tried for this purpose.  We use other
        methods (extended attributes and databases) to store additional
        metadata about the items being indexed.
        
        * Beagle has an included GTK+ client (beagle-search) and at
        least two external KDE clients.  In addition Novell's main menu
        uses Beagle as does (I believe) the new KDE Kickoff main menu.
        
        * There is a lot of cool additional development going on in
        Beagle: support for Thunderbird was recently added, we'll be
        adding support for networked searches with Avahi, we'll offer
        alternatives for spelling mistakes, we'll be improving our
        metadata support, we'll continue working to reduce our memory
        footprint. 
        
        * Beagle has a large community built around it of developers and
        testers.  This year we sponsored 5 Google Summer of Code
        projects, all of them successful.  If you look at the NEWS file,
        you'll probably see Jon and my names most often, but we have
        many other substantial contributors to the overall design of the
        software and the code itself.  To me, that speaks volumes about
        a piece of software.

I can't speak to how the GNOME community will react to the proposal of
Tracker for 2.18 if it happens.  I've yet to propose Beagle because I
don't think it's quite ready yet, and it's quite a bit more mature than
Tracker at this point.

If I were you and really on the fence, I would probably write code to
use both.  That seems to be the approach a fair bit of software is doing
(ie, Nautilus's search interface) and although you'll have the
additional infrastructure, it'd be pretty easy to swap one
implementation out for another one in the future.  As I said, writing
the code for Beagle is pretty trivial[1].

Joe

[1] Some examples of code using Beagle:

        * The sample C search program:
        http://cvs.gnome.org/viewcvs/beagle/libbeagle/examples/beagle-search.c?view=annotate
        
        * Live beagle search implementation in Deskbar:
        http://cvs.gnome.org/viewcvs/deskbar-applet/deskbar/handlers/beagle-live.py?view=annotate
        
        * Nautilus search using beagle:
        http://cvs.gnome.org/viewcvs/nautilus/libnautilus-private/nautilus-search-engine-beagle.c?view=annotate




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]