Blame lang/python/doc/texinfo/maintenance-mode.texi

Packit Service 30b792
\input texinfo    @c -*- texinfo -*-
Packit Service 30b792
@c %**start of header
Packit Service 30b792
@setfilename maintenance-mode.info
Packit Service 30b792
@settitle Maintenance Mode
Packit Service 30b792
@documentencoding utf-8
Packit Service 30b792
@documentlanguage en
Packit Service 30b792
@c %**end of header
Packit Service 30b792
Packit Service 30b792
@finalout
Packit Service 30b792
@titlepage
Packit Service 30b792
@title Maintenance Mode
Packit Service 30b792
@author Ben McGinnes
Packit Service 30b792
@end titlepage
Packit Service 30b792
Packit Service 30b792
@contents
Packit Service 30b792
Packit Service 30b792
@ifnottex
Packit Service 30b792
@node Top
Packit Service 30b792
@top Maintenance Mode
Packit Service 30b792
@end ifnottex
Packit Service 30b792
Packit Service 30b792
@menu
Packit Service 30b792
* Maintenance Mode from 2019::
Packit Service 30b792
Packit Service 30b792
@detailmenu
Packit Service 30b792
--- The Detailed Node Listing ---
Packit Service 30b792
Packit Service 30b792
Maintenance Mode from 2019
Packit Service 30b792
Packit Service 30b792
* Maintainer from 2019 onward::
Packit Service 30b792
* Using the Python Bindings from 2019 and beyond::
Packit Service 30b792
* Documentation formats::
Packit Service 30b792
Packit Service 30b792
Documentation formats
Packit Service 30b792
Packit Service 30b792
* Cautionary Notes regarding Sphinx and EPUB::
Packit Service 30b792
Packit Service 30b792
@end detailmenu
Packit Service 30b792
@end menu
Packit Service 30b792
Packit Service 30b792
@node Maintenance Mode from 2019
Packit Service 30b792
@chapter Maintenance Mode from 2019
Packit Service 30b792
Packit Service 30b792
@multitable {aaaaaaaaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
Packit Service 30b792
@item Version:
Packit Service 30b792
@tab 0.0.1
Packit Service 30b792
@item GPGME Version:
Packit Service 30b792
@tab 1.13.0
Packit Service 30b792
@item Author:
Packit Service 30b792
@tab Ben McGinnes <ben@@gnupg.org>
Packit Service 30b792
@item Author GPG Key:
Packit Service 30b792
@tab DB4724E6FA4286C92B4E55C4321E4E2373590E5D
Packit Service 30b792
@item Language:
Packit Service 30b792
@tab Australian English, British English
Packit Service 30b792
@item xml:lang:
Packit Service 30b792
@tab en-AU, en-GB, en
Packit Service 30b792
@end multitable
Packit Service 30b792
Packit Service 30b792
From the beginning of 2019 the Python bindings to GPGME will enter
Packit Service 30b792
maintenance mode, meaning that new features will not be added and only
Packit Service 30b792
bug fixes and security fixes will be made.  This also means that
Packit Service 30b792
documentation beyond that existing at the end of 2018 will not be
Packit Service 30b792
developed further except to correct errors.
Packit Service 30b792
Packit Service 30b792
Though use of these bindings appears to have been quite well received,
Packit Service 30b792
there has been no indication of what demand there is, if any for
Packit Service 30b792
either financial backing of the current Python bindings development or
Packit Service 30b792
support contracts with g10code GmbH citing the necessity of including
Packit Service 30b792
the bindings.
Packit Service 30b792
Packit Service 30b792
@menu
Packit Service 30b792
* Maintainer from 2019 onward::
Packit Service 30b792
* Using the Python Bindings from 2019 and beyond::
Packit Service 30b792
* Documentation formats::
Packit Service 30b792
@end menu
Packit Service 30b792
Packit Service 30b792
@node Maintainer from 2019 onward
Packit Service 30b792
@section Maintainer from 2019 onward
Packit Service 30b792
Packit Service 30b792
How does this affect the position of GnuPG Python Bindings Maintainer?
Packit Service 30b792
Packit Service 30b792
Well, I will remain as maintainer of the bindings; but without funding
Packit Service 30b792
for that position, the amount of time I will be able to dedicate
Packit Service 30b792
solely to this task will be limited and reduced to volunteered time.
Packit Service 30b792
As with all volunteered time and effort in free software projects,
Packit Service 30b792
this will be subject to numerous external imperatives.
Packit Service 30b792
Packit Service 30b792
@node Using the Python Bindings from 2019 and beyond
Packit Service 30b792
@section Using the Python Bindings from 2019 and beyond
Packit Service 30b792
Packit Service 30b792
For most, if not all, Python developers using these bindings; they
Packit Service 30b792
will continue to “just work” the same as they always have.  Expansions
Packit Service 30b792
of GPGME itself are usually handled by SWIG with the existing code and
Packit Service 30b792
thus bindings are generated properly when the bindings are installed
Packit Service 30b792
alongside GPGME and when the latter is built from source.
Packit Service 30b792
Packit Service 30b792
In the rare circumstances where that is not enough to address some new
Packit Service 30b792
addition to GPGME, then that is a bug and thus subject to the
Packit Service 30b792
maintenance mode provisions (i.e. it will be fixed following a bug
Packit Service 30b792
report being raised and your humble author will need to remember where
Packit Service 30b792
the timesheet template was filed, depending on how many years off such
Packit Service 30b792
an event is).
Packit Service 30b792
Packit Service 30b792
All the GPGME functionality will continue to be accessible via the
Packit Service 30b792
lower level, dynamically generated methods which match the GPGME C
Packit Service 30b792
documentation.  While the more intuitively Pythonic higher level layer
Packit Service 30b792
already covers the vast majority of functionality people require with
Packit Service 30b792
key generation, signatures, certifications (key signing), encryption,
Packit Service 30b792
decryption, verification, validation, trust levels and so on.
Packit Service 30b792
Packit Service 30b792
Any wanted features lacking in the Python bindings are usually lacking
Packit Service 30b792
because they are missing from GPGME itself (e.g. revoking keys via the
Packit Service 30b792
API) and in such cases they are usually deliberately excluded.  More
Packit Service 30b792
discussion of these issues can be found in the archives of the
Packit Service 30b792
@uref{https://lists.gnupg.org/mailman/listinfo/gnupg-devel, gnupg-devel mailing list}.
Packit Service 30b792
Packit Service 30b792
Any features existing in the dynamically generated layer for which
Packit Service 30b792
people want a specific, higher level function included to make it more
Packit Service 30b792
Pythonic (e.g. to avoid needing to learn or memorise cryptographic
Packit Service 30b792
mode values or GnuPG status code numbers), would be a feature request
Packit Service 30b792
and @emph{not} a bug.
Packit Service 30b792
Packit Service 30b792
It is still worthwhile requesting it, but the addition of such a
Packit Service 30b792
feature would not be guaranteed and provided on a purely volunteer
Packit Service 30b792
basis.  Expediting such a request would require funding that request.
Packit Service 30b792
Packit Service 30b792
Those with a commercial interest in expediting such a feature request
Packit Service 30b792
already know how to @uref{https://gnupg.org/cgi-bin/procdonate.cgi?mode=preset, expedite it} (use the message field to state what
Packit Service 30b792
feature is being requested).
Packit Service 30b792
Packit Service 30b792
@node Documentation formats
Packit Service 30b792
@section Documentation formats
Packit Service 30b792
Packit Service 30b792
The documentation has been written in Org mode for GNU Emacs, with
Packit Service 30b792
both Texinfo and reStructuredText formats generated from that.  The
Packit Service 30b792
Texinfo files are intended for use with the rest of the GnuPG
Packit Service 30b792
documentation; while the reStructuredText files are intended for use
Packit Service 30b792
with Docutils and Sphinx, as with other Python projects.
Packit Service 30b792
Packit Service 30b792
@menu
Packit Service 30b792
* Cautionary Notes regarding Sphinx and EPUB::
Packit Service 30b792
@end menu
Packit Service 30b792
Packit Service 30b792
@node Cautionary Notes regarding Sphinx and EPUB
Packit Service 30b792
@subsection Cautionary Notes regarding Sphinx and EPUB
Packit Service 30b792
Packit Service 30b792
Though Python's Docutils in conjunction with Sphinx is capable of
Packit Service 30b792
generating some very useful HTML sites, as proven by @uref{https://readthedocs.org/, Read the Docs} and
Packit Service 30b792
the @uref{https://docs.python.org/, Python documentation}, there are a number of output formats it does
Packit Service 30b792
not handle well.  At the top of the list of things it manages to break
Packit Service 30b792
so atrociously as to be embarassing is the @uref{http://idpf.org/epub, EPUB 3} format.
Packit Service 30b792
Packit Service 30b792
The automatically generated EPUB of the CPython documentation always
Packit Service 30b792
contains hundreds of validation errors and even the modest amount of
Packit Service 30b792
documentation here @uref{https://files.au.adversary.org.s3.amazonaws.com/crypto/gpgme-python/rst/epub/GPGMEPythonBindings.epub, produced a file} with approximately thirty
Packit Service 30b792
validation errors.  As the volume of documentation content increases,
Packit Service 30b792
so does the induced errors.  Whereas Texinfo doesn't produce EPUB
Packit Service 30b792
output at all, nor does Org-mode.
Packit Service 30b792
Packit Service 30b792
Should there ever be genuine demand for this format, lodge a @uref{https://dev.gnupg.org/maniphest/task/edit/form/4/, feature
Packit Service 30b792
request} case marked for @uref{https://dev.gnupg.org/p/BenM/, my} attention.  The means of generating such
Packit Service 30b792
files flawlessly is already available, but is not yet part of the
Packit Service 30b792
GnuPG build system.  Nor is it integrated with a means of converting
Packit Service 30b792
Org mode input files to the relevant base format automatically, as can
Packit Service 30b792
already be done when converting Org to reStructuredText or Org to
Packit Service 30b792
Texinfo.  As a certain amount of work would be required to get it
Packit Service 30b792
done, there would need to be clear demand for that work to be done.
Packit Service 30b792
Packit Service 30b792
@bye