Beagle 0.0.8

I'm pleased to announce the release of Beagle 0.0.8.

Beagle 0.0.8 represents a huge step forward in stability, and contains fixes for
a multitude of bugs and memory leaks.  This is the first version of Beagle that is
really suitable for everyday use. It also includes a brand new web services API to the
Beagle daemon, developed by KN Vijay.

0.0.8 is essentially identical to the version of Beagle that will be included
in SuSE 9.3.


To download the 0.0.8 tarball, visit the Beagle web page at

There is lots of useful information about compiling and using Beagle on the

If you are running SuSE or the Novell Linux Desktop, we have an open carpet
server with snapshots and packages for all of the dependencies:

Joe Gasiorek writes a regular Beagle newsletter.  You can read it at:

Nat Friedman made some cool movies that demonstrate Beagle in action:

The latest gossip is available at:

We still talk about Beagle on the dashboard-hackers mailing list:

Jack Kerouac didn't want anything to slow down his writing, so he typed the
first draft of "On The Road" onto a 120-foot scroll.  That original
manuscript is now on a multi-year, multi-city tour:

Beagle is a tool for indexing and searching your data.  It is in an early
stage of development and should be considered experimental.  Beagle is
improving rapidly on many fronts, and should work well enough for
everyday use.
The Beagle daemon transparently monitors your data and updates the index
to reflect any changes.  On an inotify-enabled system, these updates happen
more-or-less in real time.  So for example,
* Files are immediately indexed when they are created, are re-indexed
  when they are modified, and are dropped from the index upon
* E-mails are indexed upon arrival.
* IM conversations are indexed as you chat, a line at a time.
Beagle uses the Lucene indexing system from the prodigious Doug

Best is a graphical tool for searching the index that the daemon creates.
Best doesn't query the index directly; it passes the search terms to the
daemon and the daemon sends any matches back to Best.  Best then renders the
results and allows you to perform useful actions on the matching objects.

Indexing your data requires a fair amount of computing power, but the Beagle
daemon tries to be as unobtrusive as possible.  It contains a scheduler that
works to prioritize tasks and control CPU usage, based on whether or not
you are actively using your workstation.


Beagle has many dependencies, and thus can be difficult to compile.
It requires:
* The full Mono stack, including Gtk#. (We all use 1.1.4, and you probably
  should too, but 1.0.6 will also work.  1.0.5 and earlier will NOT work.)
* D-BUS 0.23.4
* Evolution-sharp 0.6
* Gecko-sharp
* Gsf-sharp
* Gmime 2.1.13

For the best possible Beagle experience, you should also have:
* An inotify 0.20-enabled kernel


* Added a new web services interface to beagled (KN Vijay)
* Better support for Move events in the Inotify bindings (Robert Love)
* Deal with unmatched Move events (Robert)
* Properly catch exceptions if we try to watch a directory that
  has just been deleted (Robert)
* Handle filenames containing funny characters (Daniel Drake)
* Allow beagled to be started even if X isn't running (Daniel)
* Better handling of GConf exceptions (Daniel)
* Check for null URIs in HitRegulator.Subtract() (Veerapuram Varadhan)
* Lots of snippet fixes and improvements (Fredrik Hedberg)
* Fixed numerous shutdown-related deadlocks (Jon Trowbridge)
* Uri serialization fixes (Jon, Daniel)
* Throw the right exception if we can't set EAs on a file (Jon)
* Removed inotify dependency from the code that processes gaim's
  buddy list (Jon)
* Use Mono.Posix functions to create Lucene's lockfiles (Jon)
* Construct our lucene queries in a more reasonable way (Jon)
* Fixed deadlocks and races in our D-BUS work-arounds (Jon)
* Better disposal/clean-up of unregistered D-BUS objects (Jon)
* Disable broken indexing of nautilus emblems and notes (Jon)
* Don't cache the ignore state of files -- it uses too much memory (Jon)
* When possible, re-use GLib.IdleHandlers to avoid allocations (Jon)
* If a hit is filtered out of the query results because HitIsValid
  returns false, schedule it for removal from the index (Jon)
* Work around dropped FlushComplete signals by polling the flush
  status in a timeout (Jon)
* Added a new property type: properties that are stored but not
  searched by standard queries (Jon)
* Don't allow beagled to run as root (Daniel)

