I just see it like all applications and libraries that adhere to some standard. Some adhere strictly to the standard whatever that is. Some do that but also add more features to push the industry forward. NVIDIA does that for graphics. Mozilla does that for browsers. Looks like PostgreSQL is starting to take that role with relational databases.
I generally view it as a good thing unless you care about cross-platform. If you do, then don't use the non-standard features.
> Looks like PostgreSQL is starting to take that role with relational databases.
PostgreSQL has been doing this for a long time. It started, actually, as a research project for how to manage very complex forms of data in a relational-like database (many people use it as a purely relational database but that doesn't even begin to scratch the surface of what PostgreSQL can do).
Like the ability to write user defined functions to process data in SQL queries in whatever language you want, for example. Language handlers have long been available not only for SQL, C, and PL/PGSQL (PostgreSQL's variant of Oracle's PL/SQL), but also TCL, Perl, and Python. Third party language handlers are available for Java, PHP, and many more languages. Yes, you can run PHP inside your PostgreSQL database.....
Now new data types are pretty much C-only, but you can also create a lot of the same functionality using composite types and sql. Composite types (and even arrays of composite types) can be tuple elements.
Add to this the object-oriented-inspired features, allowing you to use multiple inheritance to mix in tables and create common interfaces to data (both features older than PostgreSQL's use of SQL).
What this means is you can do some extremely advanced db-stuff with PostgreSQL. This can include:
- I want to create a common interface for notes but avoid a global notes table.
- I want to scan a series of images stored in the db for those matching an algorithm in a Java library showing which are likely images of sunsets.
- I want to add support for a third party Java full text search engine into the back-end so I can call its functions from inside SQL queries.
> But how is that different from the old MS battle-cry "embrace, extend, extinguish"?
It's OSS. That alone makes it different. Anybody can continue work on it or even fork it.
Postgres is an awesome database and an awesome project. I think the core developers have a good blend of being committed to supporting the SQL standard and adding new non-standard features. If you read through the docs they usually specify if a given feature is standard SQL or a Postgres extenstion. If you want to use something new that isn't standardized yet you have that option. If you don't, you have the info that it's not. The choice is yours.
> It's the "extinguish" part I'm concerned about.
I'm not sure I understand this. Are you worried about Postgres extinguishing its competitor databases (MySQL, Oracle, SQL Server, ... etc)? I'll be honest that I do see that happening but it's not malicious. It's just a better product. For transactional/persistent storage of data I don't see myself recommending anything else.
There is no single point of ownership behind the Postgres project, no profit margins or sales goals. Thus there is no need to eliminate other platforms, but simply to be the best project the contributors can create.
I generally view it as a good thing unless you care about cross-platform. If you do, then don't use the non-standard features.