Contributing
Join the MARSYS community and help build the future of multi-agent AI systems.
Ways to Contribute
Report Issues
Bug reports, performance issues, documentation gaps, and feature requests
Code Contributions
Bug fixes, new features, performance optimizations, and refactoring
Documentation
Fix typos, improve explanations, add examples, and write tutorials
Testing
Write unit tests, integration tests, test edge cases, and report failures
Quick Start
1. Fork & Clone
# Fork on GitHub, then:git clone https://github.com/yourusername/marsys.gitcd marsys# Add upstream remotegit remote add upstream https://github.com/rezaho/MARSYS.git
2. Set Up Development Environment
# Create virtual environmentpython -m venv venvsource venv/bin/activate # On Windows: venv\Scripts\activate# Install in development modepip install -e ".[dev]"# Install pre-commit hookspre-commit install
3. Create Feature Branch
# Sync with upstreamgit fetch upstreamgit checkout maingit merge upstream/main# Create feature branchgit checkout -b feature/your-feature-name
4. Make Changes
# Make your changes, add tests, update documentation# Run testspytest tests/# Check code styleblack src/ tests/isort src/ tests/flake8 src/ tests/# Commit changesgit add .git commit -m "feat: add amazing feature"
5. Submit Pull Request
# Push to your forkgit push origin feature/your-feature-name# Open PR on GitHub# Link any related issues# Describe your changes
Code Contributions
Code Style
We use:
- Black for code formatting
- isort for import sorting
- flake8 for linting
- mypy for type checking
# Format codeblack src/ tests/# Sort importsisort src/ tests/# Check lintingflake8 src/ tests/# Type checkingmypy src/
Commit Messages
Follow Conventional Commits:
feat: add parallel agent executionfix: resolve memory leak in agent poolsdocs: update topology documentationtest: add tests for branch executorrefactor: simplify validation logicperf: optimize message passing
Pull Request Guidelines
DO
- Keep PRs focused on a single feature/fix
- Include tests for new functionality
- Update documentation
- Add type hints
- Follow existing code patterns
- Link related issues
DON'T
- Mix unrelated changes
- Break existing tests
- Introduce unnecessary dependencies
- Change code style arbitrarily
- Submit incomplete work
Testing
Test Structure
tests/├── unit/ # Unit tests├── integration/ # Integration tests├── e2e/ # End-to-end tests└── fixtures/ # Test fixtures
Writing Tests
import pytestfrom marsys.agents import Agent@pytest.mark.asyncioasync def test_agent_creation():"""Test agent can be created with config."""agent = Agent(model_config=test_config,name="TestAgent",goal="Handle test tasks",instruction="Return deterministic outputs for tests.")assert agent.name == "TestAgent"assert agent.model is not None@pytest.mark.asyncioasync def test_agent_execution():"""Test agent can execute tasks."""agent = create_test_agent()result = await agent.run("Test task")assert result.successassert result.response is not None
Running Tests
# Run all testspytest# Run with coveragepytest --cov=src --cov-report=html# Run specific test filepytest tests/unit/test_agent.py# Run with markerspytest -m "not slow"
Architecture
Key Principles
- Pure Functions: Agents use pure
_run()methods - Centralized Validation: Single validation processor
- Dynamic Branching: Runtime parallel execution
- Topology-Driven: Graph-based routing
Adding New Features
- Identify Component: Where does it belong?
- Design API: Keep it consistent
- Implement: Follow existing patterns
- Test: Comprehensive test coverage
- Document: Update relevant docs
Release Process
Version Numbering
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes
Community
Code of Conduct
We follow the Contributor Covenant Code of Conduct. Be respectful, constructive, inclusive, and professional.
Getting Help
- Discord: Join our server
- Discussions: GitHub Discussions
- Issues: GitHub Issues
Current Priorities
High Priority
- Performance optimization
- Browser agent stability
- Documentation improvements
- Test coverage expansion
Feature Requests
- Streaming responses
- Distributed execution
- Advanced learning agents
- Custom storage backends
License
By contributing, you agree that your contributions will be licensed under the same license as the project (Apache License 2.0).
Thank You!
Every contribution makes MARSYS better. Whether it's fixing a typo, adding a feature, or helping others - we appreciate your effort!
First Time?
If this is your first open-source contribution, check out First Contributions for a gentle introduction.