* Lots of file system backend fixes.  In particular, moving and
  renaming files now works in many cases.  (Jon)
* If the gconf key for Evolution accounts doesn't exist, fail gracefully.
* Don't require inotify for the Addressbook or Launcher backends. (Joe)
* Only index launchers with a name (Joe)
* To avoid leaking delegates, iterate across GMime message parts by hand
  instead of using the built-in foreach function. (Joe)
* Make liberal use of 'using' clauses and Dispose() on GMime objects
  to reduce our memory usage while indexing mail (Joe, Miguel de Icaza)
* Use a search pattern when calling DirectoryInfo.GetFiles() so that we
  don't load entries for all of the cached IMAP files into memory
  (Joe, Jon)
* Implemented HitIsValid check for the gaim log backend (Lukas Lipka)
* Changed some non-user-visible properties in addressbook backend to be
  unsearched (Jon)
* Don't index mail headers as text (Jon)
* If we are ignoring a file, ignore requests to remove it from the
  index (Jon)
* Do the right thing when renaming a file changes it's ignore-status (Jon)
* Lots of fixes to the FSW file system backend (Jon)
* Turn off synchronous writes to the sqlite NameIndex db (Jon)
* If we are deferring shutting down the IndexHelper because no
  RemoteIndexerImpl has been closed, wait a bit between checks (Jon)

* Optimized Word document indexing (Varadhan)
* Remove null characters from media tags (Varadhan)
* Skip PPT 4.0 files, because we don't support them. (Varadhan)
* OpenOffice 2.0 support (Varadhan)
* Added OpenOffice 1.0 template and all 2.0 mimetypes to the OpenOffice
  filter (Joe)
* Better handling of GSF exceptions in the PPT filter (Varadhan)
* Index non-ISO characters in Word documents (Varadhan)
* In the OOo filter, keep proper track of "hot" content in the presence of
  links (Varadhan)

* Make PageUp and PageDown work in Best (Wouter Bolsterlee)
* Added a .desktop file (Joe)
* When running Best from menus, start in --no-tray mode (Lukas)
* Skip over session management arguments to Best, they are handled by the
  Gnome libraries (Joe)
* Catch exceptions thrown by snippet requests, so that Best won't crash
  if you flip through the pages of results while the daemon is down (Joe)
* When opening a blog entry, don't kill Best if we can't open a handler
  for the URI (Joe)
* Added --show-window option (Joe)
* Add 'Application' in front of launcher names so it is clear what
  they are (Joe)
* Fix F12 so that it works with numlock, caps lock, and whatever other
  crazy modifiers might be on (Joe)
* Don't crash on non-standard icon themes (Daniel)
* Allow beagle-query to be run even if X isn't running (Daniel)
* Improved command-line argument handling for Best (Lukas)
* Shut down Best properly in non-tray mode (Lukas)
* Fixed arguments in beagle-status (Lukas)
* Open Gaim IRC logs in the IM viewer (Lukas)
* Fixed Buddy List reader error (Lukas)
* IM viewer clean-ups (Lukas)
* Fall back to displaying the filename for untagged media files (Varadhan)
* Display snippets in glorious technicolor (Fredrik)
* Remember Best's position (Fredrik)
* Best tile-rendering fixes (Fredrik)

Everything else:
* Configure-time check for sqlite and dbus headers (Joe)
* Relentless, heroic D-BUS hacking and leak-fixing (Joe)
* GMime leak fixes (Joe)
* Fixed the Dashboard build (Joe)
* Fun with memory profilers (Ben Maurer, Jon)
* monogrind! (Nat Friedman)
* Mono-related hand-holding (the Mono team)
* All the stuff I forgot (All the people I forgot)

It doesn't take that much ingenuity to confuse the file system backend.  In
particular, the right thing doesn't always happen if a file's name changes
rapidly.  (i.e. "mv foo bar; mv bar baz; mv baz foo")

The beagle daemon tends to grow over time, using more and more memory...  but we now
grow *much* more slowly than previously-released versions.  It might
need to be periodically killed and restarted.

Sometimes the daemon or its associated helper process fail to shut down
cleanly.  Occasionally you will need to kill a beagle-related process by hand.

At this point in development, we cannot commit to stable APIs or file formats.
You will almost certainly need to delete your indexes and start again at
some point in the future.

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