Thank you for your interest in contributing to UnityEventTimeline! This document provides guidelines and instructions for contributing to the project.
- Code of Conduct
- Getting Started
- Development Setup
- Making Contributions
- Coding Standards
- Testing Guidelines
- Documentation
- Pull Request Process
- Release Process
This project and everyone participating in it are governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to @ahmedkamalio.
- Fork the repository
- Clone your fork locally
- Create a new branch for your changes
- Make your changes following our guidelines
- Submit a pull request
- Unity 2021.3 or higher
- Visual Studio or JetBrains Rider
- Git
-
Clone the repository:
git clone https://github.com/ahmedkamalio/UnityEventTimeline.git
-
Open the project in Unity:
- Use Unity Hub to add the project
- Select the correct Unity version
- Open the project
-
Install development dependencies:
- Ensure NUnit is properly set up for testing
- Install the recommended Unity packages for development
We welcome the following types of contributions:
- Bug fixes
- Performance improvements
- Feature enhancements
- Documentation improvements
- Test coverage improvements
- Feature branches:
feature/description
- Bug fix branches:
fix/description
- Documentation branches:
docs/description
- Performance improvement branches:
perf/description
- Follow C# coding conventions
- Use nullable reference types (
#nullable enable
) - Write clear, self-documenting code
- Keep methods focused and concise
- Use meaningful variable and method names
#nullable enable
namespace UnityEventTimeline
{
public class ExampleClass
{
private readonly int _privateField;
public int PublicProperty { get; set; }
public void ExampleMethod(string parameter)
{
if (string.IsNullOrEmpty(parameter))
{
throw new ArgumentException("Parameter cannot be null or empty", nameof(parameter));
}
// Implementation
}
}
}
- Use XML documentation for all public APIs
- Include example usage where appropriate
- Document thread safety considerations
- Keep documentation up to date with changes
/// <summary>
/// Represents an example event in the timeline.
/// </summary>
/// <remarks>
/// This event demonstrates proper documentation style.
/// </remarks>
public class ExampleEvent : TimelineEvent<ExampleEvent>
{
/// <summary>
/// Gets or sets the data associated with this event.
/// </summary>
public string? Data { get; set; }
protected override void Execute()
{
// Implementation
}
}
All new code should include:
- Unit tests for new functionality
- Integration tests for system interactions
- Performance tests for critical paths
[Test]
public void MethodName_Scenario_ExpectedBehavior()
{
// Arrange
var sut = new SystemUnderTest();
// Act
var result = sut.MethodToTest();
// Assert
Assert.That(result, Is.EqualTo(expectedValue));
}
- Include performance tests for critical operations
- Document performance expectations
- Test with various data sizes and scenarios
- XML documentation for all public APIs
- README updates for new features
- Example usage in documentation
- Update changelog
- Use clear, concise language
- Include code examples
- Document thread safety considerations
- Explain complex concepts gradually
- Create a descriptive pull request title
- Fill out the pull request template completely
- Ensure all tests pass
- Update documentation
- Request review from maintainers
## Description
[Describe your changes here]
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing performed
## Documentation
- [ ] XML documentation updated
- [ ] README updated
- [ ] Documentation files updated
- [ ] Examples updated
## Related Issues
[Link to related issues here]
-
Version Bump
- Update version numbers in code
- Update package.json
- Update documentation version references
-
Changelog Update
- Add new version section
- Document all changes
- Categorize changes (Added, Changed, Deprecated, Removed, Fixed)
-
Release Checklist
- All tests passing
- Documentation updated
- Version numbers updated
- Changelog updated
- Release notes prepared
We follow semantic versioning (MAJOR.MINOR.PATCH):
- MAJOR: Breaking changes
- MINOR: New features, no breaking changes
- PATCH: Bug fixes, no breaking changes
If you have questions about contributing, feel free to:
- Open an issue with your question
- Contact the maintainers
- Ask in the community forums
Thank you for contributing to UnityEventTimeline!