Blame lang/python/doc/meta/TODO.org

Packit Service 30b792
#+TITLE: Stuff To Do
Packit Service 30b792
#+LATEX_COMPILER: xelatex
Packit Service 30b792
#+LATEX_CLASS: article
Packit Service 30b792
#+LATEX_CLASS_OPTIONS: [12pt]
Packit Service 30b792
#+LATEX_HEADER: \usepackage{xltxtra}
Packit Service 30b792
#+LATEX_HEADER: \usepackage[margin=1in]{geometry}
Packit Service 30b792
#+LATEX_HEADER: \setmainfont[Ligatures={Common}]{Latin Modern Roman}
Packit Service 30b792
Packit Service 30b792
* Project Task List
Packit Service 30b792
  :PROPERTIES:
Packit Service 30b792
  :CUSTOM_ID: task-list
Packit Service 30b792
  :END:
Packit Service 30b792
Packit Service 30b792
** DONE Documentation default format
Packit Service 30b792
   CLOSED: [2018-02-15 Thu 21:29]
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: todo-docs-default
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   Decide on a default file format for documentation.  The two main
Packit Service 30b792
   contenders being Org Mode, the default for the GnuPG Project and
Packit Service 30b792
   reStructuredText, the default for Python projects.  A third option
Packit Service 30b792
   of DITA XML was considered due to a number of beneficial features
Packit Service 30b792
   it provides.
Packit Service 30b792
Packit Service 30b792
   The decision was made to use Org Mode in order to fully integrate
Packit Service 30b792
   with the rest of the GPGME and GnuPG documentation.  It is possible
Packit Service 30b792
   to produce reST versions via Pandoc and DITA XML can be reached
Packit Service 30b792
   through converting to either Markdown or XHTML first.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
** TODO Documentation build systems
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: todo-docs-build-systems
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
Though Org Mode is being used for the default documentation format, it
Packit Service 30b792
still needs to end up as usable by end users.  So the Org Mode files
Packit Service 30b792
are used to produce the "source" files used by the two main contenders
Packit Service 30b792
for documenting the bindings: Texinfo and ReStructuredText/Docutils.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
*** TODO Texinfo documentation
Packit Service 30b792
    :PROPERTIES:
Packit Service 30b792
    :CUSTOM_ID: todo-docs-build-texinfo
Packit Service 30b792
    :END:
Packit Service 30b792
Packit Service 30b792
Need to add all of Texinfo's ... special systems to make it do its
Packit Service 30b792
things.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
*** TODO ReStructuredText documentation
Packit Service 30b792
    :PROPERTIES:
Packit Service 30b792
    :CUSTOM_ID: todo-docs-build-docutils
Packit Service 30b792
    :END:
Packit Service 30b792
Packit Service 30b792
Need to run Sphinx's quick start, add it to the requirements and tweak
Packit Service 30b792
the index page for the rst files to point to the HOWTO and other files.
Packit Service 30b792
Packit Service 30b792
It might just be easier to do all that in Org Mode and convert the
Packit Service 30b792
lot, then the Sphinx bits can be automated.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
** STARTED Documentation HOWTO
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: todo-docs-howto
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   - State "STARTED"    from "TODO"       [2018-03-08 Thu 13:59] \\
Packit Service 30b792
     Started yesterday.
Packit Service 30b792
   Write a HOWTO style guide for the current Python bindings.
Packit Service 30b792
Packit Service 30b792
*** DONE Start python bindings HOWTO
Packit Service 30b792
    CLOSED: [2018-03-07 Wed 18:14]
Packit Service 30b792
    :PROPERTIES:
Packit Service 30b792
    :CUSTOM_ID: howto-start
Packit Service 30b792
    :END:
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
*** STARTED Include certain specific instructions in the HOWTO
Packit Service 30b792
    :PROPERTIES:
Packit Service 30b792
    :CUSTOM_ID: howto-requests
