120 lines
4.4 KiB
Plaintext
120 lines
4.4 KiB
Plaintext
PEP: 206
|
||
Title: 2.0 Batteries Included
|
||
Version: $Revision$
|
||
Owner: moshez@math.huji.ac.il (Moshe Zadka)
|
||
Python-Version: 2.0
|
||
Status: Draft
|
||
|
||
|
||
|
||
Introduction
|
||
|
||
This PEP describes the `batteries included' proposal for Python
|
||
2.0, the fat distribution containing commonly used third party
|
||
extension modules. This PEP tracks the status and ownership of
|
||
this proposal, slated for introduction in Python 2.0. It contains
|
||
a description of the proposal and outlines how to support it.
|
||
|
||
|
||
|
||
Batteries Included Philosophy
|
||
|
||
The Python source distribution always 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 Python standard library
|
||
often relies on important Open Source libraries which might be
|
||
unavailable on many computers, so that the user has to separately
|
||
download and compile those. Some examples are the zlib
|
||
compression library, and the gmp number manipulation library.
|
||
|
||
The original coinage of the term "batteries included" can be found
|
||
here:
|
||
|
||
http://www.uk.research.att.com/~fms/ipc7/tr-1998-9.html
|
||
|
||
|
||
|
||
The Proposed Solution
|
||
|
||
The proposed solution is to download a few important third-party
|
||
libraries, and distribute them with the source distribution of
|
||
Python. In addition, the build procedure will be changed to build
|
||
those libraries by default, and build the Python modules which
|
||
rely on them linked against those libraries. Individual users
|
||
will still be able to link the Python modules against already
|
||
installed libraries, or disable them completely.
|
||
|
||
Additionally, some Open Source third-party Python modules will
|
||
also be distributed together with the source distribution. The
|
||
difference between those and external libraries is that the latter
|
||
are distributed in order to make the Python distribution self
|
||
contained, and the former are added so there will be new
|
||
functionality in out-of-the-box Python.
|
||
|
||
Here is the tentative list of libraries which are proposed to be
|
||
dealt with in this manner, and where they can be downloaded:
|
||
|
||
zlib -- http://www.info-zip.org/pub/infozip/zlib/zlib.tar.gz
|
||
expat -- ftp://ftp.jclark.com/pub/xml/expat.zip
|
||
Tcl -- http://dev.scriptics.com:80/download/tcl/tcl8_3/tcl8.3.1.tar.gz
|
||
Tk -- http://dev.scriptics.com:80/download/tcl/tcl8_3/tk8.3.1.tar.gz
|
||
PIL -- http://www.pythonware.com/downloads/Imaging-1.1.tar.gz
|
||
libjpeg -- ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
|
||
ncurses -- ftp://dickey.his.com/ncurses/ncurses.tar.gz
|
||
|
||
TBD, the following three:
|
||
|
||
NumPy -- http://download.sourceforge.net/numpy/Numerical-15.3.tgz
|
||
Pmw -- ftp://ftp.dscpl.com.au/pub/pmw/Pmw.0.8.4.tar.gz
|
||
BLT -- ftp://ftp.tcltk.com/aa004735/pub/blt/BLT2.4u.tar.gz
|
||
|
||
|
||
Connection to Distutils
|
||
|
||
Since Python 2.0 comes with a new mechanism of distributing Python
|
||
modules, called ``distutils'', we should be able to use it. Specificially,
|
||
since distutils has the capability or building Python modules in an
|
||
automatic fashion, it is hoped that some of the work will consist in
|
||
creating a new directory with the source, and having the ``super-make''
|
||
run "./setup --install" in those directories. This should at least take
|
||
care of PIL, NumPy and Pmw. In addition, it is hoped that this mechanism
|
||
will be easy enough to add other Python modules as user requests direct
|
||
us.
|
||
|
||
|
||
|
||
|
||
Software covered by the GNU Public License
|
||
|
||
While many Python modules rely on software distributed under the
|
||
GNU General Public License and the GNU Lesser General Public
|
||
License, no such sources are proposed here to be added to the
|
||
Python interpreter. Currently, the Python interpreter is
|
||
distributed under a closed-source-friendly license, which means
|
||
that it is possible to include it in a closed source product.
|
||
Making redistributers worry about which parts they need to remove
|
||
to make closed-source redistribution legal might cost more then
|
||
the benefits.
|
||
|
||
|
||
|
||
Open Issues
|
||
|
||
Where does all this source live?
|
||
|
||
What should the build procedure look like?
|
||
|
||
What to do if compilation of a supporting library fails?
|
||
|
||
ESR also mentioned libpng, but I don't know of a Python module
|
||
that uses it.
|
||
|
||
|
||
|
||
Local Variables:
|
||
mode: indented-text
|
||
indent-tabs-mode: nil
|
||
End:
|