If you want to hack on seahorse, please ask on seahorse-devel@lists.sourceforge.net.
Patches are preferred, and should be submitted on bugzilla.gnome.org if possible.

For a todo list, first check bugzilla, then look at TODO. Bugzilla is also updated 
with possible enhancements and any current bugs.

Here is a description of the modules:

 o agent: GPG Password caching agent

 o bonobo: Bonobo servers. Currently there is the only the Nautilus Context Menu 
   server. Bonobo is being phased out of usage, and as such nothing new should 
   probably go in here.

 o data: Data files that need to be processed. Current this is just schemas. They 
   are here because there will be multiple schemas files to separate the app and 
   pgp settings.

 o libseahorse: Common library code for seahorse. This should not depend on other 
   code modules (read: not data), and other code modules should only depend on this 
   (or bonobo servers). Any code that is depended on by multiple modules, such as 
   src/ and plugins/nautilus, is placed here. Currently this includes 
   SeahorseContext & keys, operations, and common dialogs.

 o plugins: Contains subdirs for any possible apps in which seahorse can provide 
   a plugin. Currently this includes nautilus and gedit. Future possibilities are 
   AbiWord and Gaim.

 o plugins/nautilus: This doesn't really contain nautilus targetted code, but 
   nautilus/file-manager oriented code that doesn't go anywhere else. Currently 
   this is just a control center capplet and mime data. 

 o plugins/nautilus-ext: An extension for Nautilus 2.10 and later.

 o plugins/gedit: The gedit plugin.

 o src: The main app code. This currently includes the main window & dialogs,
   along with code that hasn't been deemed necessary to include in libseahorse.


USING THE GPG EXECUTABLE DIRECTLY

Unless absolutely necessary seahorse limits itself to using the functionality 
found in the GPGME library. This is to prevent maintenance, versioning, syntax
and regression problems that arise from parsing the gpg executable output 
directly. 

In some cases the GPGME doesn't have a given feature that is necessary for 
Seahorse's operation. This may be due to the GPGME developers not having 
implemented that feature yet, or refusal to implement a given feature. In 
these cases direct use of GPG is permitted. Such cases must be documented 
below, and must be discussed before hand on the seahorse-devel mailing list.

 o seahorse-agent implements a gpg-agent compatible assuan interface. It also
   depends on figuring out where the GPG home directory is and modifying 
   GPG options (see below).
   - agent/*
   
 o The Backup Keyrings feature accesses the ~/.gnupg/pubring.gpg and 
   ~/.gnupg/secring.gpg files directly. 
   - src/seahorse-key-manager.c
   
 o There is code which modifies the ~/.gnupg/gpg.conf GPG configuration file. 
   - libseahorse/seahorse-gpg-options.c
   
 o Photo ID support
   - (not yet implemented) 
   
 o Export Secret Key Support 
   - (not yet implemented)

last updated 2005-04-16
