Contents

About

Beagle is a participating project in the Google Summer of Code program, which sponsors student development of open source software. Visit the GSoC FAQ to learn more about the program, in particular what it is and why Google does it.

Projects

The projects for 2007 have been chosen!

A Xesam-based D-Bus interface for Beagle

Student: Arun Raghavan
Mentor: Joe Shaw

More details about this project can be found at BeagleXesam. This will also eventually include status updates.

Abstract

Currently, Beagle uses an XML-based interface over Unix sockets for it's communication. Specifically, clients talk to the Beagle daemon (beagled) with messages to (a) index data, and (b) perform queries using this interface. This project aims to use the search interface defined in the Xesam specification over the D-Bus message bus system.

The advantage of such a system is that if each desktop search application, such as Beagle or Tracker supports this interface, then client applications do not need to write code to support each search backend that it wishes to support.

Additionally, it is also desirable to see if such an interface would provide performance benefits over the current XML-over-Unix interface, in which case it could also serve as a replacement to the existing system.

Thunderbird Backend rewrite

Student: Pierre Östlund
Mentor: Debajyoti Bera

I have created a wiki page with some more information about my project, Thunderbird SOC2007. If you are interested, don't forget to check out my blog for the latest gossip.

Abstract

The objective is to rewrite the Thunderbird backend to make it more efficient in every way possible. Straightening out various bugs will also be of highest priority. To make the integration between beagle and Thunderbird more apparent, an extension will be written for Thunderbird so beagle-search can open emails and contacts directly in Thunderbird.

Browser Extension Rewrite

Student: Tao Fei
Mentor: Joe Shaw

The Firefox and Epiphany extension for beagle both were written early on and have a number of bugs. The aim of this project is to rewrite both of them.

The new extensions would have the following features:

  • powerful filter (based on regular expression or wildcard)
  • make it possible to index non-html files (images,pdfs,etc)
  • more friendly UI

Abstract

Rewrite the Firefox Extension and Epiphany extension for Beagle. including interface ,jslib (for firefox extension),etc. And add some new feature to the extension.

  1. Persist the firefox extensions enable/disable settings bug 315610
  2. Adding more powerful filters(using regular expression/or wildcards) to exclude/include the URLs
  3. (optional) Introduce an interface(for search) for beagle in the browser(may be only for firefox)
  4. (added on April 7th) index non-html files (images,pdfs,etc) add "drop target" toolbar icon

Details of the browser extension project can be found at Browser Extension.

Mentors and Administration

The main contact for Beagle SoC projects is Joe Shaw. If you have any questions about the program or the ideas, feel free to email him or discuss it on the dashboard-hackers mailing list.

Guidelines

There are a few requirements for any code written for Beagle.

  • It must be licensed under the MIT license.
  • Code must be written in C# except when it is necessary or especially prudent to write in C. No other .NET languages (like VB.NET or Boo) will be accepted, partly due to a lack of mature compiler support and partly due to the increased overhead in maintaining different languages within Beagle's core.
  • Code must conform to the Beagle coding guidelines.
  • For projects with concrete code deliverables, the code must be finished and accepted into the source tree for a project to be considered completed. For more performance-related projects, concrete data with suggestions on how to improve the project may be sufficient. The exact details will be ironed out after your application is accepted.

Applications

To participate in the Summer of Code program, you need to apply. The application process has closed for the 2007 program. For future reference, below are some comments on the application process.

When applying, please be thoughtful and put effort into your application. A well-written and reasoned application will draw much more attention than a poorly written, single paragraph one.

Keep in mind that the Google Summer of Code program is essentially a summer job, and you will have many of the same responsibilites as working a 'real' job. If you won't be able to dedicate several hours a day of work on your project, please don't apply.

However, the GSoC program is a mentoring program, and you will have help and guidance along the way. Don't be afraid to mention shortcomings or things your are unsure about in your application.

The application period is short this year, but try to familiarize yourself with the code if you can before applying. Technical details and sketched out ideas are more appealing than blue-sky projects. At the end of the project, we're looking for concrete code that implements your idea.

The Drupal project, which has participated in the program in the past, has a fantastic page on how to write a good application. The Mono project also has some excellent suggestions. Now that the GSoC program is two years old, there is a wealth of information about the application process out there that can help you. Use Google. ;)

Ideas

