Viking is a free/open source program to manage GPS data (including GPX and KML files). You can import and plot tracks and waypoints, show OpenStreetMaps (OSM), Bing Aerial and/or Terraserver maps under it, geotag images, download geocaches for an area on the map, make new tracks and waypoints, see real-time GPS position, etc.  It is written in C with the GTK+ 2 toolkit.