Packit Service 30b792
    :END:
Packit Service 30b792
Packit Service 30b792
    Note: moved the S/MIME bits out to their own section of the TODO
Packit Service 30b792
    list and may be served better by separate HOWTO documentation
Packit Service 30b792
    anyway.
Packit Service 30b792
Packit Service 30b792
    - State "STARTED"    from "TODO"       [2018-03-09 Fri 15:27]
Packit Service 30b792
    Some functions can be worked out from the handful of examples
Packit Service 30b792
    available, but many more can't and I've already begun receiving
Packit Service 30b792
    requests for certain functions to be explained.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
**** DONE Standard scenarios
Packit Service 30b792
     CLOSED: [2018-03-19 Mon 12:34]
Packit Service 30b792
     :PROPERTIES:
Packit Service 30b792
     :CUSTOM_ID: howto-the-basics
Packit Service 30b792
     :END:
Packit Service 30b792
Packit Service 30b792
     - State "DONE"       from "STARTED"    [2018-03-19 Mon 12:34] \\
Packit Service 30b792
       All four of those are done.
Packit Service 30b792
     - State "STARTED"    from "TODO"       [2018-03-09 Fri 15:26] \\
Packit Service 30b792
       Began with the example code, now to add the text.
Packit Service 30b792
     What everyone expects: encryption, decryption, signing and verifying.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
**** STARTED Key control
Packit Service 30b792
     :PROPERTIES:
Packit Service 30b792
     :CUSTOM_ID: howto-key-control
Packit Service 30b792
     :END:
Packit Service 30b792
Packit Service 30b792
     - State "STARTED"    from "TODO"       [2018-03-19 Mon 12:35] \\
Packit Service 30b792
       Generating keys and subkeys are done, but revocation is still to be done.
Packit Service 30b792
     Generating keys, adding subkeys, revoking subkeys (and keeping
Packit Service 30b792
     the cert key), adding and revoking UIDs, signing/certifying keys.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
**** DONE More key control
Packit Service 30b792
     CLOSED: [2018-03-19 Mon 12:36]
Packit Service 30b792
     :PROPERTIES:
Packit Service 30b792
     :CUSTOM_ID: howto-key-selection
Packit Service 30b792
     :END:
Packit Service 30b792
Packit Service 30b792
     - State "DONE"       from "TODO"       [2018-03-19 Mon 12:36] \\
Packit Service 30b792
       Key selection, searching, matching and counting is done.
Packit Service 30b792
     Selecting keys to encrypt to or manipulate in other ways (e.g. as
Packit Service 30b792
     with key control or the basics).
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
** TODO Documentation SWIG
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: todo-docs-swig
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   Write documentation for the complete SWIG bindings demonstrating
Packit Service 30b792
   the correspondence with GPGME itself.
Packit Service 30b792
Packit Service 30b792
   Note: it is likely that this will be more in the nature of
Packit Service 30b792
   something to be used in conjunction with the existing GPGME
Packit Service 30b792
   documentation which makes it easier for Python developers to use.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
** TODO GUI examples
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: todo-gui-examples
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   Create some examples of using Python bindings in a GUI application
Packit Service 30b792
   to either match or be similar to the old GTK2 examples available
Packit Service 30b792
   with PyME.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
** TODO Replace SWIG
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: todo-replace-swig
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   Selecting SWIG for this project in 2002 was understandable and
Packit Service 30b792
   effectively the only viable option.  The options available now,
Packit Service 30b792
   however, are significantly improved and some of those would resolve
Packit Service 30b792
   a number of existing problems with using SWIG, particularly when
Packit Service 30b792
   running code on both POSIX compliant and Windows platforms.
Packit Service 30b792
Packit Service 30b792
   The long term goal is to replace SWIG by reimplementing the Python
Packit Service 30b792
   bindings using a more suitable means of interfacing with the GPGME
Packit Service 30b792
   C source code.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
