--- /dev/null
+<!--
+$PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.1 2004/12/03 05:50:17 momjian Exp $
+-->
+
+ <chapter id="external-projects">
+ <title>External Projects</title>
+
+ <para>
+ <productname>PostgreSQL</productname> is a large piece of very
+ complex software, and managing the code is a difficult process. We
+ have found that many enhancements to
+ <productname>PostgreSQL</productname> can be more efficiently
+ developed independently of the main project. They can have their own
+ developer teams, email lists, their own bug tracking, and their own
+ release schedule. While their independence makes development easier,
+ it makes users job harder. They have to hunt around looking for
+ database enhancements to meet their needs.
+ </para>
+
+ <para>
+ This section will outlines some of the more popular externally
+ developed enhancements and guides you on how to find them.
+ </para>
+
+ <sect1 id="interfaces">
+ <title>Externally Developed Interfaces</title>
+
+ <indexterm>
+ <primary>interfaces</primary>
+ </indexterm>
+
+ <para>
+ <productname>PostgreSQL</productname> packages very few interfaces
+ with the base distribution. <application>libpq</> is packaged because
+ it is the primary <application>C</> interface and many other
+ interfaces are built on top of it. <application>ecpg</> is packaged
+ because it is tied to the server-side grammar so it is very dependent
+ on the database version. All the other interfaces are independent
+ projects.
+ </para>
+
+ <para>
+ To use other interfaces, you have to do some searching. For example,
+ <productname>GBorg</> at <ulink url="http://gborg.postgresql.org">
+ http://gborg.postgresql.org</ulink> has over thirty interfaces listed
+ in its <literal>Drivers/Interfaces</> section. Some of the more
+ popular interfaces are:
+
+ <variablelist>
+ <varlistentry>
+ <term>ODBC</term>
+ <listitem>
+ <para>
+ This is the most common interface for <application>Windows</>
+ applications.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>psqlODBC</term>
+ <listitem>
+ <para>
+ This is the most common interface for <application>Windows</>
+ applications.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Npgsql</term>
+ <listitem>
+ <para>
+ <application>.Net</> interface for more recent
+ <application>Windows</> applications.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>libpq++</term>
+ <listitem>
+ <para>
+ An older <application>C++</> interface.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>libpqxx</term>
+ <listitem>
+ <para>
+ A newer <application>C++</> interface.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>pgperl</term>
+ <listitem>
+ <para>
+ A <application>Perl</> interface with an <acronym>API</> similar
+ to <application>libpq</>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>DBD-Pg</term>
+ <listitem>
+ <para>
+ A <application>Perl</> interface that uses the
+ <acronym>DBD</>-standard <application>API</>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>pgtcl</term>
+ <listitem>
+ <para>
+ The original version of the <application>TCL</> interface.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>PyGreSQL</term>
+ <listitem>
+ <para>
+ A <application>Python</> interface library.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>pgjdbc</term>
+ <listitem>
+ <para>
+ A <application>JDBC</> interface.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>pgtclng</term>
+ <listitem>
+ <para>
+ A newer version of the <application>TCL</> interface.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </para>
+
+ <para>
+ That section also contains several server-side languages that are
+ separate projects. <application>pgFoundry</> at <ulink
+ url="http://pgfoundry.org">http://pgfoundry.org</ulink> contains
+ even more projects. Other projects are not even hosted on these
+ servers and you will have to do an internet search to find them.
+ </para>
+
+ </sect1>
+
+ <sect1 id="extensions">
+ <title>Extensions</title>
+
+ <indexterm>
+ <primary>extensions</primary>
+ </indexterm>
+
+ <para>
+ <productname>PostgreSQL</> was designed from the start to be
+ extensible. For this reason, extensions loaded into the database can
+ function just like features that are packaged with the database. The
+ <filename>/contrib</> directory shipped with the source code
+ contains a large number of extensions. The <filename>READMD</> file
+ in that directory contains a summary. They include conversion tools,
+ full-text indexing, <acronym>XML</> tools, and additional data types
+ and indexing methods. Other extensions are developed independently,
+ like <application>PostGIS</>. Even <application>PostgreSQL</>
+ replication solutions are developed externally. For example,
+ <application>Slony</> is a popular master/slave replication solution
+ that is developed independently from the main projects.
+ </para>
+
+ </sect1>
+
+ <sect1 id="administration-tools">
+ <title>Administration Tools</title>
+
+ <indexterm>
+ <primary>administration tools</primary>
+ </indexterm>
+
+ <para>
+ There are several administration tools available for
+ <productname>PostgreSQL</>. The most popular is
+ <application>pgadmin</>, and there are several commercially
+ available ones.
+ </para>
+
+ </sect1>
+</chapter>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode:sgml
+sgml-omittag:nil
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:"./reference.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:("/usr/lib/sgml/catalog")
+sgml-local-ecat-files:nil
+End:
+-->