ASWF Dev Days 2024

Hello, and welcome to ASWF Dev Days 2024!

What is Dev Days?

The Academy Software Foundation is sponsoring a Dev Days event September 26-27, 2024 to promote interest in contributing to open source software projects. This event encourages new developers by stepping you through making a simple contribution to one of the ASWF projects - OpenEXR, MaterialX, OpenColorIO, OpenImageIO to name a few. The OpenEXR project also maintains Imath, the C++ and python library of 2D and 3D vector, matrix, and math operations, and we welcome contributions there as well.

To participate, any contribution qualifies, but consider choosing a task marked "good first issue" on one of the ASWF project GitHub repos. These issue are simple changes that require minimal expertise in the project codebase, some as simple as formatting fixes to the project documentation. Project maintainers will be on hand to shepherd you through getting the contributor license agreement approved, forking and cloning the GitHub repo, making and testing the change, and submitting a pull request. When you’re done, you’ll understand the process and have first-hand experience with contributing to an open source software project, and you may have made some new connections with developers across the industry.

Check out the ASWF Dev Days site and the participating projects, and if you are interested in participating, please register here! If you have questions, please reach out, or join the #devdays slack channel on the ASWF Slack instance.

If you are interested specifically in OpenEXR or Imath, say hi on our Slack or mail list: academysoftwarefdn#openexr or openexr-dev@lists.aswf.io. Introduce yourself, and let us know what you'd like to work on (or ask for advice on what to work on).

Why Is This Helpful to You and Your Company?

Participation in open source projects can be an enriching professional experience: becoming more knowledgeable about, contributing to, and steering technologies that are critical to us and the industry as a whole, while collaborating with, learning from, and having your work seen and acknowledged by your peers at other studios. This event is a low-stakes way to dip your toes into any of these projects for a day.

This is for you to get something out of, but it's also of benefit to our companies. These projects are not just fun, do-gooder tasks. Every one of the ASWF projects is a critical technology underlying our tools and productions. Sometimes, though, we may have only one person who is knowledgeable about the internals and feels comfortable fixing or enhancing these projects, and that's a risk given how important they are. And properly maintaining an industry-critical software tool is a lot of work! So it's helpful for us to have multiple people who feel like they can jump in and make changes needed.

Tools You'll Need

Making a contribution involves several tools and technologies, although the project community can help you through the process if you have never used them.

Don't be scared away if you haven't used these tools! The basics are easy to learn.

The basics include:

  • GitHub - OpenEXR and Imath are hosted on GitHub, so contributions use the GitHub interface. You'll need a GitHub account in order to contribute. You'll fork and clone the OpenEXR/Imath repo for your contribution.

  • git - Git is the version control system though which you make contributions to the project. You'll create a branch and a commit (and don't forget to sign it!).

  • CMake - building OpenEXR and Imath requires CMake, although the installation documentation should step you through the process without any deep knowledge.

  • For changes to the website, or the example source code in the technical documentation, you'll need to use sphinx and reStructuredText.

  • C++ - many of the project ideas for OpenEXR/Imath require using C++, although a basic introduction should be sufficient.

Hopefully, the documentation on https://openexr.com and https://imath.readthedocs.io should be sufficient to explain the process. If you find it confusing, consider submitting an edit to make it easier for newcomers!

Preparation

Check out https://www.aswf.io/dev-days-2024/, and register through the online form.

Before September 26:

  • Consider attending the OpenEXR Technical Steering Committee meeting on September 19. 2024, at 1:30pm Pacific Time. The calendar invite is here. Meet the maintainers and ask any questions.

  • If you're doing this at work, arrange with your supervisor to get the time on those days to work on it.

  • Also, speak to your manager about signing the Contributor License Agreement. The information that your legal department will likely need is here. This declares that you have the rights to the code you are contributing, and it's required even for small changes.

  • If you are a student or not currently employed, you can sign the CLA as an individual.

  • Create a GitHub account if you don't already have one. Check with your supervisor to be sure, but most open source developers use their personal emails for their GitHub accounts, so that their GitHub profile and contribution history follows them from company to company.

  • Read the OpenEXR contribution guidelines, which explains the expected workflow and policy around pull requests, and the coding guidelines. Also read the project Code of Conduct.

  • Fork the OpenEXR and/or Imath GitHub repo, clone it locally, and follow the install instructions to build it from source.

Choosing a Task

The hardest part is settling on something to do! But don't overthink it.

Ideally, choose a task that's big enough that you'll learn something and that will be helpful to the project, but small enough that you can probably complete it with one day's effort. Hard enough to stretch you, easy enough to leave you excited and wanting more.

For ideas, consider the "good first issues" on either the OpenEXR Issues page or the Imath Issues page. Feel free to choose any other issue as well, or any other contribution that you find appealing.

Generally speaking, several areas are good for a first contribution:

  • Fix the documentation. There are numerous formatting glitches that need to be fixed, which is a good introduction to reStructuredText. Also, there are some glitches with the example source code on the website, a gentle introduction to the API. And of course, if any of the explanations on the website aren't clear to beginners, we welcome suggestions to improve the industructions.

  • Add a test. OpenEXR and Imath use SonarCloud to report code coverage on the test suite, and the online report to see lines of code that are never executed. Extend the code to reach these lines and validate the benahvior, which in some cases is quite simple. OpenEXR is here and Imath is here.

  • Add an example image to the image repo and online gallery. These simple files are meant to illustrate the behavior of the file format, but many features are missing from the suite.

NOTE: Before you start work on an issue in earnest, post a comment alerting others that you're looking into it. Otherwise, before you finish you may find that someone else has beaten you to it!

A list of ideas for more substantial contributions is on the OpenEXR wiki. Although these are beyond the scope of the spirit of Dev Days, feel free to discuss these as well.