Rosetta: Academic License
License text

Rosetta Software
Academic License Agreement

The Rosetta software ("Software") has been developed by the contributing researchers and institutions of the Rosetta Commons ("Developers") and made available through the University of Washington ("UW") for your internal, non-profit research use. 

The Rosetta Commons currently consists of the University of Washington, University of North Carolina at Chapel Hill, Johns Hopkins University, University of California Santa Cruz, University of California San Francisco, New York University, Fred Hutchinson Cancer Research Center, Vanderbilt University, Rosetta Design Group LLC, Hebrew University, Los Alamos National Lab, IIMCB, Stanford University, University of Kansas, ETH Zurich and Washington University, St. Louis. For more information about the Rosetta Commons, please see www.rosettacommons.org.

The Software was developed through support of a variety of funding sources, including the National Institutes of Health, Human Frontier Science Program Grant, National Science Foundation, Office of Naval Research, Packard Foundation, the Damon Runyon Cancer Research Foundation, Jane Coffin Childs Foundation, Los Alamos National Lab, and the Howard Hughes Medical Institute (HHMI). 

UW and the Developers allow researchers at your Institution to run, display, copy and modify Software on the following conditions:

1. The Software remains at your Institution and is not published, distributed, or otherwise transferred or made available to other than Institution employees and students involved in research under your supervision. 

2. You agree to make results generated using Software available to other academic researchers for non-profit research purposes. If You wish to obtain Software for any commercial purposes, including fee-based service projects, You will need to execute a separate licensing agreement with the University of Washington and pay a fee. In that case please contact: license@u.washington.edu

3. You retain in Software and any modifications to Software, the copyright, trademark, or other notices pertaining to Software as provided by UW and Developers.

4. You provide the Developers with feedback on the use of the Software in your research, and that the Developers and UW are permitted to use any information You provide in making changes to the Software. All bug reports and technical questions shall be sent to the email address: general-support@rosettacommons.org

5. You acknowledge that the Developers, UW and its licensees may develop modifications to Software that may be substantially similar to your modifications of Software, and that the Developers, UW and its licensees shall not be constrained in any way by You in Developer’s, UW’s or its licensees’ use or management of such modifications. You acknowledge the right of the Developers and UW to prepare and publish modifications to Software that may be substantially similar or functionally equivalent to your modifications and improvements, and if You obtain patent protection for any modification or improvement to Software You agree not to allege or enjoin infringement of your patent by the Developers, UW or by any of UW’s licensees obtaining modifications or improvements to Software from the UW or the Developers.

6. You agree to acknowledge the contribution Developers and Software make to your research, and cite appropriate references about the Software in your publications. 

7. Any risk associated with using the Software at your institution is with You and your Institution. Software is experimental in nature and is made available as a research courtesy "AS IS," without obligation by UW to provide accompanying services or support. 

8. UW AND THE DEVELOPERS EXPRESSLY DISCLAIM ANY AND ALL WARRANTIES REGARDING THE SOFTWARE, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES PERTAINING TO NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

