GPSBabel 1.5 launched April 13.!
GPSBabel 1.4.x has had a good run. That series has been downloaded over a million times and is widely used by thousands of people a day. But, like many projects entering their teens (I started the code that became GPSBabel in 2001) we've accumulated our share of technical debt and the world around us has changed. GPSBabel 1.5 is about revisiting some of those early, fundamental (and, sometimes, dumb) decisions and rebuilding much of it from the foundation up. We've collected hundreds of changes spanning about a hundred thousand lines of code and we're presenting GPSBabel 1.5.
Of course, if you're an existing user, you're looking for new formats and fixes. We happen to have those. Freshly added:
We have fixes:
- GUI now lists help button on main screen and options pages.
- TODO: list more.
By far, our deepest cutting changes are in our infrastructure.
- We changed the implementation language from C89 to C++03. This lets our developers use modern, object-oriented programming and modern libraries.
- We moved to the open source Qt toolkit. We've successfully used Qt in the GUI for over five years. This lets us focus on GPSBabel itself and not implementing our own OS abstractions from scratch, robust string and time handling, and much more.
- We replaced time from our old representation that used the number of seconds since 1/1/1970 and had a fractional seconds component bolted onto the side (that was only sometimes used) with a QDateTime which allows us to represent time within millisecond resolution from Jan 2, 4713 BCE to sometimes in the year 11 million. While that sounds crazy (it is!) this lets things like the track filter not mangle data collected by your 10Hz GPS and your placemarks can have dates that, say, buildings were built or cities were founded without worrying about Jan 1, 1970.
- We replaced all of our XML (GPX, KML, Geo, etc) readers with Qt readers. This reduces the number of data-specific bugs you're likely to encounter. No longer will a waypoint named "]]" (it happens!) crash your data. We're much more robust when reading extended namespaces.
- We replaced our own XML writers with Qt's XML serializers. This solves a whole class of data-specific issues with specific fields containing data like "<" or "[[<CDATA" (it happens!) or international characters or such.
- Reference counted, dynamic strings are now used in the majority of our key data structures, eliminating leaks and allowing multiple copies of the same data to share a copy in memory, lessening the amount of memory we use.
- A lot of emphasis as been placed on sound engineering. GPSBabel now has automated tests covering hundreds of thousands of operations to check against memory leaks, overwrites, unused code, uninitialized data use and so on. We believe this to be our highest quality release ever.
As a result of all this remodelling, some of our formats that our statistics showed were infrequently used and that had little to no support traffic in many years were removed. Most of these were formats for Palm OS, were never mentioned after they were initially added, or are for companies that have been out of business for years or that have moved to better formats, like GPX. These include:
Deprecated formats - Palm/OS
While GPSBabel is the work of many Babel-heads, Special thanks for their work in this version are deserved for tsteven4 for providing automated test infrastucture and much help during the C++ rework and Conrad Meyers for helping wrestle the new time and XML infrastructure.
Supporting the project
We get a constant stream of requests to support new hardware, adding support for new OSes, and such. It costs a lot of time and money to buy GPS receivers, programs, and computers for development. You can help fund the next generation (hey, someone funded what's there now...) by supporting the project with your time or your donation. If you have a way you'd like to see the money spent (i.e. improving Mac support, new GPS models, etc.) please mention that in your submission. We appreciate all the help we can get