Wenn Sie das Universum auf Anfang 2001 zurückverwandeln und nicht nur die Erfinder von PostGIS in die Zukunft blicken lassen, sondern auch den PSC von PgSQL in die Zukunft blicken lassen, besteht PostGIS möglicherweise aus einer Reihe von Patches für PgSQL. Aber zumindest, wenn wir als Patches zum Kern angefangen hätten, wären wir zuerst auf folgendes gestoßen:
- Kernbereiche von PgSQL unterstützen keine Lücken, aber das GIS-Modell will wirklich Lücken. Können wir das ändern?
Und Kern-PgSQL hätte gesagt: "Nein, natürlich nicht, Bereiche haben eine gut verstandene Semantik und wir können nicht rückwärts inkompatible Änderungen vornehmen."
Als Nicht-Kernentwickler war PostGIS in der Lage, monatliche und halbjährliche Veröffentlichungen für eine Reihe von Jahren auszuschalten, während der PgSQL-Kern mit jährlichen und längeren Veröffentlichungen einherging. Wir konnten auch beliebige Funktionen hinzufügen, wann immer wir wollten, da wir in unserem Projekt Commit-Rechte hatten, aber das Erlangen von Commit-Rechten in PgSQL dauert sehr lange.
Als PostGIS genug externen Wert demonstrierte, den der PgSQL-Kern überblickte, und sich sagte, "huh, das wäre schön gewesen, wenn er ein zusätzliches Feature in Core gewesen wäre", gab es bereits so viel Code mit einem anderen Standard und Stil PgSQL (ganz zu schweigen von einer inkompatiblen Lizenz), dass die Idee des Zusammenführens nicht wirklich möglich war.
Stattdessen ist PostGIS das kanonische Beispiel für eine Really Large Complex Extension, mit der PgSQL modular und erweiterbar bleibt. "Wie wird sich das auf so etwas wie PostGIS auswirken?", Wird oft gefragt, während PgSQL einige Änderungen bewertet. Dies ist auch eine gute Sache, vielleicht nicht ganz so schön wie PostGIS als Teil des Kerns, aber gut genug.
Es gibt noch andere Gründe, wie die lange Liste von Abhängigkeiten, die der PgSQL-Kern nicht gerne gesehen hätte, die allgemein geringere Codekonsistenz und API-Sauberkeit, deren Verbesserung sie verzweifelt hätten, und so weiter. Bereits bei der Konzeption war PostGIS zu groß für PgSQL, um es mit einem Bissen zu schlucken.