GNOME Dashboard
Nat Friedman <nat@nat.org>

Usefulness
----------

The dashboard is not useful right now; you should only be looking at
it if suffer from morbid curiosity or if you want to help out.  Don't
expect it to do anything practical for you.

Indexer Notes
-------------

The indexer requires SQLite.  And you need to make sure you mono
distribution is cool with SQLite.  Specifically you need to have
Mono.Data.SqliteClient.dll.

	* To download SQLite:

		http://www.sqlite.org

	* To find out about integrating SQLite into Mono

		http://www.go-mono.com/sqlite.html


Before you run dashboard you need to create an index.  Run the
index/text-indexer.exe program to build your file index.  Specify
~/.dashboard/backend-data/text-index as your "base dir"; this is where
the indexer will store your index.  Here is an example:

	% mkdir -p ~/.dashboard/backend-data/text-index

	% cd index

	% mono text-indexer.exe ~/.dashboard/backend-data/text-index -i `find ~/Documents -iname "*.txt"`

You can run this command multiple times without corrupting the
existing index.

	* Current Deficiencies

		- Will not automatically index, the command-line client must
		  be run.
		- Will most likely spaz out most non-triumphantly on
		  non-plain text files
		- Will staunchly (if not dirtily) refuse to reindex the same
		  file

	* see also index/README

Resources
---------

    * We don't have a mailing list.

    * We do have a blog: http://nat.org/dashboard.  RSS is at
      http://nat.org/rssdash.xml.

Directories and Files
---------------------

    ./build-applications.sh

	This is a little tool that is supposed to make it easy to
        build all the applications that we patch.  I just wrote it, no
        idea if it's going to work for people or not, I haven't tested
	it since my network is fucked.

    index/ 

        The Dashboard indexer, which is just getting started.

    engine/

            - The main dashboard process.

            - The shared classes.

            - Some handy GNOME bindings.

    backends/ 

        All of the backends, which are DLLs that get loaded at
        runtime.

    frontends/ 

        A collection of patches and plugins for desktop applications.
        Cluepacket sending classes for Python, Perl and Java.  C- and
        C#-based standalone cluepacket sending tools.

    patches/

        These are patches that need to be applied to various
        applications so that the dashboard can work.  These are not
        cluepacket-sending frontend patches; those go in frontends/.

    doc/ 

        A bunch of dangerous, out-of-date documentation.

Coding Conventions
------------------

	- Refer to self-local variables as this.foo, not just as 'foo'

	- If your constructor sets self-local variables, do it like
          this:

		Constructor (int member)
		{
			this.member = member;
		}

	- All public class members should be in StudlyCaps.

	- Never use javaCapitalization.

	- Please read the MCS coding conventions in mcs/class/README.
