Holy crap!!! My extremely half-ass summer of code proposal was accepted?!? I have to say that I'm a little surprised. I submitted a proposal to the Beagle project entitled Networked Searches in Beagle. Here are the details:
I would lovepost to extend Beagle to
use Avahi to advertise beagle
running on a workstation, and allow other computers to search its
indexes in a fashion similar to music sharing
in Rhythmbox.
Deliverables
Timeline
Authentication and Setup
Authentication would be comprised of a cryptographic
challenge/response system using pass-phrases and keys. Once two
nodes have been paired up, they will automatically talk to one
another when they are on the same network. A "Sharing" or "Network"
tab could be added to beagle-settings, which would allow the user to
enable searching on the local network, and sharing local indexes
with other computers.
When beagled finds another host sharing its indexes, the user would be
notified, and given the opportunity to perform an initial
authentication. If the automatic notification is too annoying, then
the user could have some means of finding other computers to pair up
with. Beagle daemons on remote machines will communicate via XML-RPC.
Searching
When searching in beagle-search, a query is sent to beagled, and
beagled forwards the search to any hosts on the network that have been
authenticated in the past and are currently available with shared
indexes. Any nodes that require no authentication will automatically
be searched.
For live queries, any nodes that leave the network or are no longer
available will be removed from the results. Any new node that becomes
available during a live query will be sent the query and any results
will reported. Remote Beagle daemons will treat these live queries
just like a local live query on that machine, and will send new
results to the node that made the initial query until the remote live
query ends, or the node that made the initial query becomes
unavailable.
User Interface
Any remote hits will be displayed in such a way to indicate that
they are from a remote machine. They can also be hidden by a
disclosure triangle, and will only be shown if there are available
results. For example:
Double clicking on a hit from another computer might be tricky. Maybe
using HTTP to download the file from one host to another. The file
could either be copied to a /tmp directory, showing some progress
dialog until it is copied and then opened, or just using
GnomeVFS. Itwould also be useful if the user could also drag and drop
any remoteresults to a nautilus window or the desktop, which would
copy it tothe local disk.
Non-file Data
The original webservices implementation for Beagle only handled
file queries. It would be interesting to find a way to handle remote
chatlogs, webpages and emails.
Me
I am finishing my third year of undergraduate studies at California
State University, Sacramento, where I am majoring in Computer
Science. I've been using GNU/Linux on the Desktop since 1999, and am
passionate about free
software. See my resume for more information.
As for my .NET experience, I have been using Mono since its 1.0-beta
release, have been loving it ever since. I used Mono to develop
several in-house Gtk# applications at work, and a charity raffle
system for a large annual charity
event in California.
As a casual GNOME contributor, and a Beagle user since 0.0.[89] ish, I
would love to have the opportunity to hack on Beaglefull time this
summer. Beagle is one of the most interesting components of the GNOME
Desktop, and I would love nothing more than to help make it more
useful for the community.
Summary
Avahi service discovery implementation complete. Design completed for remote message passing interface, and partial implementation.
Message passing interface completed. Holmes extended to perform remote
queries and fetch data from remote hosts.
Congratulations to all of you other students out there who were also accepted, and thank you so much Google for working so hard to make this happen. And most of all, thank you Joe Shaw and any other mentors for the Beagle project for giving my proposal a high ranking.