Development

yt is developed completely in the open. Our project on BitBucket contains the repositories that make up the source code and documentation, and even this website. Since the documentation is in the source code repository, when you download the source, you get everything necessary to submit changes to the code or the docs. yt is released under the modified BSD license.

We invite contributions of any type -- code, analysis modules, documentation, blog posts, and even enhancements for the website. Below are some hints on what to expect and how to get involved, but please stop by the yt-dev mailing list or #yt on chat.freenode.org if you have any questions. Additionally, we use slack as a communication platform for development discussions. Feel free to sign up and try it out.

What To Expect

Contributions to yt go through several stages. Once you've submitted a pull request, to the source code, the documentation, or even the blog, you will likely receive comments on it from developers or other individuals. Every pull request gets reviewed, even those issued by developers that have been with the project for years.

These comments might address stylistic issues, may request changes to the variable names, may suggest methods of testing, or may even suggest alternate approaches to solving given problems.

We're grateful for every contribution, and we hope to hear from you.

How to Get Started

Here's the simplest way to get started contributing to yt. You can fork yt on Bitbucket, push some changes to your fork, and issue a pull request.

In the documentation you can find an an outline of how to contribute changes, but here are some handy tips and tricks:

  • Use hg bookmark to track where you are in your development. (Avoid using branches!)
  • yt has a pretty forky development process, so check out how to use commands like hg identify and hg log for ease of navigation.
  • Push to your repository and issue pull requests from there.
  • Add tests and documentation for new functionality. The tests are run on every pull request (yt-fido will let you know how your pull request does!) and on every commit to the repository.
  • If you get stuck or want feedback, drop by IRC or the mailing list!

Community Directed Development

The process of designing yt is conducted through consensus-oriented and code-driven discussions. In the waning months of 2012, a process was somewhat codified for discussing major design decisions and strategizing about preserving and breaking backwards compatibility. Large-reaching design discussions and decisions are described in "yt Enhancement Proposals" (YTEPs). These documents are stored in a repository, they are discussed both on the mailing list and through the process of pull requests and they are meant to be living documents that reflect how and why changes to fundamental components of yt are made. The current set of all YTEPs can be found at ytep.readthedocs.org.

Because yt is used for analysis and visualization by a number of individuals across the globe, we try to avoid breaking existing scripts and functionality without very good reason. The process of writing, submitting and iterating on a design document can put overhead on the process of coding and hacking away, but we want to ensure that yt is a reliable basis for long-term and stable analysis.

yt Community Code of Conduct

The community of participants in open source Scientific projects is made up of members from around the globe with a diverse set of skills, personalities, and experiences. It is through these differences that our community experiences success and continued growth. We expect everyone in our community to follow these guidelines when interacting with others both inside and outside of our community. Our goal is to keep ours a positive, inclusive, successful, and growing community.

As members of the community,

  • We pledge to treat all people with respect and provide a harassment- and bullying-free environment, regardless of sex, sexual orientation and/or gender identity, disability, physical appearance, body size, race, nationality, ethnicity, and religion. In particular, sexual language and imagery, sexist, racist, or otherwise exclusionary jokes are not appropriate.
  • We pledge to respect the work of others by recognizing acknowledgment/citation requests of original authors. As authors, we pledge to be explicit about how we want our own work to be cited or acknowledged.
  • We pledge to welcome those interested in joining the community, and realize that including people with a variety of opinions and backgrounds will only serve to enrich our community. In particular, discussions relating to pros/cons of various technologies, programming languages, and so on are welcome, but these should be done with respect, taking proactive measure to ensure that all participants are heard and feel confident that they can freely express their opinions.
  • We pledge to welcome questions and answer them respectfully, paying particular attention to those new to the community. We pledge to provide respectful criticisms and feedback in forums, especially in discussion threads resulting from code contributions.
  • We pledge to be conscientious of the perceptions of the wider community and to respond to criticism respectfully. We will strive to model behaviors that encourage productive debate and disagreement, both within our community and where we are criticized. We will treat those outside our community with the same respect as people within our community.
  • We pledge to help the entire community follow the code of conduct, and to not remain silent when we see violations of the code of conduct. We will take action when members of our community violate this code such as contacting confidential@yt-project.org (all emails sent to this address will be treated with the strictest confidence) or talking privately with the person.

This code of conduct applies to all community situations online and offline, including mailing lists, forums, social media, conferences, meetings, associated social events, and one-to-one interactions.

The yt Community Code of Conduct was adapted from the Astropy Community Code of Conduct, which was partially inspired by the PSF code of conduct.