This is a (definitely incomplete) list of features/improvements for gpsdrive.
This file helps us keep track of what can be done and who is interested in doing it.
Everyone is invited to catch one of the tasks and start development.
One thing which would be nice; if you drop 
us(gpsdrive@warbase.selwerd.nl)/me(Joerg Ostertag <joerg.ostertag@rechengilde.de>)
a note on the things you want to start programming. 
Not only to synchronize work and circumventing two people trying to solve the 
same problem. But also to check if this feature really fits into the actual plans
and to find out which would be the best way to solcve it in relation to other 
features and plans.

One small comment: We are just planing a major userinterface change/rewrite. 
The plan is, that this change will enable userinterface changes with anjuta and 
glade-2. So if you want to make changes inside the userinterface code you  
might want to wait another 3-4 weeks until these changes have made it into the CVS. 

The easiest for me/us to get patches is:

 cvs co gpsdrive
 cd gpsdrive
 cvs up
 cvs diff -u >name_of_patch.patch

and send the output to the mailinglist.


Ideas for gpsdrive improvement: (unassigned, unrated)
-----------------------------------------------------

- Documentation:
    - writing lots of usefull comments to the existing code.
	- Writing/improving man Pages
	- Translate man Pages
	- Translate in Programm Text (translate in the po/*.po Files)
    - writing and correcting text for the FAQ/man pages
    - Better "hacking" documentation (e.g. documentation describing how to generate
      a "GPSDrive-compliant" raster map from outside of GPSDrive, clear
      documentation on the size and shape of custom icons, etc.).
	- Help translate the gettext strings (po-Files) in to your native language

- Icons:
	- Draw Icons for different Waypoint Types
	- Finding apropriate Waypoint Icons with 
	  an apropriate Licence so we can use them freely
	- Have a close look over the POI-Types and add categories/new types 
	  including descriptions and icons


- Investigations:
	- have a look at gdal and get an idea if we could combine gdal 
	  development and gpsdrive development
	- find POI/Waypoint icons (see above)
	- Find new Map/Waypoint Sources
	- find Data for importing into the new Datastructure POI/streets which 
	  have an acceptable public licence. The second step would then be to 
	  find a way to import this Data into the Database.

- Makefiles/Distribution:
	- include generation of icon Directory while installing gpsdrive
	- update the distribution dependant Files (debian, suse, ...)

- Vektor Map Sources:
	- Find new Sources for Maps with Free Licence
	- Write conversion routines/scripts for these different map Sources 
	  to import them into the local mySQL Database 
	
- Central POI Server:
	We want to set up an central POI(Point of interrest) Server. 
	Idea is: to populate this Server from all the point of interrests
		 you have. 
		Then give the Server a Web-interface(first step) to download alle 
		these POIs and import them into your local DB.
		Further steps will be to write sync-routines to
		sync this local Data with the central Server.


- Modularising:
	- Put every drawing layer into a seperate sourcefile.
	- moving configuration Data into a structure
	- moving actual settings into another structure
	- move more stuff from gpsdrive.c into meaningfull standalone Files
		examples:
		- waypoint.{c,h}
		- gps_handling.{c.h}
		- icons.{c.h}

- Autosave Tracks periodically
	- started: savetrack was seperated and got 
			   option to save only aktuall Track an not track_ALL.sav

- Finding and correcting Bugs in the existing Code.

- make the code more error resistant

- Changing User Interface:
	- move to setup menu:
		save Track

	- move to pulldown menu:
		Start gpsd 
		Download Map
	- rewrite the UI using glade-2 (see above)

- writing code for the handling the POI(Point Of Interest) Data 
  inside the Database.
     - this would be searching an point of interrest in 
       the Database and displaying it on the map
     - having an interface to select what kind of POIs to 
       display at the moment

- Point and measure Mode: Show the lat/lon of a point you clicked on. 
  Click an another point and then show the distance between those two points.

- write routines to import gps Tracks into the Database. The difficulty 
  here is to classify the Data and find corresponding tracks and merge 
  them together. Also to find gaps in the tracks and split them at 
  this point.

- make gpsdrive compile inside eclipse.

- refactor the variable names inside gpsdrive.

- write an interface to use functions like gpsbabel gpstrans from inside
  gpsdrive.

- Autosave Tracks periodically
	- started: savetrack was seperated and got 
			   option to save only aktuall Track an not track_ALL.sav

- Move part of the user interface to a Pulldown menu.

- write track data in smaller steps (every point comming from gps). This 
  would enable us to use these tracks as a data Pool for gernerating our 
  own vector maps

- add an Mode for Displaying position under the cursor and measure distances

- add support for moving the map with the cursor keys if in POS-Mode

- Correct/complete/add-new translations in the po Files

- Add some fields to the waypoints table:  
	- altitude
	- region ("state" in the U.S., "Province" in Canada, 
	  "County" in Ireland, "Island" in Japan, etc.), 
	- subregion ("County" in the US, "Prefecture" in Japan, etc.), 
	- country  
	(GPSDrive wouldn't necessarily use all of these, but external 
	programs might.  I know I do occasionally.  The extra fields don't affect GPSDrive
	but having them created in advance makes it easier to add features.  Silly
	example - perhaps GPSDrive could vary the shade of the line segments that 
	make up a displayed track based on the altitude?...)

- Move waypoint-type-specific information out of "waypoints" and into
  separate tables (e.g. macaddr, wep, etc. into a "WLAN" table.  GEOCACHE
  information in a GEOCACHE table, etc.)  GPSDrive would only need to access
  the basic data in the core waypoints table (except for the WLAN table to add
  information), but external programs can make more use of the extra data in
  the additional tables (mentioned further down this list...)

- Make it work with MySQL 4.1 (aforementioned "select(): bad file descriptor" 
  problem, plus see below).

- Devise a "standard" set of tables for OpenGIS data (lines, polygons, etc) 
  which can be drawn atop the existing raster maps if desired (or used to
  populate a "blank" raster map.)  Someone could work up an import routine
  from the US Census Bureau "TIGER/Line[1]" data, import from Shapefiles, etc.
  [1] http://www.census.gov/geo/www/tiger/tiger2003/tgr2003.html  There's
	  actually supposed to be a new release of this data sometime this month as
 	  well.  I personally have a sloppily-done but functional script that generates
	  GPSDrive raster maps by rendering TIGER/Line "Type 1" (roads) data atop
	  the satellite photo data at various scales.  I'll share it with anyone
	  that wants it, if they promise not to laugh in my face at my really slovenly
	  code.

- Split the database backend out into "plugins" so that users of mapd
  or people who just passionately hate MySQL for whatever reason can use
  PostGRES instead (or maybe Oracle if they're wealthy).  (Presumably a bigger
  challenge, but I think it'd be worthwhile, even if MySQL is plenty for my own
  uses...)

- Have the database fetch waypoints in order from nearest waypoint to current
  location to furthest, and add a configurable limit to the number retrieved - 
  should lighten the load on GPSDrive considerably for those of us with huge
  waypoints tables... (I can supply a very crude patch for this, with a 
  hard-coded limit of total waypoints fetched at any one time.  It has worked
  fine for me and is a very small change to GPSDrive, but isn't very elegant).
  I've been importing USGS GNIS data[2] as waypoints, so even with just a few
  states worth of waypoints it's easy to end up with hundreds of thousands of
  them.
  [2] http://geonames.usgs.gov/geonames/stategaz/index.html  I have a script 
	  to import these into GPSDrive's waypoint table (as modified by myself - see
	  the suggestion about added fields...), and a start on custom waypoint icons
	  for a few of the types.  Eventually I hope to have waypoint icons for all of
	  them.  I'll share these if anyone wants them, too.  Note that the GNIS also
	  has a link to "Foreign" (relative to the U.S.) names: I haven't looked too
	  deeply into these yet, but the files do have a different structure than the
	  GNIS datafiles last time I looked.  However, they should be pretty easy to
	  reconcile with the GNIS waypoint types and write an import script for.  That's
	  on my "to do" list sometime soon, and would give non-U.S. people a possibly
	  useful source for some geographic waypoints.

- Remove fetching of expedia maps (however, see below).  The terms of use 
  for the expedia map servers appear to explicitly forbid what we do with
  GPSDrive, and I'm a bit uncomfortable with what amounts to a "break the law" 
  button built into the program...(see, told you at least one idea would
  be downright blasphemous...)

- HOWEVER...split map fetching out into external programs.  Even simply having
  a field in the configuration to supply program names which get run (with 
  environment variables for lat, lon, altitude, etc. set appropriately by
  GPSDrive when it calls them.)  Anyone with the time, talent, and inclination
  to do so can then easily contribute independent "fetch a map" programs for
  various purposes, in whatever programming language they prefer, without
  needing to mess with the core of GPSDrive itself.  No doubt some horrible, 
  horrible person would make an expedia download program to replace the 
  "built-in" function and thus allow people to commit the terrible sin of 
  robbing Bill Gates of an uncountably-small fraction of a penny of profit by
  downloading maps without permission once again, but what can you do? :-)

- Increase the possible size of the waypoint labels on the map (minor cosmetic
  issue, I just keep running into placenames that get cut off because they're
  too long).

- Similar to the maps, allow "fetch external data" programs to generate output
  from the aforementioned "waypoint-type-specific" tables when the waypoint is
  clicked (I have no idea how hard this would be to actually implement in GTK+).
  E.G. clicking on a geocache waypoint on the map would call up a program that
  fetches data out of the "geocache" table, formats it (plain text?  HTML?), and
  passes it back to GPSDrive to display in a pop-up window.  Clicking on a 
  "restaurant" would do the same thing with the "restaurant" table, and so 
  forth.  The reason I suggest external programs for this is so that people
  can set up their own custom waypoint types and table data.

- Add a configurable per-waypoint-type display "scale range" option - for
  example, when you're looking at a 1:5512 scale map, it's not really helpful
  to have waypoints representing large cities displayed on the map.  At the
  other extreme, WLAN's aren't very helpful at satellite-view scales, and just
  clutter things up.  Being able to set them to "display only below THIS scale"
  or "display only above THIS scale" would take care of that.

- Make it easier to find waypoints that are not currently within the range
  specified in preferences (i.e. if one is travelling a long way and wants to 
  find and select the destination, while the range is set fairly low because 
  there are a lot of waypoints in the area...)

- ADD SUPPORT FOR UTM PROJECTION MAPS!  Possibly remove the "street" and "topo"
  distinctions and instead have selections for UTM, ORTHO(?), and LATLON,
  perhaps?
  I've been trying for some time now to find out what projection the
  Expedia(tm) maps are in, so that I can use gdalwarp to convert UTM maps
  that will work correctly as "street"-type maps, but nobody seems to know.
  Best guess I've heard so far is that they are an "Orthographic" projection.

- Improve Kismet connection robustness.  GPSDrive still locks up for me
  if Kismet dies while GPSDrive is connected to it.  Even better, add a
  "check for Kismet" button and allow GPSDrive to connect to Kismet
  AFTER being started - or to re-connect if Kismet gets stopped and restarted.

- A function to overlay raster data atop the existing displayed map - for 
  example if I find a way to fetch weather radar data while driving around, 
  maybe I could have GPSDrive draw the weather activity atop the current
  map, so I can tell if I'm going to outrun the storm...


-----------------------------------------------------------------------------

Development in Progress:
------------------------

-----------------------------------------------------------------------------

ChrisJastram:
-------------

Map rotation, ego-centric style (we are always pointing up)

-----------------------------------------------------------------------------

Fritz:
------

Start Doxygen Documentation

change config File handling

import gpsdrive into anjuta and with this remodel 
the User Interface with glade-2

remove gpsd sources

-----------------------------------------------------------------------------

Joerg:
------

Fix line width glitch when displaying grid.

update opengeodb support to import the New Datasets. 
 Problem is the Database Format completely changed


Trying to import gpsdrive into eclipse. Any help appreciated.

Staighten the naming of variables and functions
   -first step done, but stil a long way to go
	still open:
		longi --> lon
		xy_draw --> draw_xy
		cb_t_xy		for Callback Timer xy 
		cb_c_xy		for Callback of Checkbox xy 
		bt_xy		for Button xy 
		load_xy		for loading Data for xy
		save_xy		for saving Data for xy

Database (SQL):
make gpsdrive read directly from mysql without first writing a file.
   -first step done

Vertor map Data:
	Add code for showing Vectormap Data. (Already started)
	Decide about internal representation and structure vektor map data.

new POI(Point Of Interest) Database support:
	- started. 
		- It already shows points in database (lat/lon/name/Icon)
		- Import of 2.500.000 Points seems to work


-----------------------------------------------------------------------------
Koji <koji@e-mail.jp>

- making 2.10pre2's ja.po. 

- Tokyo maps:
  This URL contain the position (deg/mm/ss), map scale(1/7000) and 
  map size(1280x1024). And a lot of scales can be obtained.
  This is very convenient for me. :-) Only one probrem is not WGS84 position,
  this positioning is named "Tokyo". So I need excange the position. :-(

  http://www.mapion.co.jp/c/f?el=139/36/45.600&scl=70000&size=1280,1024&uc=1&grp=MapionBB&nl=35/31/36.300


-----------------------------------------------------------------------------
Rob Stewart <rob@groupboard.com>

I've already looked at the festival speech stuff and I think I could 
make a change for the better there. However, the biggest thing I would 
suggest is setting a good coding standard, I think what currently exists 
is a little scary! Here's my top suggestions...

-----------------------------------------------------------------------------

DONE:
-----

- draw grid: Add text to draw-grid to see which lat/lon this gridline belongs to.

- Add Waypoint with one Keypress

- Add debian files to CVS for easier creating a debian package.

- Find Error in gpsd 2.20 Handling concerning the number of seen 
  Satelites and wrong latitude


-----------------------------------------------------------------------------

Old (has to be checked):
------------------------

Command line switch to set gpsd hostname and port for remote control.

Add load of trackings (i.e. stored in the GPS and
converted with a nice perl script anyone will write).

Servermode to display different positions provided over Internet
server.

resizing of window
centering of map to selected points

render maps in greyscale

create ~/.gpsdrive directory and files if missing.


