Skip to content

Latest commit

 

History

History
197 lines (149 loc) · 8.1 KB

CONTRIBUTING.md

File metadata and controls

197 lines (149 loc) · 8.1 KB

Contributing to Pharos

Reporting Problems and Asking Questions

We currently have no better mechanism for providing support than for you to open issues in GitHub. Please feel free to do so, although it will be appreciated if you also search for relevant closed issues first.

Contributing Code Changes

As you may have noticed, our commits to GitHub are intermittent and rather larger than good open source software development techniques would suggest. We're attempting to strike a balance between our need to manage the complexity of continuous changes in ROSE and Z3 against providing some stability resembling a public release. The release in early August of 2019 is no exception, with several changes that breaks tests and cause crashes occurring in both ROSE and Z3 within days of the release.

As a consequence, it is difficult for us to coordinate external pull requests with our internal code base, and we have not completely worked out a process for doing so. If you would like to contribute code to Pharos, please do so by submitting a pull request and we'll work with you to get it accepted into the public code.

Terms of Submission

By making any Contribution to this project, you agree to the terms outlined below.

IF YOU DO NOT AGREE TO THESE TERMS, DO NOT SUBMIT ANY CONTRIBUTION TO THIS PROJECT. TERMS OF SUBMISSION (“Agreement”):

1. Definitions

"You" means the individual who Submits a Contribution to Us.

"Contribution" means any work of authorship, including but not limited to source code, object code, patch, tool, sample, graph, specification, manual documentation, that is Submitted by You to Us in which You own or assert ownership of the Copyright.

"Copyright" means all rights protecting works of authorship owned or controlled by You, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence including any extensions by You.

"Material" means the work of authorship which is made available by Us to third parties. When this Agreement covers more than one software project, the Material means the work of authorship to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material.

"Submit" means any form of electronic, verbal, or written communication sent to Us or our representatives, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us for the purpose of discussing and improving the Material, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."

"Submission Date" means the date on which You Submit a Contribution to Us.

"Effective Date" means the date You first Submit a Contribution to Us, whichever is earlier.

"Media" means any portion of a Contribution which is not software.

2. Grant of Rights

2.1 Copyright License

(a) You retain ownership of the Copyright in Your Contribution and have the same rights to use or license the Contribution which You would have had without entering into the Agreement.

(b) To the maximum extent permitted by the relevant law, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license, with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute the Contribution as part of the Material; provided that this license is conditioned upon compliance with Section 2.2.

2.2 Outbound License

Based on the grant of rights in Sections 2.1, if We include Your Contribution in a Material, We may license the Contribution under any license, including copyleft, permissive, commercial, or proprietary licenses. As a condition on the exercise of this right, We agree to also license the Contribution under the terms of the license or licenses which We are using for the Material on the Submission Date.

2.3 Moral Rights. If moral rights apply to the Contribution, to the maximum extent permitted by law, You waive and agree not to assert such moral rights against Us or our successors in interest, or any of our licensees, either direct or indirect.

2.4 Our Rights. You acknowledge that We are not obligated to use Your Contribution as part of the Material and may decide to include any Contribution We consider appropriate.

2.5 Reservation of Rights. Any rights not expressly assigned or licensed under this section are expressly reserved by You.

3. General Terms

3.1 You warrant that:

(a) You have the legal authority to enter into this Agreement.

(b) You own all rights, including but not limited to Copyright, covering the Contribution which are required to grant the rights under Section 2. To the extent the Contribution incorporates text passages, figures, data or other material from the works of others, You warrant that you have obtained any necessary permissions to make this Contribution.

(c) The grant of rights under Section 2 does not violate any grant of rights which You have made to third parties, including Your employer. If You are an employee, You warrant that Your employer has approved this Agreement. If You are less than eighteen years old, your parent or guardian must sign a printed version of this Agreement and send it to [email protected].

(d) You shall make each Contribution in full compliance with U.S. export control laws.

3.2 You agree to notify Us if You become aware of any circumstance that would make any of the foregoing warranties inaccurate in any respect.

3.3 You agree to indemnify and hold Us harmless from any damage or expense that may arise in the event of a breach of any of the warranties set forth above.

3.4 You agree that We may publicly disclose your participation in this project and the fact that you agreed to the terms of this Agreement.

4. Miscellaneous

4.1 This Agreement will be governed by and construed in accordance with the laws of Pennsylvania excluding its conflicts of law provisions.

4.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.

4.3 If You or We assign the rights or obligations received through this Agreement to a third party, as a condition of the assignment, that third party must agree in writing to abide by all the rights and obligations in the Agreement.

4.4 The failure of either party to require performance by the other party of any provision of this Agreement in one situation shall not affect the right of a party to require such performance at any time in the future. A waiver of performance under a provision in one situation shall not be considered a waiver of the performance of the provision in the future or a waiver of the provision in its entirety.

4.5 If any provision of this Agreement is found by a court of competent jurisdiction to be void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and which is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.

Running Tests

If you submit a pull request please confirm that your change does not break tests by running:

$ make tests
$ ctest -j4

Style Guide

Our code does not follow any specific or strict style guidelines, although we are sensitive to some issues. Please avoid tabs and trailing whitespace. We prioritize code readability over most other considerations, and welcome verbose comments. We strive to maintain warning free builds on all compilers, and welcome reports of warnings that we've missed. Braces are included on if statements in most circumstances even if not technically required.

Forking

We have no concerns about forks of Pharos, and if you'd prefer to work on your own fork of our code, please feel free to do so. Of course, we'd like to work periodically to merge those forks, but we're not trying to impose requirements that you work with our processes while doing your own research and development.