Skip to content

Commit 56067df

Browse files
Copilotpetesramek
andcommitted
Add standard OSS metadata and contribution files
Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
1 parent cb5b154 commit 56067df

8 files changed

Lines changed: 549 additions & 0 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
name: Bug Report
3+
about: Report a reproducible bug in TinyLink
4+
title: "[Bug] <short description>"
5+
labels: bug
6+
assignees: petesramek
7+
---
8+
9+
## Bug Description
10+
11+
<!-- A clear and concise description of what the bug is. -->
12+
13+
## Steps to Reproduce
14+
15+
1. <!-- First step -->
16+
2. <!-- Second step -->
17+
3. <!-- ... -->
18+
19+
## Minimal Reproducible Example
20+
21+
<!-- Paste the smallest possible code snippet that demonstrates the issue. -->
22+
23+
```cpp
24+
// Paste your code here
25+
```
26+
27+
## Expected Behaviour
28+
29+
<!-- What did you expect to happen? -->
30+
31+
## Actual Behaviour
32+
33+
<!-- What actually happened? Include any error messages, assertion failures, or unexpected output. -->
34+
35+
## Environment
36+
37+
| Field | Value |
38+
| ------------------ | ------------------------------ |
39+
| TinyLink version | <!-- e.g. 0.4.0 --> |
40+
| Platform / MCU | <!-- e.g. Arduino Uno, ESP32 -->|
41+
| Adapter used | <!-- e.g. TinyArduinoAdapter -->|
42+
| Compiler / version | <!-- e.g. avr-g++ 7.3.0 --> |
43+
| Toolchain | <!-- e.g. PlatformIO 6.1, Arduino IDE 2.3 --> |
44+
| OS (if native) | <!-- e.g. Ubuntu 22.04, Windows 11 --> |
45+
46+
## Additional Context
47+
48+
<!-- Add any other context, oscilloscope traces, log output, or screenshots that might help. -->
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
name: Feature Request
3+
about: Suggest a new feature or improvement for TinyLink
4+
title: "[Feature] <short description>"
5+
labels: enhancement
6+
assignees: petesramek
7+
---
8+
9+
## Problem Statement
10+
11+
<!-- Describe the problem or limitation you are trying to solve.
12+
e.g. "I often need to send variable-length payloads, but the current API requires a fixed-size struct." -->
13+
14+
## Proposed Solution
15+
16+
<!-- Describe the feature or change you would like to see.
17+
Be as specific as possible: API signatures, configuration options, adapter changes, etc. -->
18+
19+
## Alternatives Considered
20+
21+
<!-- List any alternative approaches you have considered and why you rejected them. -->
22+
23+
## Target Platform(s)
24+
25+
<!-- Which platform(s) would benefit from this feature?
26+
e.g. All platforms, Arduino only, POSIX/Linux, ESP-IDF, STM32 HAL, Windows -->
27+
28+
## Additional Context
29+
30+
<!-- Add any other context, references, links to similar projects, or code sketches that support the request. -->

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
## Description
2+
3+
<!-- Briefly describe *what* this PR changes and *why*. Link to the relevant issue(s) if applicable. -->
4+
5+
Closes #<!-- issue number -->
6+
7+
## Type of Change
8+
9+
<!-- Put an `x` in the boxes that apply. -->
10+
11+
- [ ] Bug fix (non-breaking change that fixes an issue)
12+
- [ ] New feature (non-breaking change that adds functionality)
13+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
14+
- [ ] Documentation update
15+
- [ ] Refactor / code quality improvement
16+
- [ ] CI / build / tooling change
17+
18+
## Checklist
19+
20+
- [ ] I have read the [Contributing Guidelines](../CONTRIBUTING.md).
21+
- [ ] My branch is up-to-date with the target branch.
22+
- [ ] My changes compile without errors or warnings on the affected platform(s).
23+
- [ ] I have added or updated tests to cover my changes.
24+
- [ ] All existing tests pass (`pio test -e native`).
25+
- [ ] I have updated relevant documentation (README, inline comments, etc.).
26+
- [ ] My commit messages follow the [Conventional Commits](https://www.conventionalcommits.org/) format.
27+
- [ ] I have added a `CHANGELOG.md` entry under `[Unreleased]`.
28+
29+
## Testing Done
30+
31+
<!-- Describe how you tested your changes. Include platform(s), toolchain version(s), and any manual steps taken. -->
32+
33+
## Screenshots / Logs (if applicable)
34+
35+
<!-- Paste relevant serial output, test results, or screenshots here. -->

CHANGELOG.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Changelog
2+
3+
All notable changes to **TinyLink** will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
<!-- ─────────────────────────────────────────────────────────────────────────
9+
HOW TO ADD ENTRIES
10+
─────────────────────────────────────────────────────────────────────────
11+
For every release, copy the [Unreleased] section below, set the version
12+
number and date, then clear the [Unreleased] section for the next cycle.
13+
14+
Subsections (use only those that apply):
15+
### Added – new features
16+
### Changed – changes in existing functionality
17+
### Deprecated – features that will be removed in a future release
18+
### Removed – features removed in this release
19+
### Fixed – bug fixes
20+
### Security – security-related fixes or improvements
21+
──────────────────────────────────────────────────────────────────────── -->
22+
23+
## [Unreleased]
24+
25+
### Added
26+
- `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, `SECURITY.md`, `CHANGELOG.md`, issue/PR templates, and `CITATION.cff` for OSS best practices.
27+
28+
---
29+
30+
## [0.4.0] – 2026-01-01
31+
32+
### Added
33+
- Multi-platform adapter support: Arduino, Linux (POSIX), Windows (Win32), ESP-IDF, and STM32 HAL.
34+
- Fletcher-16 checksum for robust error detection.
35+
- COBS framing for reliable stream synchronisation.
36+
- Zero-heap, zero-copy design suitable for 8-bit AVR (≥ 512 B RAM).
37+
- Event-driven callback API (`onReceive()`).
38+
- Polling API (`available()` / `peek()` / `flush()`).
39+
- Real-time telemetry via `getStats()` (packets, CRC errors, timeouts).
40+
- PlatformIO library manifest (`library.properties`, `platformio.ini`).
41+
- Native unit test suite using `TinyTestAdapter`.
42+
- Comprehensive `README.md` with usage examples, architecture notes, and hardware wiring guide.
43+
44+
---
45+
46+
[Unreleased]: https://github.com/petesramek/tiny-link/compare/v0.4.0...HEAD
47+
[0.4.0]: https://github.com/petesramek/tiny-link/releases/tag/v0.4.0

CITATION.cff

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
cff-version: 1.2.0
2+
message: "If you use TinyLink in your research or project, please cite it as below."
3+
type: software
4+
title: TinyLink
5+
abstract: >
6+
TinyLink is a lightweight, template-based serial protocol for reliable,
7+
bidirectional UART communication. Optimized for memory-constrained
8+
microcontrollers, it provides zero-heap, zero-copy packet framing with
9+
Fletcher-16 checksums and COBS encoding.
10+
authors:
11+
- family-names: Sramek
12+
given-names: Pete
13+
alias: petesramek
14+
repository-code: https://github.com/petesramek/tiny-link
15+
url: https://github.com/petesramek/tiny-link
16+
license: MIT
17+
version: 0.4.0
18+
date-released: "2026-01-01"
19+
keywords:
20+
- serial
21+
- UART
22+
- protocol
23+
- embedded
24+
- microcontroller
25+
- Arduino
26+
- COBS
27+
- Fletcher-16
28+
- C++

CODE_OF_CONDUCT.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the overall
26+
community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or advances of
31+
any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or electronic
35+
address, without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
Examples of representing our community include using an official e-mail address,
56+
posting via an official social media account, or acting as an appointed
57+
representative at an online or offline event.
58+
59+
## Enforcement
60+
61+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62+
reported to the project maintainer, **Pete Sramek**, via the contact information
63+
listed on his [GitHub profile](https://github.com/petesramek). All complaints
64+
will be reviewed and investigated promptly and fairly.
65+
66+
All community leaders are obligated to respect the privacy and security of the
67+
reporter of any incident.
68+
69+
## Enforcement Guidelines
70+
71+
Community leaders will follow these Community Impact Guidelines in determining
72+
the consequences for any action they deem in violation of this Code of Conduct:
73+
74+
### 1. Correction
75+
76+
**Community Impact**: Use of inappropriate language or other behavior deemed
77+
unprofessional or unwelcome in the community.
78+
79+
**Consequence**: A private, written warning from community leaders, providing
80+
clarity around the nature of the violation and an explanation of why the
81+
behavior was inappropriate. A public apology may be requested.
82+
83+
### 2. Warning
84+
85+
**Community Impact**: A violation through a single incident or series of
86+
actions.
87+
88+
**Consequence**: A warning with consequences for continued behavior. No
89+
interaction with the people involved, including unsolicited interaction with
90+
those enforcing the Code of Conduct, for a specified period of time. This
91+
includes avoiding interactions in community spaces as well as external channels
92+
like social media. Violating these terms may lead to a temporary or permanent
93+
ban.
94+
95+
### 3. Temporary Ban
96+
97+
**Community Impact**: A serious violation of community standards, including
98+
sustained inappropriate behavior.
99+
100+
**Consequence**: A temporary ban from any sort of interaction or public
101+
communication with the community for a specified period of time. No public or
102+
private interaction with the people involved, including unsolicited interaction
103+
with those enforcing the Code of Conduct, is allowed during this period.
104+
Violating these terms may lead to a permanent ban.
105+
106+
### 4. Permanent Ban
107+
108+
**Community Impact**: Demonstrating a pattern of violation of community
109+
standards, including sustained inappropriate behavior, harassment of an
110+
individual, or aggression toward or disparagement of classes of individuals.
111+
112+
**Consequence**: A permanent ban from any sort of public interaction within the
113+
community.
114+
115+
## Attribution
116+
117+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118+
version 2.1, available at
119+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120+
121+
Community Impact Guidelines were inspired by
122+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123+
124+
For answers to common questions about this code of conduct, see the FAQ at
125+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126+
[https://www.contributor-covenant.org/translations][translations].
127+
128+
[homepage]: https://www.contributor-covenant.org
129+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130+
[Mozilla CoC]: https://github.com/mozilla/diversity
131+
[FAQ]: https://www.contributor-covenant.org/faq
132+
[translations]: https://www.contributor-covenant.org/translations

0 commit comments

Comments
 (0)