First, just to clarify: my reasons for proposing "core adoption" of PGXN are not technical in nature. My desire is to have an extension/add-on system that's officially endorsed and embraced by the official community, similar to CPAN, pypy, npm, etc. There's no technical reason we need PGXN to be a first class citizen, but IMHO making it a first class citizen would greatly enhance the usefulness of Postgres and strengthen & expand the community. That community expansion should eventually result in an increase in new contributors to the database code itself.

On 2/14/17 8:24 AM, Robert Haas wrote:
On Tue, Feb 14, 2017 at 8:37 AM, Jim Nasby <jim.na...@bluetreble.com> wrote:
Right; I think we need at least some amount of pgxn buildfarm coverage.
There probably also needs to be a way to officially bless certain
distributions. Unless there's a pretty significant need for an official
extension to be in contrib, it should go into PGXN.

I'm not sure a need-based test is going to be entirely the right
thing.  The advantage of having something in contrib is that the core
developers will maintain it for you.

With fairly minimal effort, that could be true of something in another repository though.

When things change from release
to release, everything in contrib necessarily gets updated; things on
PGXN or elsewhere only get updated if their owners update them.  There

Right, and the intricate tie between contrib and rest of the database is why I'm not proposing ditching contrib completely. There's clearly some cases when that close tie makes the contrib code significantly simpler. (Though, it'd certainly be great if we found a way to reduce the multi-version support overhead for all extension creators!)

are several good things about that.  First, it means that people can
rely on the stuff in contrib mostly sticking around for future
releases, except occasionally when we decide to drop a module.
Second, it gives maintainers of external modules examples of what they
need to do to update their code when we change the core APIs.  Third,
it's probably actually more efficient for one person to go sweep
through a large number of modules and fix them all at once than if
those things were all on PGXN with separate owners.  Now, you can
overdo that: I don't want to be responsible for every module on PGXN
or anything close to it.  But on balance I think there's a good case
for shipping a substantial set of modules in contrib.

I agree with your points, but AFAIK there's no reason that needs to happen in contrib. There could certainly be a dedicated git.PG.org repo for official extensions. AFAICT that would meet all your points (understanding that code that really needed to be tied to specific versions could remain in contrib).

Another option would be to start with just publishing most/all of what's in contrib on PGXN. Most OS packaging solutions for contrib seem rather clunky/arbitrary to me, so having pgxnclient as an install option would probably be welcome to some users. This would mean an additional step in the release process, but AFAIK that could be hidden behind a single make target (whoever's doing the release would also need access to the relevant account on pgxn.org).

... points about current contrib modules that I agree with...

There's a lot of good
stuff in contrib, though, and I don't think we should be averse to
adding more in the future.  It shouldn't be just that any random
contrib module somebody writes can get dropped into the core
distribution, but I think we ought to be open to reasonable proposals
to add things there when it makes sense.

Right now contrib is serving two completely separate purposes:

1) location for code that (for technical reasons) should be tied to specific PG versions
2) indication of "official endorsement" of a module by the community

My view is that we've turned #2 into a nail simply because of the hammer we built for #1 (certainly understandable since contrib way pre-dates extensions, let alone PGXN).

The community has discussions (about once a year) about what should or shouldn't stay in contrib, and a lot of the decision making process ends up driven by #2. If we had another official distribution channel for extensions, we could completely separate #1 and #2: contrib is strictly for official community extensions that are greatly simplified by being in the main repo; all other official extensions live at <insert git URL here> / <list of URLs on PGXN.org>. With some effort (hopefully from newly attracted extension authors), #1 could probable be eliminated as well, to the benefit of other external projects.
--
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Experts in Analytics, Data Architecture and PostgreSQL
Data in Trouble? Get it in Treble! http://BlueTreble.com
855-TREBLE2 (855-873-2532)


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to