Skip to content

Commit

Permalink
Merge pull request #222 from Quansight-Labs/gsoc2020-ideas
Browse files Browse the repository at this point in the history
Add initial draft of ideas page.
  • Loading branch information
rgommers committed Jan 26, 2020
2 parents e9c862a + f0c167e commit 39c49b6
Show file tree
Hide file tree
Showing 2 changed files with 146 additions and 0 deletions.
144 changes: 144 additions & 0 deletions docs/gsoc/2020/ideas.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
GSoC 2020 project ideas
=======================

Introduction
------------

This is the Google Summer of Code 2020 (GSoC'20) ideas page for ``uarray``,
``unumpy`` and ``udiff``. The ``uarray`` library is is a backend mechanism
geared towards array computing, but intended for general use. ``unumpy`` is an
incomplete stub of the NumPy API that can be dispatched by ``uarray``.
``udiff`` is a general-purpose automatic differentiation library built
on top of ``unumpy`` and ``uarray``.

This page lists a number of ideas for Google Summer of Code projects for
``uarray``, plus gives some pointers for potential GSoC students on how to get
started with contributing and putting together their application.

Guidelines & requirements
-------------------------

``uarray`` plans to participate in GSoC'20 under the `umbrella of Python Software Foundation <http://python-gsoc.org/>`_.

We expect from students that they're at least comfortable with Python
(intermediate level). Some projects may also require C++ or C skills.
Knowing how to use Git is also important; this can be learned before the
official start of GSoC if needed though.

If you have an idea of what you would like to work on (see below for ideas)
and are considering participating:


1. Read the `PSF page <http://python-gsoc.org/>`_ carefully, it contains
important advice on the process.
2. Read `advice on writing a proposal <http://turnbull.sk.tsukuba.ac.jp/Blog/SPAM.txt#how-to-spam-in-detail>`_
(written with the Mailman project in mind, but generally applicable)
3. Make a enhancement/bugfix/documentation fix -- it does not have to be big,
and it does not need to be related to your proposal. Doing so before
applying for the GSoC is a hard requirement for ``uarray``. It helps
everyone you get some idea how things would work during GSoC.
4. Start writing your proposal early, post a draft to the issue tracker and
iterate based on the feedback you receive. This will both improve the
quality of your proposal and help you find a suitable mentor.

Contact
-------

If you have a question *after checking all guideline pages above*, you can
open an issue in the issue tracker.

``uarray`` project ideas
------------------------

``uarray``: Add querying for state
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Adding querying for the ``uarray._BackendState`` object will allow users of
``uarray`` to see what's inside the opaque object. Some parts can be re-used
from the pickling machinery.

It can also help downstream users to access the parameters of the currently
set backend, which is a planned feature of ``uarray``. Here is a list of goals
for this project:

* Allow downstream projects to query the list of backends.
* Allow downstream projects to query the list of parameters for a backend.

This would enable, for example, the following use-cases:

* Allow a downstream library to detect a backend and run specialised code for
it.
* Allow a downstream library to fail-fast on a known-unsupported backend.

This project has a straightforward design and needs some implementation work,
and will require interacting with the mentors to implement and polish.

* Required knowledge: Python C-API and C++
* Difficulty level: medium
* Potential mentors: Peter Bell and Hameer Abbasi

``uarray``: Allow subdomains
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This idea would allow a backend to encompass functions from more than one
domain.

The primary goal of this project would be:

* Develop a system that allows, via some kind of matching mechanism, to select
which domains it supports, **while maintaining backward compatibility**.

This would allow a backend targeting NumPy to also target, for example, the
``numpy.random`` submodule. Since the domain for functions in
``numpy.random`` will be just that: ``numpy.random``, it won't match
backends defined with the ``numpy`` domain, since it's an exact string
match.

The second objective here would be to allow backends to target submodules
of projects rather than the whole project. For example, targeting just
``numpy.random`` or ``numpy.fft`` without targeting all of NumPy.

For more detail see `this issue <https://github.com/Quansight-Labs/uarray/issues/189>`_.

This project has a somewhat complicated design and needs some involved
implementation work, and will require interacting with the mentors to flesh
out and work through.

* Required knowledge: Python C-API and C++
* Difficulty level: hard
* Potential mentors: Peter Bell and Hameer Abbasi

``unumpy``: Expand overall coverage
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This project is split into two parts:

* Adding further coverage of the NumPy API.
* Adding more backends to ``unumpy``.

We realise this is a large (possibly open-ended) undertaking, and so there
will need to be a minimum amount of work done in order to pass (~150 functions,
if time allows a JAX backend).

* Required knowledge: Python (intermediate level)
* Difficulty level: easy
* Potential mentors: Prasun Anand and Hameer Abbasi

``udiff``: Completion and Packaging
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This requires completion and packaging of the ``udiff`` library. Potential
goals include:

1. Publishing an initial version to PyPI.
2. Adding matrix/tensor calculus support.
3. Adding tests.
4. Adding documentation on use.
5. Publishing a final version to PyPI.

This project has a somewhat some minimal design and needs some involved
implementation work, and will require interacting with the mentors to flesh
out and work through.

* Required knowledge: Python (intermediate level) and calculus
* Difficulty level: medium
* Potential mentors: Prasun Anand and Hameer Abbasi
2 changes: 2 additions & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ Choose the documentation page relevant to you:

generated/uarray

gsoc/2020/ideas


Indices and tables
==================
Expand Down

0 comments on commit 39c49b6

Please sign in to comment.