How to Contribute to Open Logic¶
Of course you are more than welcome to contribute to the project. This document explains how you can do so.
There YouTube Video about contributing to Open Logic available, which is a good and quick starting point.
Be a Good User¶
The easiest way of doing so, is by simply using Open Logic - and report any issues you find. That may be an idea for a new feature, a bug or simply unclear documentation. Any feedback is appreciated and will help improving the usability of Open Logic.
For bug reports, always include/attach steps to reproduce the behavior. This could be (in decreasing order of their helpfulness):
- A an existing Open Logic testbench, modified to reproduce the bug
- A single-file testbench you wrote your own
- If you are not used to VUnit (all Open Logic testbenches are VUnit based) this probably is easier.
- A questa *.do file
- A screenshot of a waveform
- A textual description
As a good user, please follow the Code of conduct.
Financial Contributions¶
You can donate through GitHub sponsors. In case your company better like buying services than doing donations - you can also find things to buy on the GitHub sponsors page (e.g. workshops or priority support).
Where do the donations go:
- Tools and Subscriptions (e.g. cloud storage, tool cost)
- Infrastructure (e.g. a dedicated GitHub runner PC and the energy cost for it)
- Community Building (e.g. travel expenses for attending conferences and present Open Logic there)
If you are willing to do a financial contribution for any service/activity not listed on GitHub sponsors (e.g. if you want to pay some money for me giving a Keynote) - contact me through e-mail oli.bruendler@gmx.ch.
Contribute Code¶
For all contributions credits are given in the release notes.
Conventions¶
For all contributions, please follow the Conventions.
Simple Fixes¶
This category include fixing documentation or bugs in a way that is not visible from outside. This clearly excludes bigger changes (e.g. addition of new components, modifications to the user interface).
Follow the steps below:
- Fork Open Logic to your personal github account
- Create a feature branch on your fork. Name the branch feature/\<your-feature-name> and branch-off from develop.
- Apply your modifications
- Ensure all tests pass - if you have access to a questa license, ensure coverage is sufficient (see How To ...)
- Create a Pull Request to the develop branch of the Open Logic main repository.
Larger Features¶
This category includes any changes that fall outside of the Simple Fixes category (e.g. new entities).
Follow the steps below:
- Create an issue on _Open Logic: describing your idea.
- For new entities, describe the concept and the user interface (ports and generics) in detail. Ideally you provide the code of the entity declaration you foresee.
- For modifications, describe the modification in detail and what is changed on the user interface - if any.
- We will discuss your idea in the issue. This step is important for me because I have a strong focus in easy-to-use user interfaces and I would like to discuss your plans before changes cost you too much time.
- Once dicussions are concluded, fork Open Logic to your personal github account
- Create a feature branch on your fork. Name the branch feature/\<your-feature-name> and branch-off from develop.
- Apply your modifications.
- Include a self-checking VUnit testbench
- Include documentation
- Ensure all tests pass - if you have access to a questa license, ensure coverage is sufficient (see How To ...)
- Create a Pull Request to the develop branch of the Open Logic main repository.
You don't have own Ideas¶
If you want to support the project but you do not have specific features in mind which you could implement, you can have a look at the Feature Ideas list in the Wiki or contact me and I will suggest features. There is always more than enough to do.
Contributor License Agreement¶
To get any contributions accepted, the Contributors License Agreement (CLA) must be signed. You can do this through cla-assistant.io.
Copyright¶
You may add your own copiright notice to any file you contribute to. However, for contributions to be accepted, you must sign the Contributor License Agreement.
Gernerative AI Policy¶
Generative AI may be used for contributions as long as the contributor is fully aware of the content generated, takes full responsibility for it and ensured that no copyrighted content from third parties is included.
The usage of genenerative AI beyond accepting inline code suggestions (e.g. GitHub Copilot) is restricted as follows:
- It is forbidden for any contributions towards features funded by NLnet
- It must be disclosed in the pull request description