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: 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 piddle -- http://download.sourceforge.net/piddle/piddle-1.0b7.tgz 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: