SciPy modules: maintainers & status
===================================

This document gives an overview of who the maintainers of modules within Scipy
are, what their responsibilities are and what (in their view) are the current
state and possible future directions for the modules.

Maintainers will aim to:

    - Respond to tickets, PRs and mailing list questions within a reasonable
      time frame.
    - Keep an overview of the current status and future directions of the
      module up to date in this document.
    - Indicate whether PRs are ready to be merged or not, and try to resolve
      any differences of opinion on merging code if necessary.

The above are listed as "aims" on purpose.  All developers work on Scipy in
their free time and therefore, while we intend to do the best we can in the
limited time available for our open source work, it is possible that we don't
have the bandwidth to respond to every single issue.  The goal is to have more
than one maintainer for each module, in which case this should rarely be an
issue.


Some unwritten rules of SciPy development, written down
-------------------------------------------------------

Any significant decisions on adding (or not adding) new features, breaking
backwards compatibility or making other significant changes to the codebase
should be made on the scipy-dev mailing list after a discussion (preferably
with full consensus).

Any non-trivial change (where trivial means a typo, or a one-liner maintenance
commit) has to go in through a pull request (PR).  It has to be reviewed by
another developer.  In case review doesn't happen quickly enough and it is
important that the PR is merged quickly, the submitter of the PR should send a
message to mailing list saying he/she intends to merge that PR without review
at time X for reason Y unless someone reviews it before then.

Changes and new additions should be tested. Untested code is broken code.

Who gets commit rights should always be discussed on the scipy-dev mailing list
before the change is made.


FAQ
---
Q: How can I keep track of tickets for a (part of a) module?

A: Each module can have a default owner in Trac, who automatically gets an
email for each new ticket.  Trac can also generate feeds based on filters
defined in the "Custom Query" tab (e.g. by component, status).  For example, to
see all open tickets for scipy.optimize ordered by priority, use::

       http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
       status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
       &component=scipy.optimize&order=priority

Or access the RSS feed at::

       http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
       status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
       &format=rss&component=scipy.optimize&order=priority


Q: How can I keep track of pull requests (PRs) and comments on Github?

A: Only people listed as committers get email notifications for new PRs. And
they don't get it for comments unless they have commented themselves on that PR
before.  There are RSS feeds though that can be followed by anyone:

    - All chatter: http://new.scipy.org/scipy-chatter.xml
    - Only new pull requests: http://new.scipy.org/scipy-pull.xml


Q: How is this list of maintainers maintained, and how does one become a
maintainer?

A: This list is kept in the Scipy git repository.  Changes to it should be made
by sending a pull request.  For some changes (such as adding a new maintainer)
it is expected that these are discussed on the scipy-dev mailing list first.
To become a maintainer, someone should have an understanding of the code, have
contributed at least a few features or bug fixes to that code, and express an
interest in being a maintainer.


Q: What is the relationship between the list of maintainers and the list of
people with commit rights?

A: Due to the distributed nature of git, it is easily possible to be a
maintainer without having commit rights.  It is also very well possible to be a
committer without being a maintainer for a specific module.  In practice
however, there will naturally be a large overlap between the group of
maintainers and committers.


Modules
-------

scipy.cluster
`````````````

Maintainers:

    - David Warde-Farley

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.cluster&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.cluster&order=priority>`__


scipy.constants
```````````````

Maintainers:

    - Vincent Davis

Status:

The constants module is up-to-date (NIST 2010 CODATA) and has no known bugs.

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.constants&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.constants&order=priority>`__


scipy.fftpack
`````````````

Maintainers:

    - David Cournapeau

Status:

The fftpack module is stable, with few known bugs and little development
happening currently.

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.fftpack&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.fftpack&order=priority>`__


scipy.integrate
```````````````

Maintainers:

    - Travis Oliphant

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.integrate&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.integrate&order=priority>`__


scipy.interpolate
`````````````````

Maintainers:

    - Pauli Virtanen
    - Travis Oliphant

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.interpolate&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.interpolate&order=priority>`__


scipy.io
````````

Maintainers:

    - Matthew Brett (io.matlab)
    - Thomas Robitaille (io.idl)
    - David Cournapeau (io.harwell_boeing)
    -                  (io.arff)
    -                  (io.netcdf)
    -                  (io.wavfile)

Status:

The io.idl module is stable and has no known bugs. It will need to be updated
as needed if the IDL file format evolves, or if there are any bugs discovered.
There is no real need for any new features.

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.io&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.io&order=priority>`__

scipy.linalg
````````````

Maintainers:

    - Pauli Virtanen

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.linalg&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.linalg&order=priority>`__


scipy.misc
``````````

Maintainers:

    - Ralf Gommers

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.misc&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.misc&order=priority>`__


scipy.ndimage
`````````````

Maintainers:

    - Stefan van der Walt
    - Thouis (Ray) Jones

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.ndimage&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.ndimage&order=priority>`__


scipy.odr
`````````

Maintainers:

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.odr&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.odr&order=priority>`__


scipy.optimize
``````````````

Maintainers:

    - Denis Laxalde
    - Pauli Virtanen

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.optimize&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.optimize&order=priority>`__


scipy.signal
````````````

Maintainers:

    - Warren Weckesser
    - David Cournapeau
    - Travis Oliphant

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.signal&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.signal&order=priority>`__


scipy.sparse
````````````

Maintainers:

    - Jake Vanderplas
    - Stefan van der Walt

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.sparse&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.sparse&order=priority>`__


scipy.sparse.linalg
```````````````````

Maintainers:

    - Pauli Virtanen
    - Jake Vanderplas

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.sparse.linalg&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.sparse.linalg&order=priority>`__


scipy.spatial
`````````````

Maintainers:

    - Waren Weckesser
    - Pauli Virtanen (Qhull wrappers)

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.spatial&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.spatial&order=priority>`__


scipy.special
`````````````

Maintainers:

    - Pauli Virtanen

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.special&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.special&order=priority>`__


scipy.stats
```````````

Maintainers:

    - Josef Perktold
    - Warren Weckesser
    - Ralf Gommers

Status:

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.stats&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.stats&order=priority>`__


scipy.weave
```````````

Status:

Weave is unmaintained, and only kept for backwards compatibility.
For new development, it is recommended to use Cython.

`Open tickets <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&component=scipy.weave&order=priority>`__
| `RSS feed <http://projects.scipy.org/scipy/query?status=apply&status=needs_decision&
status=needs_info&status=needs_review&status=needs_work&status=new&status=reopened
&format=rss&component=scipy.weave&order=priority>`__



Infrastructure and web presence
-------------------------------

Websites
````````

Maintainers:

    - Scott Sinclair (scipy.github.com)

Status:

The scipy.org website is currently a wiki.  The plan is to convert the
main page and most important content to a Sphinx-based static site.
Some progress has been made on this, visible at
http://scipy.github.com.  Additional input is required on the site
design, as well as where to host the content from the current site
that won't be included in the new site.  Pull requests for this site
should be made against https://github.com/scipy/scipy.org-new


Documentation server/wiki
`````````````````````````

Maintainers:

    - Pauli Virtanen
    - Gael Varoquaux

Trac
````

Maintainers:

    - Pauli Virtanen


Continuous Integration server
`````````````````````````````

Maintainers:

    - Stefan van der Walt
    - Chris Ball

Status:

This server is in the process of being set up.  After testing the setup is
done, a request for build slaves will be sent to the scipy-dev mailing list.


Build tools
```````````

Maintainers:

    - David Cournapeau (Bento)


Other
`````

    - Release manager: Ralf Gommers
    - Planet SciPy: Gael Varoquaux
