Contributing Code
=================

We'd love your contributions to ``yt``!

``yt`` is designed to be accessible to contributions, of both enhancements to
the core packages and the library of recipes and scripts for performing common
-- and not-so-common -- tasks.  The ``yt`` dev community is growing, and we're
eager to have newcomers on board.

On the main Wiki page, `some guidelines
http://yt.enzotools.org/wiki/GettingInvolved`_ have been left to help you on
your way to adding code, contributing modules, and helping out.

Project Ideas
-------------

There are lots of places in ``yt`` where new extensions could be added, or new
functionality put in place.  Here are a few.

Adding Support for a New Code
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``yt`` strives to be a general-purpose analysis tool for astrophysical data.
To that end, we'd like to short up our support for codes besides Enzo, as well
as ensure that the other codes we support -- Orion, Tiger, etc -- are
well-supported.

`A page has been set up http://yt.enzotools.org/wiki/AddingSupportForANewCode`_
on the Trac site to describe the method of adding support for a new code to
``yt``.  Please feel free to use it as a reference, but if you would like some
assistance, drop a line to one of the mailing lists (see :ref:`mailing-list`)
for more help.

GUIs and Interactive Exploration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The 1.7 release adds some functionality for interactive exploration of data,
but this could be greatly expanded.  In particular, the volume rendering could
be converted to a hardware based volume renderer (some simple sketches of this
exist in the mercurial repository), the VTK interface could be improved, and
the various components that form the interface for examining data could be
integrated.

Simulated Observations
^^^^^^^^^^^^^^^^^^^^^^

The functionality to construct simulated observations is an end goal for
``yt``.  Transforming simulation output into mock observations is the Stanley
Cup.

Bug Fixes
---------

If you have simple bug fixes, please feel free to attach them to a ticket on
the `bug tracker <http://yt.enzotools.org/newticket/>`_ (you might have to
`register <http://yt.enzotools.org/register>`_ first) or to email them to one
of the developers directly.  We're always happy to hear about the things we've
done wrong, and how you've fixed them!

Licensing
---------

All contributed code must be GPL-compatible; we ask that you consider licensing
under the GPL version 3, but we will consider submissions of code that are
BSD-like licensed as well.  If you'd rather not license in this manner, but
still want to contribute, just drop me a line and I'll put a link on the main
wiki page to wherever you like!

Fields and Extensions
---------------------

``yt`` comes with a bunch of derived fields.  However, if you have constructed
some that add interesting analysis quantities, please feel free to send them to
one of the developers!

Additionally, if you have a sub-module that extends ``yt`` in a fun or exciting
way, we'd be very happy to include it.  Recently we've added light cone
generators, halo profilers, and work is even ongoing on a parallel halo finder!

.. _free_repo_space:

Analysis Code and Examples
--------------------------

Because ``yt`` can be a bit difficult to become fully acquainted with, we
encourage you to share your analysis scripts.  Specifically, we will provide
you with free repository space to store any analysis scripts that went into the
writing of a paper.  Through this, we hope to build up a library not only of
usage-cases, but of real-world examples of plot generation and data analysis.

If you are interested in submitting your scripts, please contact Matt Turk at
``matthewturk@gmail.com``.
