Add CONTRIBUTING.md, issue templates, badges

This commit is contained in:
MattJackson
2026-04-06 10:43:52 -07:00
parent ddcb614777
commit afb43c69b3
5 changed files with 63 additions and 57 deletions
+25
View File
@@ -0,0 +1,25 @@
---
name: Bug Report
about: Report a bug
labels: bug
---
**What happened?**
**What did you expect?**
**Steps to reproduce**
1.
2.
3.
**Drive info** (run `freemkv info`)
```
```
**Environment**
- OS:
- freemkv version:
+7
View File
@@ -0,0 +1,7 @@
---
name: Drive Profile
about: Submit drive data (auto-created by freemkv info --share)
labels: drive-profile
---
Paste your `freemkv info` output here.
+11
View File
@@ -0,0 +1,11 @@
---
name: Feature Request
about: Suggest a feature
labels: enhancement
---
**What would you like?**
**Why?**
+16 -57
View File
@@ -1,68 +1,27 @@
# Contributing to libfreemkv
Thank you for your interest in helping make disc archival accessible to everyone.
Thanks for your interest in contributing!
## Contributing Drive Profiles
## Ways to help
The most impactful contribution is adding support for new drives. If you have
an optical drive that isn't listed in [profiles/](profiles/), we'd love your help.
- **Report a bug** — open an issue with steps to reproduce
- **Submit your drive profile** — run `freemkv info --share` to help expand hardware support
- **Fix a bug** — fork, branch, PR
- **Add a feature** — open an issue first to discuss
### How to submit drive data
## Development
1. Install the tool:
```bash
cargo install libfreemkv
```
```bash
cargo build
cargo test
```
2. Run `freemkv-info` with your drive:
```bash
freemkv-info /dev/sr0 --raw > my_drive.txt
```
## Code style
3. Open a pull request or issue with the output file attached.
That's it. The raw SCSI response data lets us build a profile for your drive.
### What data is collected
`freemkv-info --raw` sends two standard SCSI commands to your drive:
- **INQUIRY** (opcode 0x12) — returns drive vendor, model, firmware version
- **GET CONFIGURATION** (opcode 0x46) — returns drive feature data
These are read-only, standard SCSI commands. They don't modify your drive
or access any disc data. Every operating system sends these commands
automatically when a drive is connected.
### Priority: Pioneer drives
We especially need data from **Pioneer** Blu-ray drives (BDR-S08, BDR-S09,
BDR-S12, BDR-S13, BDR-209, BDR-212, etc). If you have one, your contribution
would help unlock support for 130+ Pioneer drive firmware versions.
## Contributing Code
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/my-change`)
3. Write tests for your changes
4. Ensure `cargo test` and `cargo clippy` pass
5. Submit a pull request
### Code Style
- Run `cargo fmt` before committing
- No `unsafe` without a comment explaining why
- Public APIs need doc comments
- Error handling via `Result<T, Error>`, no panics in library code
### Architecture
- `src/scsi.rs` — SCSI transport layer (SG_IO on Linux)
- `src/profile.rs` — Profile loading and matching
- `src/platform/` — Per-chipset command implementations
- `src/drive.rs` — High-level DriveSession API
- `profiles/` — JSON drive profile data
- Follow Rust conventions (`cargo fmt`, `cargo clippy`)
- Field names follow SPC-4 and MMC-6 SCSI standards
- Error codes are structured — no user-facing text in the library
## License
By contributing, you agree that your contributions will be licensed under AGPL-3.0.
By contributing, you agree your code will be licensed under AGPL-3.0.
+4
View File
@@ -1,3 +1,7 @@
[![Crates.io](https://img.shields.io/crates/v/libfreemkv)](https://crates.io/crates/libfreemkv)
[![License: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue)](LICENSE)
[![Drives: 206](https://img.shields.io/badge/drives-206-green)]()
# libfreemkv
Open source raw disc access library for UHD Blu-ray optical drives.