Skip to content
Sergio Rey edited this page Sep 22, 2017 · 2 revisions

DRAFT: PySAL 3.0: Onwards and Upwards

This document provides a roadmap for the future development of the Python Spatial Analysis Library PySAL.

Currently (release 1.14), PySAL is distributed as a monolithic package composed of a number of core subpackages together with a collection of contrib packages. While this structure worked well for the first seven years of the project, a number of constraints and growing pains led to discussions by developers to consider a reorganization of the library.

While PySAL has been Python 3 compatible since 1.11, the current development model of supporting 2.x code constrains the library from using advanced features of Python 3.x, as well as introducing some additional maintenance burden on the project that crowds-out the addition of new spatial analytical functionality.

To address these issues, a number of developers have been working on a refactoring that moves most of the core subpackages and contributed packages out of the monolithic library and into their own individual packages. This should lower the maintenance costs of the individual packages as now updates to their codebases do not require a completion of over 700 unit tests. This model also allows for cleaner/clearer attribution to the lead developers/maintainers on each of the packages.

Under this refactoring, the PySAL package will not go away, but rather will become a meta-package that relies on the new individual packages. The design of the meta package will strive to maintain backward compatibility with the PySAL 1.14 api so that disruption to existing end-users of PySAL is minimized. Because there may be some breakage we will bump the versioning to PySAL 3.x to reflect API changes.

A second change for the meta-package will be a change back to a 6 month release cycle. For each release, the advances in the master branches of each of the dependencies will represent the new feature set for the PySAL release. Individual packages themselves can stay on a rolling or fixed release at the discretion of the maintainer.

PySAL 3.0

At present the plan is to a final release of the PySAL 2.X series in the fall of 2017. That release of PySAL 2.X will be the last version of PySAL that supports Python 2. This will also be a long term support release, taking in bug fixes for a minimum of 5 years (July 2023), or longer if maintainers step forward.

The PySAL 3.0 series will be based on Python 3.x so as to exploit the new features of Python. Depending on the transitions of the dependencies, this version may be released as early as January 2018. It will be the development tree for PySAL enhancements.