123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <!DOCTYPE HTML>
- <html lang="en">
- <head lang="en">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="Author" content="Eric S. Raymond">
- <meta name="Description" content="GPSd is a utility that can listen to a GPS or AIS yreceiver and re-publish the positional data in a simpler format.">
- <meta name="Keywords" content="GPS, gpsd, project history">
- <meta name="Revised" content="9 April 2015">
- <meta name="robots" content="index,follow">
- <link rel="stylesheet" href="main.css" type="text/css">
- <title>GPSD project history</title>
- </head>
- <body>
- <div id="Header">
- A Brief History of GPSD
- </div>
- <div id="Menu">
- <img src="gpsd-logo-small.png" alt="Small gpsd Logo" height="126"
- width="105"><br>
- <a href="index.html">Home</a><br>
- <a href="index.html#news">News</a><br>
- <a href="index.html#install">Installation & Building</a><br>
- <a href="index.html#downloads">Downloads</a><br>
- <a href="index.html#mailing-lists">Mailing lists</a><br>
- <a href="index.html#documentation">Documentation</a><br>
- <a href="faq.html">FAQ</a><br>
- <a href="xgps-sample.html">Screenshots</a><br>
- <a href="index.html#recipes">Recipes</a><br>
- <a href="index.html#others">Other GPSDs</a><br>
- <a href="hardware.html">Hardware</a><br>
- <a href="for-vendors.html">For GPS Vendors</a><br>
- <a href="wishlist.html">Wish List</a><br>
- <a href="hall-of-shame.html">Hall of Shame</a><br>
- <a href="troubleshooting.html">Troubleshooting Guide</a><br>
- <a href="hacking.html">Hacker's Guide</a><br>
- <a href="protocol-transition.html">Application Compatibility</a>
- <a href="references.html">References</a><br>
- History<br>
- <a href="future.html">Future</a><br>
- <div> </div>
- <a href='http://www.catb.org/hacker-emblem/'><img
- src='glider.png' alt='hacker emblem' height="55" width="55"></a><br>
- <script src="https://www.openhub.net/p/3944/widgets/project_thin_badge.js"></script>
- <hr>
- <script><!--
- google_ad_client = "pub-1458586455084261";
- google_ad_width = 160;
- google_ad_height = 600;
- google_ad_format = "160x600_as";
- google_ad_type = "text";
- google_ad_channel = "";
- //--></script>
- <script src="https://pagead2.googlesyndication.com/pagead/show_ads.js">
- </script>
- <hr>
- <a href="https://validator.w3.org/check/referer"><img
- src="html5.png"
- alt="Valid HTML 5!" height="31" width="88"></a>
- </div>
- <div id="Content">
- <p>There have been at least three forks of gpsd wandering around, all
- of which are now defunct. This page will explain matters.</p>
- <p>The gpsd project was started in 1995 by Remco Treffkorn, back when
- GPS technology was a shiny new thing. Remco laid out a sound basic
- framework for a utility that functioned without much fuss for nearly
- a decade.</p>
- <p>Remco's design may, in a sense, have been too good. Because gpsd
- didn't cause problems or attract attention, the maintainers (including
- Remco himself and Derrick Brashear) turned to other more pressing
- problems. The code was neglected for years at a stretch, and became
- rather dusty. The original architecture started to show signs of
- strain when Remco, Derrick, and Russ Nelson bolted on support for the odd
- proprietary format of the EarthMate GPS between early 1999 and late
- 2002.</p>
- <p>Thereafter, Russ Nelson hosted the project on <a
- href='http://pygps.org/'>pygps.org</a> for several years and became
- one of its three maintainers. He continued the gpsd tradition by
- largely ignoring the code once he had gotten it working well enough to
- support <a href="http://pygps.org">pyGPS</a>.</p>
- <p>Sometime during this period Fritz Ganter, author of the <a
- href="https://sourceforge.net/projects/gpsdrive/">GPSdrive</a> project,
- forked gpsd. There are a couple of different stories about why the fork
- happened and some clashing memories. However, the gpsdrive version did
- not diverge from the parent gpsd in any significant way. The protocol it
- spoke was a proper subset of gpsd-2's. This variant is also dead; the
- new maintainer, Jörg Ostertag, dropped it from the gpsdrive-2.10
- prereleases in 2007.</p>
- <p>Another fork was ngpsd, part of the <code>NavSys</code> project.
- This diverged from the gpsdrive fork in 2002. The author, Amaury
- Jaqcquot, is now on the gpsd list and ngpsd has been officially
- retired.</p>
- <p>Yet another fork of gpsd was moved into C++ by Thomas Hargrove and
- called <code>tgpsd</code>. The protocol it spoke was almost a proper
- subset of that of gpsd, with PDAVMSQ commands and an 'I' command that
- could query the azimuth/elevation/signal-strength of an individual
- satellite. As of December 2006 the <code>tgpsd</code> project page has
- dropped off the net.</p>
- <p>Further forks of <code>gpsd</code> seem unlikely, as the project
- has since become sufficiently large and visible to co-opt most
- potential developers.</p>
- <p>In August 2004, Eric Raymond (yes, <em><a
- href='http://www.catb.org/~esr/'>that</a></em> Eric Raymond) tripped
- over a minor problem with gpsd while playing with his new toy, a
- BU-303 USB GPS. He looked at the code, muttered imprecations about
- the thick layer of dust on it, and began hacking.</p>
- <p>About a week of frenzied coding later, Eric had (a) completely
- refactored and cleaned up the code, (b) added every feature then on
- the developers' wishlists, (c) documented it all, and (d) added
- substantial new features of his own, including the libgps service
- library that allows C developers to manage a gpsd session in a
- remote-procedure-call-like way (e.g., without having to worry about
- gpsd's protocol or how to unpack its data into a C structure).</p>
- <p>Eric's work became the prototype for gpsd-2.0. In mid-August of
- 2004, Eric moved the project to Berlios with the approval and
- cooperation of all three of the 1.x maintainers. (The main reason
- for that choice of hosting site was that it was among the first to
- offer Subversion, which was new technology at the time and which
- Eric and the 1.x developers were all interested in experimenting with.)</p>
- <p>In early 2005 the project took another significant turn as Eric
- implemented packet-sniffing and autobauding, threw out all the
- old configuration options. and factored the daemon into a thin
- multiplexer layer sitting on top of a set of device drivers. Support
- for non-NMEA devices dates from this redesign; SiRF was the first.</p>
- <p>In the year between June 2005 and June 2006 the <code>gpsd</code>
- project went from being mostly a solo effort by Eric to attracting a
- flourishing community of developers. Prominent among them are Chris
- Kuethe and Gary Miller, who were given release authority in October
- 2006.</p>
- <p>By the end of 2006, <code>gpsd</code> supported several vendor
- binary protocols as well as the original NMEA and Zodiac. The suite
- of GPS test tools had greatly expanded, and we implemented a rigorous
- regression-test framework for the daemon itself. The daemon had
- acquired new features like multi-device capability and hotplug
- autoconfiguration.</p>
- <p>The daemon's core code has been pretty stable since 2006. Adding
- drivers for new vendor protocols is a routine process now; we've had
- at least two contributed by people who aren't core GPSD developers.
- In early 2009 Eric cleaned up and rewrote a lot of our test and
- configuration tools; <code>gpsmon</code> dates from this time
- (replacing and generalizing earlier <code>sirfmon</code>).</p>
- <p>In 2007-2008 the GPSD project got its first new competition since
- 1.x days, a project called Gypsy positioned directly against what the
- author believes to be our design mistakes. We discuss it <a
- href="gypsy.html">here</a>.</p>
- <p>In July and August 2009 ESR <a
- href="protocol-evolution.html">redesigned the GPSD command
- protocol</a> and gave <code>gpsd</code> the ability to read data from
- marine AIS receivers and pass it to clients.</p>
- <p>In January 2010, the GPSD project <a
- href="http://thedailywtf.com/Articles/Bad-Code-Offsets-Open-Web-Innovation">won</a>
- the first Good Code Grant from the Alliance for Code Excellence.</p>
- <p>In March 2010 the project changed version-control systems, moving
- from Subversion to git. In April 2011, it changed build systems,
- dumping autotools for scons.</p>
- <p>In August 2011 we shipped the long-awaited 3.0 major release.
- Following this, the codebase proved so mature that, when it was ported
- by cross-development to a MIPS-based router in mid-September, no C
- changes at all were required.</p>
- <p>In late September 2011, the announcement that the Berlios forge site
- would be shutting down at the end of 2011 forced the project to move
- to Savannah.</p>
- <p>In the 3.12 release of January 2015, the undocumented remnants of
- client-library support for the pre-JSON query protocol were
- removed.</p>
- <p>In April 2019 GPSD handled the second GPS era rollover with
- barely a hitch.</p>
- <p>At the end of May 2019 the project repository, bugtracker, and web
- content moved from Savannah to GitLab, with the web content served
- by GitLab pages and updated automatically on repository pushes.
- Redirects were left in place on the old website at ibiblio.</p>
- <hr>
- <script src="datestamp.js"></script>
- </div>
- </body>
- </html>
|