Contributing to Antelopejs
Contributing Guide
This guide will help you contribute to Antelopejs, whether you're a developer, writer, or community member.
Ecosystem Overview
The Antelopejs ecosystem consists of two main repository groups:
Organization | Purpose |
---|---|
antelopejs | Core framework and official modules |
ajs-modules | Community-developed modules and extensions |
Note: There is a process for migrating modules to the
ajs-modules
organization. Each module has its own maintainer but is supported by the broader community.
Ways to Contribute
Community Support
- Answer questions in GitHub Discussions
- Help with issue triage by reproducing reported bugs
- Share your solutions to common problems
- Provide feedback on new features and proposals
Reporting Issues
Before creating a new issue:
- For bugs, follow our bug reporting guide
- For feature requests, check existing issues and discussions
- Submit module-specific ideas to the relevant repository
- For broader ideas, start a discussion in the Ideas section
Documentation Improvements
Documentation is critical for user success:
- Fix typos or clarify existing content
- Add missing examples or code samples
- Improve organization or navigation
- Translate documentation to other languages
Pull Request Process
Before Starting
- Bug fixes: Check if there's an existing issue
- Features: Open a discussion first to align with project goals
- Documentation: For typo fixes, consider combining multiple corrections
Development Workflow
- Fork the repository to your GitHub account
- Clone your fork to your local machine
- Create a feature branch with a descriptive name
- Make changes following the code standards
- Write tests for new features or bug fixes
- Ensure all tests pass locally
- Submit your pull request
Commit Guidelines
We follow the Conventional Commits standard:
<type>(<scope>): <description>
[optional body]
[optional footer]
Common types include:
feat
: A new featurefix
: A bug fixdocs
: Documentation changesstyle
: Formatting changesrefactor
: Code refactoring without functionality changestest
: Adding or updating testschore
: Maintenance tasks
Examples:
feat(api): add support for custom headers
fix(auth): correct token validation logic
docs(readme): update installation instructions
Pull Request Guidelines
- Use a clear, descriptive title following commit conventions
- Reference related issues in the description (e.g., "Fixes #123")
- Keep each PR focused on a single task or feature
- Respond promptly to reviewer feedback
Decision Making Process
This flowchart guides our PR review process:
Creating Generic Interfaces
If you've built something useful with Antelopejs, consider turning it into a generic interface that others can implement:
Why Create Generic Interfaces?
- Ecosystem Growth: Generic interfaces allow multiple implementations to flourish
- Flexibility: Users can switch between implementations based on their needs
- Collaboration: Different developers can focus on specific implementations
- Standardization: Establishes common patterns across the ecosystem
From Feature to Interface
- Identify functionality that could benefit from multiple implementations
- Abstract the core behavior into a clear interface definition
- Document the interface requirements thoroughly
- Create a reference implementation as a module
Interface Best Practices
- Keep interfaces focused on a single responsibility
- Design with future extensibility in mind
- Provide detailed type definitions
- Include example usage in documentation
- Reference related interfaces when appropriate
For detailed guidance, refer to our Module documentation and Export Interfaces guide.
Proposing RFCs
For significant framework changes:
- Start by implementing your idea as a module when possible
- Open a discussion with code examples and rationale
- If appropriate, your proposal will be marked as an RFC
RFC stages:
rfc: active
- Open for community feedbackrfc: approved
- Accepted by the core teamrfc: ready to implement
- Issue created for implementationrfc: shipped
- Implemented in a releaserfc: archived
- Not approved but preserved for reference