The OpenStudio team welcomes your contribution to the project. Since OpenStudio is open source, user contributions of code, documentation, or any other kind of contribution moves the project forward. The process for submitting contributions and obtaining approval is described below. If you contribute code, you agree that your contribution may be incorporated into OpenStudio and made available under the OpenStudio license on the internet or via other applicable means.
Our open source software benefits greatly from the contributions of its user community. If the contribution that you propose is aligned with OpenStudio’s goals and strategy, we would love to hear from you. The contribution process for OpenStudio is composed of three steps:
- Send consent email
In order for us to distribute your code as part of OpenStudio under the OpenStudio license, we’ll need your consent. An email from you acknowledging that you understands these terms and agrees to them is all that will be asked of any contributor. The return email from you should include the following text and a list of co-contributors (if any):
I agree to contribute to OpenStudio. I agree to the following terms and conditions for my contributions: First, I agree that I am licensing the copyright to my contributions under the terms of the current OpenStudio license. Second, I agree that, in order to conform to any future open source software license(s) under which OpenStudio may be provided, the terms of my copyright license may be modified without any notice to me and without my consent. Third, I hereby grant to Alliance for Sustainable Energy, LLC, to any successor manager and distributor of OpenStudio appointed by the U.S. Department of Energy, and to all recipients of a version of OpenStudio that includes my contributions, a non-exclusive, worldwide, royalty-free, irrevocable patent license under any patent claims owned by me, or owned by my employer and known to me, that are or will be, necessarily infringed upon by my contributions alone, or by combination of my contributions with the version of OpenStudio to which they are contributed, to make, have made, use, offer to sell, sell, import, and otherwise transfer any version of OpenStudio that includes my contributions, in source code and object code form. Fourth, I represent and warrant that I am authorized to make the contributions and grant the foregoing license(s). Additionally, if, to my knowledge, my employer has rights to intellectual property that covers my contributions, I represent and warrant that I have received permission to make these contributions and grant the foregoing license(s) on behalf of my employer.
Once we have your consent on file, you’ll only need to redo it if conditions change (e.g. a change of employer).
- Scope agreement and timeline commitment
If your contribution is small (e.g. a bug fix), simply submit your contribution via GitHub. If your contribution is larger (e.g. a new feature), we’ll need to evaluate your proposed contribution. To do that, we need a written description of why you wish to contribute to the OpenStudio, a detailed description of the project that you are proposing, the precise functionalities that you plan to implement as part of the project, and a timeframe for implementation (template contribution proposal document). After we review your materials, we will schedule a meeting or conference call to discuss your information in more detail. We may ask you to revise your materials and make changes to it, which we will re-review. Before you do any work we must reach prior agreement and written approval on project areas, scope, timeframe, expected contents, and functionalities to be addressed.
- Technical contribution process
We want OpenStudio to adhere to our established quality standards. As such, we ask that you follow our Agile development process - particularly with respect to coding standards, code review, unit tests, and code coverage. These items are explained further below. Smaller, non-code contributions may not require as much review as code contributions, but all contributions will be reviewed. Code contributions will initially be in a source control branch, and then will be merged into the official OpenStudio repository after review and approval. Any bugs, either discovered by you, us, or any users will be tracked in our bug tracker. We request you that you take full responsibility for correcting bugs. Be aware that, unless notified otherwise, the correction of bugs takes precedence over the submission or creation of new code.
Release Schedule - Contributions should be aligned with the OpenStudio release schedule. OpenStudio is released publicly on a quarterly basis (approximately the last workday of March, June, September, and December). There are cutoff dates for when new contributions are allowed to the upcoming release (approximately by February 15, May 15, August 15, and November 15). If your contribution is incomplete or comes in past the cutoff date for a release, we reserve the right to hold your code for a later release.
Agile Development Process - Work items are tracked and planned as Agile tasks and/or defects. You will be given user credentials to source control and Pivotal Tracker. Your work plan will be entered in Pivotal Tracker and tracked as Agile tasks in Pivotal. Our Agile development cycle (called iteration) is two weeks long, and you will be asked for progress and completion of your tasks planned for the iteration, according to the timeline for the project. A review of your contribution will start when the status of your Pivotal task will be marked as “accept”.
Coding Standards - We will point you to coding guidelines to help you with writing OpenStudio code. Although these standards are not complete or very detailed, they should give you an idea of the style that we would like you to adopt. Please also look at the OpenStudio code itself as an example of the preferred coding style.
Code Reviews - You will be working and testing your code in a source control branch. When a piece of functionality is complete, tested and working, let us know and we will review your code. If the functionality that you contributed is complex, we will ask you for a written design document as well. We want your code to follow coding standards, be clear, readable and maintainable, and of course it should do what it is supposed to do. We will look for errors, style issues, comments (or lack thereof), and any other issues in your code. We will inform you of our comments and we expect you to make the recommended changes. New re-reviews may be expected until the code complies with our required processes.
Unit Tests - We ask that you supply unit tests along with the code that you have written. A unit test is a program that exercises your code in isolation to verify that it does what it is supposed to do. Your unit tests are very important to us. First, they give an indication that your code works according to its intended functionality. Second, we execute your unit tests automatically along with our unit tests to verify that the overall OpenStudio code continues to work. You will need to write and submit Google Unit Tests (GTests) along with your code before a code review is scheduled.
Code Coverage - We require that your unit tests provide an adequate coverage of the source code you are submitting. You will need to design your unit tests in a way that all critical parts of the code (at least) are tested and verified. A good rule of thumb for code coverage is 70% or greater. There are tools to help you on code coverage.
Documentation - Proper documentation is crucial for our users, without it users will not know how to use your contribution. We require that you create user documentation so that end users know how to use your new functionality.
For further questions or information:
Luigi Gentile Polese
OpenStudio Project Management
OpenStudio® is a registered trademark of the Alliance for Sustainable Energy LLC, the operator and manager of the National Renewable Energy Laboratory for the U.S. Department of Energy.