Contributing to ARENA
Thanks for your willingness to help improve our flexible, programmatic, mixed-reality platform! ARENA is a project led by Carnegie Mellon University, a project of the CONIX Research Center, a collaboration between six US-based universities. This guide will help you find the right path to contribute. Feel free to join the ARENA CONIX slack and ask us questions.
The Team
Our team is composed of faculty, staff and several students and is continuously being strengthened. See our GitHub for the list of contributors in each repository.
Research Platform
The ARENA may be deployed by you or us in many different locations. We maintain a production ARENA Server instance at arenaxr.org.
Proposing New Features
If you want to work on something that there is no GitHub issue for, it’s best to document your plan before working on a Pull Request. To do so, follow these steps:
1. Create a new GitHub issue associated with the relevant repository and propose your change there with:
- Why is the change needed?
- How will it be implemented?
2. An ARENA team member will respond and let you know if the Issue is acceptable to work on or if some implementation modification is needed.
3. If you have questions or are not sure about the feature, please do ask us questions in our ARENA CONIX slack Slack #questions channel.
Issue Reporting
-
There are 2 basic things that will help us greatly for any issue you report:
- Is it reproducible and what are the steps to reproduce the problem?
- Where was the issue? Which hostname and the version in use?
-
Deployed web server issues please include version here from the commit history at https://github.com/arenaxr/arena-services-docker
-
Python client issues please include the version here from
pip show arena-py
.
Pull Requests and Code Review
Some changes will require internal discussion to see if the needs of the project are still being met which can change from time to time. A list of which repo to use are listed at the end of this guide.
- A great way to start is to try development of a scene using the Python and scene builder tutorials.
- Once familiar, good first issues to help with are labeled with
help wanted
andgood first issue
.
Process for Pull Requests
- Create your own fork of the appropriate repository and clone it and any submodules.
- Create your own branch with the name of your change, and do not use master or main branches for your change.
- Create a draft PR for your changes.
- Push changes to your PR/branch often.
- Submit your PR and request a code review from us.
- After all rounds of review feedback are addressed we will manage merging the PR.
Language Style Guides
We use a number of languages and technologies to run the ARENA. You may need to have at least a basic familiarity with JavaScript, Python, and CSS/HTML. As such, we have some guidance for maintaining some style standards in each repo.
Which Issue Tracker?
The ARENA is composed from a number of repositories. That can be confusing. We recommend searching for an existing issue from our list first and familiarizing yourself with this basic map:
- ARENA Client Website: arenaxr/arena-web-core/issues
- ARENA Python client: arenaxr/arena-py/issues
- ARENA Unity client: arenaxr/arena-unity/issues
- ARENA Docs Website: arenaxr/arena-docs/issues
Server components:
- ATLAS Server: arenaxr/ATLAS/issues
- ARENA MQTT Broker: SilverLineFramework/mosquitto-broker/issues
- ARENA Runtime Supervisor: SilverLineFramework/orchestrator/issues
- ARENA User Account DB: arenaxr/arena-account/issues
- ARENA User Scene Persistence DB: arenaxr/arena-persist/issues
- ARENA User File Manager: arenaxr/arena-store/issues
Code of Conduct
We adhere to the Contributor Covenant Code of Conduct: https://www.contributor-covenant.org/version/2/0/code_of_conduct/code_of_conduct.md