Skip to content

Restify PEP 206 #144

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 29, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 73 additions & 61 deletions pep-0206.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,112 +5,124 @@ Last-Modified: $Date$
Author: A.M. Kuchling <[email protected]>
Status: Withdrawn
Type: Informational
Content-Type: text/x-rst
Created:
Post-History:


Introduction
============

This PEP describes the Python Advanced Library, a collection of
high-quality and frequently-used third party extension modules.

This PEP describes the Python Advanced Library, a collection of
high-quality and frequently-used third party extension modules.

Batteries Included Philosophy
=============================

The Python source distribution has long maintained the philosophy
of "batteries included" -- having a rich and versatile standard
library which is immediately available, without making the user
download separate packages. This gives the Python language a head
start in many projects.

However, the standard library modules aren't always the best
choices for a job. Some library modules were quick hacks
(e.g. calendar, commands), some were designed poorly and are now
near-impossible to fix (cgi), and some have been rendered obsolete
by other, more complete modules (binascii offers the same features
as the binhex, uu, base64 modules). This PEP describes a list of
third-party modules that make Python more competitive for various
application domains, forming the Python Advanced Library.

The deliverable is a set of scripts that will retrieve, build, and
install the packages for a particular application domain. The
Python Package Index now contains enough information to let
software automatically find packages and download them, so the
time is ripe to implement this.

The Python source distribution has long maintained the philosophy
of "batteries included" -- having a rich and versatile standard
library which is immediately available, without making the user
download separate packages. This gives the Python language a head
start in many projects.

However, the standard library modules aren't always the best
choices for a job. Some library modules were quick hacks
(e.g. calendar, commands), some were designed poorly and are now
near-impossible to fix (cgi), and some have been rendered obsolete
by other, more complete modules (binascii offers the same features
as the binhex, uu, base64 modules). This PEP describes a list of
third-party modules that make Python more competitive for various
application domains, forming the Python Advanced Library.

The deliverable is a set of scripts that will retrieve, build, and
install the packages for a particular application domain. The
Python Package Index now contains enough information to let
software automatically find packages and download them, so the
time is ripe to implement this.

Currently this document doesn't suggest *removing* modules from
the standard library that are superseded by a third-party module.
That's difficult to do because it entails many backward-compatibility
problems, so it's not worth bothering with now.

Please suggest additional domains of interest.
Currently this document doesn't suggest *removing* modules from
the standard library that are superseded by a third-party module.
That's difficult to do because it entails many backward-compatibility
problems, so it's not worth bothering with now.

Please suggest additional domains of interest.


Domain: Web tasks
=================

XML parsing: ElementTree + SAX.
XML parsing: ElementTree + SAX.

URL retrieval: libcurl? other possibilities?
URL retrieval: libcurl? other possibilities?

HTML parsing: mxTidy? HTMLParser?
HTML parsing: mxTidy? HTMLParser?

Async network I/O: Twisted
Async network I/O: Twisted

RDF parser: ???
RDF parser: ???

HTTP serving: ???
HTTP serving: ???

HTTP cookie processing: ???
HTTP cookie processing: ???

Web framework: A WSGI gateway, perhaps? Paste?
Web framework: A WSGI gateway, perhaps? Paste?

Graphics: PIL, Chaco.
Graphics: PIL, Chaco.


Domain: Scientific Programming
==============================

Numeric: Numeric, SciPy
Numeric: Numeric, SciPy

Graphics: PIL, Chaco.
Graphics: PIL, Chaco.


Domain: Application Development
===============================

GUI toolkit: ???
GUI toolkit: ???

Graphics: Reportlab for PDF generation.
Graphics: Reportlab for PDF generation.


Domain: Education
=================

Graphics: PyGame
Graphics: PyGame


Software covered by the GNU General Public License
==================================================

Some of these third-party modules are covered by the GNU General
Public License and the GNU Lesser General Public License.
Providing a script to download and install such packages, or even
assembling all these packages into a single tarball or CD-ROM,
shouldn't cause any difficulties with the GPL, under the "mere
aggregation" clause of the license.

Some of these third-party modules are covered by the GNU General
Public License and the GNU Lesser General Public License.
Providing a script to download and install such packages, or even
assembling all these packages into a single tarball or CD-ROM,
shouldn't cause any difficulties with the GPL, under the "mere
aggregation" clause of the license.


Open Issues
===========

What other application domains are important?
What other application domains are important?

Should this just be a set of Ubuntu or Debian packages? Compiling
things such as PyGame can be very complicated and may be too
difficult to automate.
Should this just be a set of Ubuntu or Debian packages? Compiling
things such as PyGame can be very complicated and may be too
difficult to automate.


Acknowledgements

The PEP is based on an earlier draft PEP by Moshe Zadka, titled
"2.0 Batteries Included."
================

The PEP is based on an earlier draft PEP by Moshe Zadka, titled
"2.0 Batteries Included."

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PEP does not have the copyright notice, something that's discussed in #123
Should it be added here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe @akuchling (the PEP author) can add one or tell you what it should be? (I presume public domain, like all other PEPs, but it's polite to ask.)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @gvanrossum :)
I won't make changes wrt copyright notice without @akuchling 's input.
If anything, perhaps it should go in a separate PR anyway?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, adding a copyright can be a separate PR.


Local Variables:
mode: indented-text
indent-tabs-mode: nil
End:
..
Local Variables:
mode: indented-text
indent-tabs-mode: nil
End: