Files
sqrtspace-php/CONTRIBUTING.md
User c00ecd095e Migrate from GitHub to Gitea
- Update all repository URLs to git.marketally.com
- Remove GitHub Actions workflows (not compatible with Gitea)
- Update documentation links in README, CONTRIBUTING, and CHANGELOG
2025-12-28 17:25:50 +00:00

154 lines
3.4 KiB
Markdown

# Contributing to Ubiquity SpaceTime PHP
Thank you for your interest in contributing to Ubiquity SpaceTime PHP! This document provides guidelines and instructions for contributing.
## Code of Conduct
By participating in this project, you agree to abide by our code of conduct: be respectful, inclusive, and considerate of others.
## How to Contribute
### Reporting Issues
1. Check if the issue already exists in the [issue tracker](https://git.marketally.com/sqrtspace/sqrtspace-php/issues)
2. If not, create a new issue with:
- Clear title and description
- Steps to reproduce (if applicable)
- Expected vs actual behavior
- PHP version and environment details
### Submitting Pull Requests
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/my-feature`)
3. Make your changes following our coding standards
4. Add/update tests as needed
5. Update documentation if applicable
6. Commit with descriptive messages
7. Push to your fork
8. Submit a pull request
## Development Setup
```bash
# Clone your fork
git clone https://git.marketally.com/YOUR_USERNAME/sqrtspace-php.git
cd sqrtspace-php
# Install dependencies
composer install
# Run tests
vendor/bin/phpunit
# Run tests with coverage
vendor/bin/phpunit --coverage-html coverage
```
## Coding Standards
### PHP Standards
- Follow PSR-12 coding style
- Use PHP 8.1+ features appropriately
- Add type declarations for all parameters and return types
- Use strict types (`declare(strict_types=1);`)
### Code Style
```php
<?php
declare(strict_types=1);
namespace Ubiquity\SpaceTime\Example;
use Ubiquity\SpaceTime\SomeClass;
/**
* Class description
*/
class ExampleClass
{
private string $property;
public function __construct(string $property)
{
$this->property = $property;
}
/**
* Method description
*
* @throws \Exception When something goes wrong
*/
public function doSomething(int $param): array
{
// Implementation
return [];
}
}
```
### Testing Guidelines
- Write tests for all new features
- Maintain or improve code coverage
- Use descriptive test method names
- Follow AAA pattern (Arrange, Act, Assert)
```php
public function testFeatureWorksCorrectly(): void
{
// Arrange
$instance = new TestedClass();
// Act
$result = $instance->doSomething();
// Assert
$this->assertEquals('expected', $result);
}
```
## Documentation
- Update README.md for new features
- Add PHPDoc blocks for all public methods
- Include usage examples for complex features
- Update CHANGELOG.md following [Keep a Changelog](https://keepachangelog.com/)
## Performance Considerations
Since SpaceTime focuses on memory efficiency:
1. Always consider memory usage in your implementations
2. Benchmark memory usage and performance for new features
3. Document any trade-offs between memory and speed
4. Follow the √n principle where applicable
## Pull Request Process
1. Ensure all tests pass
2. Update documentation
3. Add entry to CHANGELOG.md
4. Request review from maintainers
5. Address feedback promptly
6. Squash commits if requested
## Release Process
Releases are managed by maintainers following semantic versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes
## Questions?
Feel free to:
- Open an issue for questions
- Join our discussions
- Contact maintainers
Thank you for contributing!