Contribution Guide
DataMate is an enterprise-level open source data processing project dedicated to providing efficient data solutions for model training, AI applications, and data flywheel scenarios. We welcome all developers, document creators, and test engineers to participate through code commits, documentation optimization, issue feedback, and community support.
If this is your first time contributing to an open source project, we recommend reading Open Source Contribution Newbie Guide first, then proceed with this guide. All contributions must follow the DataMate Code of Conduct.
Contribution Scope and Methods
DataMate open source project contributions cover the following core scenarios. You can choose your participation based on your expertise:
| Contribution Type | Specific Content | Suitable For |
|---|---|---|
| Code Contribution | Core feature development, bug fixes, performance optimization, new feature proposals | Backend/frontend developers, data engineers |
| Documentation Contribution | User manual updates, API documentation improvements, tutorial writing, contribution guide optimization | Technical document creators, experienced users |
| Testing Contribution | Write unit/integration tests, feedback test issues, participate in compatibility testing | Test engineers, QA personnel |
| Community Contribution | Answer GitHub Issues, participate in community discussions, share use cases | All users, tech enthusiasts |
| Design Contribution | UI/UX optimization, logo/icon design, documentation visual upgrade | UI/UX designers, visual designers |
Thank you for choosing to participate in the DataMate open source project! Whether it’s code, documentation, or community support, every contribution helps the project grow and advances enterprise-level data processing technology. If you encounter any issues during the contribution process, feel free to seek help through community channels.
Getting Started
Development Environment
Before contributing, please set up your development environment:
- Clone Repository
git clone https://github.com/ModelEngine-Group/DataMate.git
cd DataMate
- Install Dependencies
# Backend dependencies
cd backend
mvn clean install
# Frontend dependencies
cd frontend
pnpm install
# Python dependencies
cd runtime
pip install -r requirements.txt
- Start Services
# Start basic services
make install dev=true
For detailed setup instructions, see:
- Development Environment Setup - Local development configuration
- Backend Architecture - Backend architecture
- Frontend Architecture - Frontend architecture
Code Contribution
Code Standards
Java Code Standards
Naming Conventions:
- Class name: PascalCase
UserService - Method name: camelCase
getUserById - Constants: UPPER_CASE
MAX_SIZE - Variables: camelCase
userName
- Class name: PascalCase
Documentation: Add Javadoc comments for public APIs
/**
* User service
*
* @author Your Name
* @since 1.0.0
*/
public class UserService {
/**
* Get user by ID
*
* @param userId user ID
* @return user information
*/
public User getUserById(Long userId) {
// ...
}
}
TypeScript Code Standards
- Naming Conventions:
- Components: PascalCase
UserProfile - Types/Interfaces: PascalCase
UserData - Functions: camelCase
getUserData - Constants: UPPER_CASE
API_BASE_URL
- Components: PascalCase
Python Code Standards
Follow PEP 8:
def get_user(user_id: int) -> dict:
"""
Get user information
Args:
user_id: User ID
Returns:
User information dictionary
"""
# ...
Submitting Code
1. Create Branch
git checkout -b feature/your-feature-name
Branch naming convention:
feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Refactoring
2. Make Changes
Follow the code standards mentioned above.
3. Write Tests
# Backend tests
mvn test
# Frontend tests
pnpm test
# Python tests
pytest
4. Commit Changes
git add .
git commit -m "feat: add new feature description"
Commit message format:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changesrefactor:- Refactoringtest:- Adding testschore:- Other changes
5. Push and Create PR
git push origin feature/your-feature-name
Then create a Pull Request on GitHub.
Documentation Contribution
Documentation Structure
Documentation is located in the /docs directory:
docs/
├── getting-started/ # Quick start
├── user-guide/ # User guide
├── api-reference/ # API reference
├── developer-guide/ # Developer guide
└── appendix/ # Appendix
Writing Documentation
1. Choose Language
Documents support bilingual (Chinese and English). When updating documentation, please update both language versions.
2. Follow Format
Use Markdown format with Hugo front matter:
---
title: Page Title
description: Page description
weight: 1
---
Content here...
3. Add Examples
Include code examples, commands, and use cases to help users understand.
4. Cross-Reference
Add links to related documentation:
See [Data Management](/docs/user-guide/data-management/) for details.
Testing Contribution
Test Coverage
We aim for comprehensive test coverage:
- Unit Tests: Test individual functions and classes
- Integration Tests: Test service interactions
- E2E Tests: Test complete workflows
Writing Tests
Backend Tests (JUnit)
@Test
public void testGetDataset() {
// Arrange
String datasetId = "test-dataset";
// Act
Dataset result = datasetService.getDataset(datasetId);
// Assert
assertNotNull(result);
assertEquals("test-dataset", result.getId());
}
Frontend Tests (Jest + React Testing Library)
test('renders data management page', () => {
render(<DataManagement />);
expect(screen.getByText('Data Management')).toBeInTheDocument();
});
Reporting Issues
When finding bugs:
- Search existing GitHub Issues
- If not found, create new issue with:
- Clear title
- Detailed description
- Steps to reproduce
- Expected vs actual behavior
- Environment info
Design Contribution
UI/UX Guidelines
We use Ant Design as the UI component library. When contributing design changes:
- Follow Ant Design principles
- Ensure consistency with existing design
- Consider accessibility
- Test on different screen sizes
Design Assets
Design assets should be placed in:
- Frontend assets:
frontend/src/assets/ - Documentation images:
content/en/docs/images/
Community Guidelines
Code of Conduct
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on constructive feedback
- Collaborate openly
Communication Channels
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: General discussions
- Pull Requests: Code and documentation contributions
Getting Help
If you need help:
- Check existing documentation
- Search GitHub Issues
- Start a GitHub Discussion
Recognition
Contributors will be recognized in:
- Contributors List: In the documentation
- Release Notes: For significant contributions
- Community Highlights: For outstanding contributions
License
By contributing to DataMate, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to DataMate! Your contributions help make DataMate better for everyone. 🎉
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.