Skip to content

Commit 9557180

Browse files
committed
Add CONTRIBUTING and SUPPORT files
1 parent a93ff10 commit 9557180

File tree

2 files changed

+181
-0
lines changed

2 files changed

+181
-0
lines changed

CONTRIBUTING.md

+163
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# VTR Contribution Guidelines
2+
3+
Thanks for considering contributing to VTR!
4+
Here are some helpful guidelines to follow.
5+
6+
## Common Scenarios
7+
8+
### I have a question
9+
If you have questions about VTR take a look at our [Support Resources](SUPPORT.md).
10+
11+
If the answer to your question wasn't in the documentation (and you think it should have been), consider [enhancing the documentation](#enhancing-docs).
12+
That way someone (perhaps your future self!) will be able to quickly find the answer in the future.
13+
14+
15+
### I found a bug!
16+
While we strive to make VTR reliable and robust, bugs are inevitable in large-scale software projects.
17+
18+
Please file a [detailed bug report](#filling-bugs).
19+
This ensures we know about the problem and can work towards fixing it.
20+
21+
22+
### It would be great if VTR supported ...
23+
VTR has many features and is highly flexible.
24+
Make sure you've checkout out all our [Support Resources](SUPPORT.md) to see if VTR already supports what you want.
25+
26+
If VTR does not support your use case, consider [filling an enhancement](#filling-enhacements).
27+
28+
### I have a bug-fix/feature I'd like to include in VTR
29+
Great! Submitting bug-fixes and features is a great way to improve VTR.
30+
See the guidlines for [submitting code](#submitting-code).
31+
32+
## The Details
33+
34+
### [Enhancing Documentation](#enhancing-docs)
35+
Enhancing documentation is a great way to start contributing to VTR.
36+
37+
You can edit the [documentation](https://docs.verilogtorouting.org) directly by clicking the `Edit on GitHub` link of the relevant page, or by editing the re-structured text (`.rst`) files under the `doc/src` folder.
38+
39+
Generally it is best to make small incremental changes.
40+
If you are considering larger changes its best to discuss them first (e.g. file a [bug](#filling-bugs) or [enhancement](#filling-enhancements)).
41+
42+
Once you've made your enhancements [open a pull request](#pull-requests) to get your changes considered for inclusion in the documentation.
43+
44+
45+
### [Filling Bug Reports](#filling-bugs)
46+
First, search for [existing issues](https://github.com/verilog-to-routing/vtr-verilog-to-routing/issues) to see if the bug has already been reported.
47+
48+
If no bug exists you will need to collect key pieces of information.
49+
This information helps us to quickly reproduce (and hopefully fix) the issue:
50+
51+
* What behaviour you expect
52+
53+
How you think VTR should be working.
54+
55+
* What behaviour you are seeing
56+
57+
What VTR actually does on your system.
58+
59+
* Detailed steps to re-produce the bug
60+
61+
*This is key to getting your bug fixed.*
62+
63+
Provided *detailed steps* to reproduce the bug, including the exact commands to reproduce the bug.
64+
Attach all relevant files (e.g. FPGA architecture files, benchmark circuits, log files).
65+
66+
If we can't re-produce the issue it is very difficult to fix.
67+
68+
* Context about what you are trying to achieve
69+
70+
Sometimes VTR does things in a different way than you expect.
71+
Telling us what you are trying to accomplish helps us to come up with better real-world solutions.
72+
73+
* Details about your environment
74+
75+
Tell us what version of VTR you are using (e.g. the output of `vpr --version`), which Operating System and compiler you are using, or any other relevant information about where or how you are building/running VTR.
76+
77+
Once you've gathered all the information [open an Issue](https://github.com/verilog-to-routing/vtr-verilog-to-routing/issues/new) on our issue tracker.
78+
79+
If you know how to fix the issue, or already have it coded-up, please also consider [submitting the fix](#submitting-code).
80+
This is likely the fastest way to get bugs fixed!
81+
82+
### [Filling Enhancement Requests](#filling-enhancements)
83+
First, search [existing issues](https://github.com/verilog-to-routing/vtr-verilog-to-routing/issues) to see if your enhancement request overlaps with an existing Issue.
84+
85+
If not feature request exists you will need to describe your enhancement:
86+
87+
* New behaviour
88+
89+
How your proposed enhancement will work (from a user's perspective).
90+
91+
* Contrast with current behaviour
92+
93+
How will your enhancement differ from the current behaviour (from a user's perspective).
94+
95+
* Potential Implementation
96+
97+
Describe (if you have some idea) how the proposed enhancement would be implemented.
98+
99+
* Context
100+
101+
What is the broader goal you are trying to accomplish? How does this enhancement help?
102+
This allows us to understand why this enhancement is beneficial, and come up with the best real-world solution.
103+
104+
**VTR developers have limited time and resources, and will not be able to address all feature requests.**
105+
Typically, simple enhancements, and those which are broadly useful to a wide group of users get higher priority.
106+
107+
Features which are not generally useful, or useful to only a small group of users will tend to get lower priority.
108+
(Of course [coding the enhancement yourself](submitting-code) is an easy way to bypass this challenge).
109+
110+
Once you've gathered all the information [open an Issue](https://github.com/verilog-to-routing/vtr-verilog-to-routing/issues/new) on our issue tracker.
111+
112+
### [Submitting Code to VTR](#submitting-code)
113+
VTR welcomes external contributions.
114+
115+
In general changes that are narrowly focused (e.g. small bug fixes) are easier to review and include in the code base.
116+
117+
Large changes, such as substantial new features or significant code-refactoring are more challenging to review.
118+
It is probably best to file an [enhancement](#filling-enhancements) first to discuss your approach.
119+
120+
Additionally, new features which are generally useful are much easier to justify adding to the code base, whereas features useful in only a few specialized cases are more difficult to justify.
121+
122+
### [Making Pull Requests](#pull-requests)
123+
It is assumed that by opening a pull request to VTR you have permission to do so, and the changes are under the relevant [License](LICENSE.md).
124+
125+
Each pull request should describe it's motivation and context (linking to a relevant Issue for non-trivial changes).
126+
127+
It should also describe:
128+
129+
* The type of change (e.g. bug-fix, feature)
130+
131+
* How it has been tested
132+
133+
* What tests have been added
134+
135+
All new features must have tests added which exercise the new features.
136+
This ensures any future changes which break your feature will be detected.
137+
It is also best to add tests when fixing bugs, for the same reason
138+
139+
If you aren't sure what tests are needed, or how they should be added ask a developer.
140+
141+
* How the feature has been documented
142+
143+
Any new user-facing features should be documented in the public documentation, which is in `.rst` format under `doc/src`, and served at https://docs.verilogtorouting.org
144+
145+
146+
**Tips for Pull Requests**
147+
The following are general tips for making your pull requests easy to review (and hence more likely to be merged):
148+
149+
* Keep changes small
150+
151+
Large change sets are difficult and time-consuming to review.
152+
If a change set is becoming too large, consider splitting it into smaller pieces; you'll probably want to file an issue to discuss things first.
153+
154+
* Do one thing only
155+
156+
All the changes and commits in your pull request should be relevant to the bug/feature it addresses.
157+
There should be no unrelated changes (e.g. adding IDE files, re-formatting unchanged code).
158+
159+
Unrelated changes make it difficult to accept a pull request, since it does more than what the pull request described.
160+
161+
* Match existing code style
162+
When modifying existing code, try match the existing coding style.
163+
This helps to keep the code consistent and reduces noise in the pull request by avoiding re-formatting changes.

SUPPORT.md

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
VTR Support Resources
2+
=====================
3+
For support using VPR please use these resources:
4+
5+
1. Check the VTR Documentation: https://docs.verilogtorouting.org
6+
7+
The VTR documentation includes:
8+
* Overviews of what VTR is, and how the flow fits together
9+
* Tutorials on using VTR
10+
* Detailed descriptions of tools and their command-line options
11+
* Descriptions of the file-formats used by VTR
12+
13+
2. Contact the VTR users mailing list: [email protected]
14+
15+
The mailing list includes developers and users of VTR.
16+
If you have a specific usage case not covered by the documentation, someone on the mailing list may be able to help.
17+
18+
3. If you've found a bug or have an idea for an enhancement consider filing an issue. See [here](CONTRIBUTING.md) for more details.

0 commit comments

Comments
 (0)