Short History
authorBen McGinnes <ben@adversary.org>
Wed, 14 Feb 2018 17:19:15 +0000 (04:19 +1100)
committerBen McGinnes <ben@adversary.org>
Wed, 14 Feb 2018 17:19:15 +0000 (04:19 +1100)
* Fixed or updated the most fundamental errors.
* Also included some details on which modules are available on PyPI,
  as well as what happened to the PyME commit log.

lang/python/docs/Short_History.org

index 2295499..e0cd877 100644 (file)
@@ -50,13 +50,30 @@ return to the source.  This is a short explanation of that journey.
 
    In 2015 Ben McGinnes approached Martin about a Python 3 version,
    while investigating how complex a task this would be the task ended
-   up being completed.  A subsequent discussion with Werner Koch led to
-   the decision to fold the Python 3 port back into the original GPGME
-   release in the languages subdirectory for non-C bindings.  Ben is
-   the maintainer of the Python 3 port within GPGME.
+   up being completed.  A subsequent discussion with Werner Koch led
+   to the decision to fold the Python 3 port back into the original
+   GPGME release in the languages subdirectory for non-C bindings
+   under the module name of =pyme3=.
 
-   In 2016 PyME was renamed to "gpg" and adopted by the upstream GnuPG
-   team.
+   In 2016 this PyME module was integrated back into the GPGME project
+   by Justus Winter.  During the course of this work Justus adjusted
+   the port to restore limited support for Python 2, but not as many
+   minor point releases as the original PyME package supports.  During
+   the course of this integration the package was renamed to more
+   accurately reflect its status as a component of GPGME.  The =pyme3=
+   module was renamed to =gpg= and adopted by the upstream GnuPG team.
+
+   In 2017 Justus departed G10code and the GnuPG team.  Following this
+   Ben returned to maintain of gpgme Python bindings and continue
+   building them from that point.
+
+* Relics of the past
+  :PROPERTIES:
+  :CUSTOM_ID: relics-past
+  :END:
+
+There are a few things, in addition to code specific factors, such as
+SWIG itself, which are worth noting here.
 
 ** The Annoyances of Git
    :PROPERTIES:
@@ -65,23 +82,82 @@ return to the source.  This is a short explanation of that journey.
 
    As anyone who has ever worked with git knows, submodules are
    horrible way to deal with pretty much anything.  In the interests
-   of avoiding migraines, that is being skipped with addition of PyME
-   to GPGME.  Instead the files will be added to the subdirectory,
-   along with a copy of the entire git log up to that point as a
-   separate file within the docs directory (old-commits.log).  As the
-   log for PyME is nearly 100KB and the log for GPGME is approximately
-   1MB, this would cause considerable bloat, as well as some
-   confusion, should the two be merged.  Hence the unfortunate, but
-   necessary, step to simply move the files.  A regular repository
-   version will be maintained should it be possible to implement this
-   better in the future.
+   of avoiding migraines, that was skipped with addition of the PyME
+   code to GPGME.
+
+   Instead the files were added to a subdirectory of the =lang/=
+   directory, along with a copy of the entire git log up to that point
+   as a separate file within the =lang/python/docs/= directory.[fn:1]
+   As the log for PyME is nearly 100KB and the log for GPGME is
+   approximately 1MB, this would cause considerable bloat, as well as
+   some confusion, should the two be merged.
+
+   Hence the unfortunate, but necessary, step to simply move the
+   files.  A regular repository version has been maintained should it
+   be possible to implement this better in the future.
 
 ** The Perils of PyPI
    :PROPERTIES:
    :CUSTOM_ID: the-perils-of-pypi
    :END:
 
-   At the current time the Python 3 fork is not available via PyPI and
-   the pip installer.  The recommended installation method is to follow
-   the instructions in lang/py3-pyme/INSTALL.  This will build the
-   necessary SWIG portions against the installed version of GPGME.
+   The early port of the Python 2 =pyme= module as =pyme3= was never
+   added to PyPI while the focus remained on development and testing
+   during 2015 and early 2016.  Later in 2016, however, when Justus
+   completed his major integration work and subsequently renamed the
+   module from =pyme3= to =gpg=, some prior releases were also
+   provided through PyPI.
+
+   Since these bindings require a matching release of the GPGME
+   libraries in order to function, it was determined that there was
+   little benefit in also providing a copy through PyPI since anyone
+   obtaining the GPGME source code would obtain the Python bindings
+   source code at the same time.  Whereas there was the potential to
+   sew confusion amongst Python users installing the module from PyPI,
+   only to discover that without the relevant C files, header files or
+   SWIG compiled binaries, the Python module did them little good.
+
+   There are only two files on PyPI which might turn up in a search
+   for this module or a sample of its content:
+
+   1. gpg (1.8.0) - Python bindings for GPGME GnuPG cryptography library
+   2. pyme (0.9.0) - Python support for GPGME GnuPG cryptography library
+
+*** GPG 1.8.0 - Python bindings for GPGME GnuPG cryptography library
+    :PROPERTIES:
+    :CUSTOM_ID: pypi-gpgme-180
+    :END:
+
+    This is the most recent version to reach PyPI and is the version
+    of the official Pyhon bindings which shipped with GPGME 1.8.0.  If
+    you have GPGME 1.8.0 installed and /only/ 1.8.0 installed, then it
+    is probably safe to use this copy from PyPI.
+
+    As there have been a lot of changes since the release of GPGME
+    1.8.0, the GnuPG Project recommends not using this version of the
+    module and instead installing the current version of GPGME along
+    with the Python bindings included with that package.
+
+*** PyME 0.9.0 - Python support for GPGME GnuPG cryptography library
+    :PROPERTIES:
+    :CUSTOM_ID: pypi-gpgme-90
+    :END:
+
+    This is the last release of the PyME bindings maintained by Martin
+    Albrecht and is only compatible with Python 2, it will not work
+    with Python 3.  This is the version of the software from which the
+    port from Python 2 to Python 3 code was made in 2015.
+
+    Users of the more recent Python bindings will recognise numerous
+    points of similarity, but also significant differences.  It is
+    likely that the more recent official bindings will feel "more
+    pythonic."
+
+    For those using Python 2, there is essentially no harm in using
+    this module, but it may lack a number of more recent features
+    added to GPGME.
+
+* Footnotes
+
+[fn:1] The entire PyME git log and other preceding VCS logs are
+located in the =gpgme/lanf/python/docs/old-commits.log= file.