Thank you for your interest in contributing to Vix Registry.
Vix Registry is not a software project.
It is a specification + index repository that defines how Vix discovers and resolves packages.
Please read this document carefully before opening an issue or pull request.
- A Git-based package index
- A source of truth for package metadata
- A stable specification consumed by the
vixCLI
- ❌ A C++ project
- ❌ A build system
- ❌ A runtime or service
- ❌ A place to upload source code archives
No binaries are built here.
No code is compiled here.
We welcome the following contributions:
Adding or updating package metadata in the index/ directory.
Examples:
- Adding a new package
- Adding a new version to an existing package
- Marking a version as yanked
- Fixing metadata (license, description, repo URL)
- Clarifying documentation
- Improving JSON schemas
- Fixing inconsistencies in
registry.json - Improving architecture documents
- Proposing validation rules
- Improving naming conventions
- Improving long-term registry stability
To add a package to the registry, all of the following must be true:
- The package is hosted in a public Git repository
- The repository uses Semantic Versioning tags (
v1.2.3) - A
vix.jsonmanifest exists in the repository - The repository declares a clear license
- The package name follows naming rules (see below)
Each package entry is a single JSON file in:
index/{namespace}.{name}.json
Example:
index/vixcpp.rix.json
The file must conform to:
schema/package-entry.schema.json
Pull requests that do not validate against the schema will be rejected.
namespace: lowercase, alphanumeric, dashes allowedname: lowercase, alphanumeric, dots, dashes, underscores allowed- No spaces
- No uppercase letters
Good:
vixcpp.rixadastra.sync
Bad:
MyLibvix cppcool-lib!
- Versions must follow SemVer:
MAJOR.MINOR.PATCH - Each version must include:
- a Git tag
- the resolved commit SHA
- Tags must point to immutable history
Moving tags is strongly discouraged.
You may submit a PR to:
- add a new version
- fix incorrect metadata
- mark a version as yanked
Do not:
- remove historical versions
- rewrite version history without strong justification
A version may be marked as:
"1.2.1": {
"tag": "v1.2.1",
"commit": "deadbeef",
"yanked": true
}Yanked versions:
- remain in the registry
- are not selected by default
- remain installable if pinned in a lockfile
All pull requests are expected to:
- pass JSON schema validation
- keep formatting clean and consistent
- avoid unnecessary changes
Automated validation may be enforced via CI.
Please do not:
- add C++ source code
- add binaries or archives
- add build systems
- introduce runtime dependencies
- add network services
This repository must remain lightweight and durable.
Vix Registry is designed to:
- survive long-term with minimal maintenance
- avoid infrastructure costs
- remain reproducible and deterministic
- stay aligned with Vix's local-first vision
Every contribution should reinforce these goals.
If you are unsure about a change:
- open an issue
- explain your motivation clearly
- propose minimal, forward-compatible changes
Large design changes require discussion before implementation.
By contributing to this repository, you agree that your contributions will be licensed under the same license as this project (MIT).
Thank you for helping keep Vix Registry simple, stable, and future-proof.