Refractions Research 是卑詩省一家小型顧問公司,約有六名員工,早期合約來自拒絕使用 ESRI GIS 軟體的省政府主管。這個不尋常的客戶群把公司推向資料庫的深處;在一項全省流域圖集專案中,團隊把切分過的空間資料存進 PostgreSQL 資料表。這段經驗讓下一個想法變得顯而易見:如果資料庫除了把這些儲存的幾何資料放進去、拿出來之外還能做更多事,他們就能擁有一套互動式即時空間分析引擎。

約在 2000 年,講到空間資料庫,指的就是 Oracle 8i 的 Spatial Data Option,或 OpenGIS Simple Features for SQL 規格,幾乎別無其他。該規格描述了儲存幾何資料的三種方式:拆散存進座標的側表、存成二進位大型物件,或存成原生幾何型別。Ramsey 起初想向卑詩省政府推銷 Oracle 空間顧問服務,卻找不到買主。在 PostgreSQL 裡測試其他選項也走進死胡同:側表太慢,根本不能用;BLOB 較快,卻無法為幾何資料建立索引。團隊幾乎要停手。

Dave Blasby 是唯一正式學過電腦科學的開發者,他讀過 PostgreSQL 的原始碼與 contrib 區段後,說他能打造自訂型別。幾天內他就做到了:一個帶有 GiST 空間索引的幾何型別,接上公司的 Java 地圖小程式後效果極佳——即使資料表非常龐大也快得驚人。由於當時 PostgreSQL 擴充套件還沒有商業生態系,Refractions 判定這份程式碼最好的商業用途就是開源釋出,讓它帶來上門的客戶流量。

2001 年 5 月 31 日,該公司以 GPL 授權宣布 PostGIS 0.1:一個幾何型別、一個空間索引,以及一組初始函式,並由同事貢獻了 Shapefile 載入器、建置檔與文件。開源地理空間界早已引頸期盼:GDAL 的 Frank Warmerdam 與 MapServer 的 Daniel Morissette 在頭一個月內就出現在郵件論壇上,GeoTools 與 GeoServer 生態系的開發者也迅速跟進。

深入文件之下,寫出規格所搆不著的原生型別,然後把程式碼送出去,送到客戶聚集之處

規格中可實作的那些設計都是死胡同;勝出的設計——原生型別——唯有深入 PostgreSQL 使用者文件之下、進入其原始碼才搆得著。

Oracle 顧問這條路沒有買主,而開源則有明顯未被滿足的需求:快速成長的開放 GIS 技術堆疊,還沒有免費的空間資料庫。

由於 PostgreSQL 擴充套件沒有商業生態系,賣授權根本不可能;開源是唯一的散布管道,而身為作者,也讓 Refractions 成為顯而易見的專家人選。

以 0.1 版早早釋出到公開郵件論壇,讓 GDAL、MapServer 與 Java 地理空間界的領袖在數週內採用,信譽累積的速度勝過任何廣告。

顧問公司本身保持完整,作為營收引擎,而免費程式碼則扮演漏斗,於是這份免費餽贈反倒資助了它自己所宣傳的工作。

當每一種有文件記載的做法都失敗時,就往文件之下再深一層;而當你打造的東西賣不掉時,就把它送出去,送到你真正業務的買主早已聚集之處。

PostGIS 成長為開源 GIS 技術堆疊的空間引擎,GDAL、MapServer 與 Java 地理空間專案都在 2001 年釋出後數週內完成整合。Blasby 在最初幾年負責維護;Ramsey 於 2008 年離開公司,全職投入 PostGIS,現任職於 Crunchy Data。在二十週年時,它在 Hacker News 獲得 302 分;留言者稱 PostGIS 基本上已是業界標準,說連 Esri 的波特蘭研發中心也在用,並回憶採用後曾到維多利亞拜訪 Refractions 尋求建議——這正是那次釋出所刻意要帶來的上門流量。

追溯依據

參考來源

  1. PostGIS at 20, The Beginning Paul Ramsey (Clever Elephant blog) · blog.cleverelephant.ca ·
  2. [postgis] Initial Release of PostGIS postgis-users mailing list (OSGeo archive) · lists.osgeo.org ·
  3. PostGIS at 20, the Beginning (Hacker News discussion) Hacker News · news.ycombinator.com ·