*** TODO Replacement for SWIG
Packit Service 30b792
    :PROPERTIES:
Packit Service 30b792
    :CUSTOM_ID: todo-replace-swig-replacement
Packit Service 30b792
    :END:
Packit Service 30b792
Packit Service 30b792
    Decide on a replacement for SWIG.  Currently CFFI is looking like
Packit Service 30b792
    the most viable candidate, but some additional testing and checks
Packit Service 30b792
    are yet to be completed.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
** TODO API for an API
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: todo-api-squared
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   A C API like GPGME is not what most modern developers think of when
Packit Service 30b792
   they hear the term API. Normally they think of something they can
Packit Service 30b792
   interact with like a RESTful web API.  Though RESTful is unlikely
Packit Service 30b792
   given the nature of GPGME and the process of encryption, it may be
Packit Service 30b792
   possible to provide a more familiar interface which can be utilised
Packit Service 30b792
   by developers of other languages for which bindings are not
Packit Service 30b792
   available or for which it is too difficult to create proper
Packit Service 30b792
   bindings.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
** TODO S/MIME
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: s-mime
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   Eventually add some of this, but the OpenPGP details are far more
Packit Service 30b792
   important at the moment.
Packit Service 30b792
Packit Service 30b792
Packit Service 30b792
* Project Task Details
Packit Service 30b792
  :PROPERTIES:
Packit Service 30b792
  :CUSTOM_ID: detailed-tasks
Packit Service 30b792
  :END:
Packit Service 30b792
Packit Service 30b792
** Working examples
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: working-examples
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   The old GUI examples were unable to be retained since they depended
Packit Service 30b792
   on GTK2 and Python 2's integration with GTK2.
Packit Service 30b792
Packit Service 30b792
   Current GPGME examples so far only include command line tools or
Packit Service 30b792
   basic Python code for use with either Python 2.7 or Python 3.4 and
Packit Service 30b792
   above.
Packit Service 30b792
Packit Service 30b792
   Future GUI examples ought to utilise available GUI modules and
Packit Service 30b792
   libraries supported by Python 3.  This may include Qt frameworks,
Packit Service 30b792
   Tkinter, GTK3 or something else entirely.
Packit Service 30b792
Packit Service 30b792
** Documentation
Packit Service 30b792
   :PROPERTIES:
Packit Service 30b792
   :CUSTOM_ID: documentation
Packit Service 30b792
   :END:
Packit Service 30b792
Packit Service 30b792
   The legacy documentation which no longer applies to the Python
Packit Service 30b792
   bindings has been removed.
Packit Service 30b792
Packit Service 30b792
   Current and future documentation will adhere to the GnuPG standard
Packit Service 30b792
   of using Org Mode and not use the reStructuredText (reST) format
Packit Service 30b792
   more commonly associated with Python documentation.  The reasons
Packit Service 30b792
   for this are that this project is best served as shipping with the
Packit Service 30b792
   rest of GPGME and the documentation ought to match that.  There are
Packit Service 30b792
   also aspects of Org Mode's publishing features which are superior
Packit Service 30b792
   to the defaults of reST, including the capacity to generate fully
Packit Service 30b792
   validating strict XHTML output.
Packit Service 30b792
Packit Service 30b792
   If reST files are required at a later point for future inclusion
Packit Service 30b792
   with other Python packages, then that format can be generated from
Packit Service 30b792
   the .org files with Pandoc before being leveraged by either
Packit Service 30b792
   Docutils, Sphinx or something else.
Packit Service 30b792
Packit Service 30b792
   While there are some advanced typesetting features of reST which
Packit Service 30b792
   are not directly available to Org Mode, more often than not those
Packit Service 30b792
   features are best implemented with either HTML and CSS, with LaTeX
Packit Service 30b792
   to produce a PDF or via a number of XML solutions.  Both reST and
Packit Service 30b792
   Org Mode have multiple paths by which to achieve all of these.