Now, the fun part. Here are a list of ideas that we've come up with. You're not required to do any of these, but these are areas that we've identified as being challenging and needing an eager developer to step up and take on.

You can also look through the enhancement bugs in Bugzilla for ideas. Most of the items listed there aren't big enough for a summer project, but you may be able to find a few of them that you wish to tackle (more backends and filters, for example) or inspiration for something bigger from them.

GtkFileChooser Integration

Kde already supports searching beagle from the file chooser through its kio system, however gtk/gnome still does not offer universal file chooser integration (only nautilus). There is a patch-in-progress here, part of this would not just be creating a patch that allows searching, but working with the gtk developers wishes enough to get this slated for acceptance upstream. This may be a candidate for a Gnome/Gtk SoC project as opposed to beagle, as most of the code would be related to gtk.

Update: This is a Gtk/Gnome project realistically, see their SoC page here for details. However, as mentioned under the Gnome Project listing, we here at Beagle would really love for this to happen, and would love to help whoever chooses to take this as much as possible.

Browser Extension Rewrite

This covers both the Firefox and Epiphany extensions, both were written early on and have a number of bugs filed against them in Bugzilla. Both need a complete rewrite if at all possible.

Dashboard

Dashboard is nearing a more usable state, but still isn't much in terms of actaul usability, the SVN repository at this site is the result of last summers efforts. http://code.google.com/p/dashboard/

Thunderbird Backend Cleanup

The current implementation of our Thunderbird Mail indexing backend is a buggy memory hog. Most of this comes from our mork implementation, rewriting the mork parser to be memory savvy and writing an extension for Thunderbird so that mails can be opened from interfaces like beagle-search more eligantly would be much appreciated.

Test Suite

We have two test suites in Beagle. One is called 'bludgeon', and it runs stress tests against the Beagle daemon and checks results. That suite is included in the Beagle source distributions. We have a second one, out of tree, that can be used to test filters and backends, with some basic sample data. Unfortunately that suite is not very comprehensive, nor does it test a lot of "broken" files.

We could use any help in the testing area we can get: improving the existing suites; writing code for testing specific, small pieces of Beagle; testing the compatibility of the message system between the native C# implementation and the C one, etc.

User-driven Metadata

Allow beagle to use Lucenes metadata storage system to its fullest to create a system for the input of external metadata. A nice example of this might be tagging integration with Nautilus.

Update: Joe recently checked in support for this so just be aware when applying that the framework for this is in place, its up to you to do something cool with the UI, or integration into other applications.

D-Bus Interface

Enable searches against beagle through a dbus interface, if at all possible, allow the input of indexables through this interface as well. (A full implementation of the BeagleClient API would be ideal)

There is a project for a standart for this on freedesktop: http://wiki.freedesktop.org/wiki/XesamAbout The timeline is fitting Googles SoC pretty well. Some discussions are happening on starting to implement it are here: http://lists.freedesktop.org/archives/xdg/2007-February/thread.html

Joe said he'd love to see this implemented initially as an external adapter which basically translated Wasabi stuff into Beagle calls and vice versa (in C#). That way we can see how suitable the spec is in terms of user experience, and it'll give us an idea if D-Bus is suitable for this type of use. (Two years ago when we were last using D-Bus, it wasn't.)

Mail Backends

We have requests for both Sylpheed-Claws and Opera M2 mail backends, both systems use fairly generic means of storage, and existing backends such as evolution and kmail should provide good templates. Create backends to index mail from both or either client.

Sqlite Provider

Update beagle to use the System.Data.Sqlite implementation provided by http://sqlite.phxsoftware.com/ as opposed to our current system.

Advanced Query GUI

Allow more advanced query features in beagle-search such as selecting date ranges, or querying specific keywords as provided by the beagle backends.

Different result sorting in GUI

Allow sorting the results according to date modified, file name, document name, directory, etc.

Remote Device Indexing

Design and implement a comprehensive solution for indexing the contents of external storage devices. Such as iPods, USB Drives, External HD's, Cameras etc.

Other Ideas

  • Memory Reduction/Performance
  • Most any common bug in bugzilla (if its a large implementation, or several smaller bugs)
  • Almost any major backend that beagle might be missing

This page was last modified 17:28, 30 July 2007. This page has been accessed 28,462 times.

  
MediaWiki

Copyright © 2004-2007