Contribution Guide

Welcome to the DataMate project. We welcome all forms of contributions including documentation, code, testing, translation, etc.

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 TypeSpecific ContentSuitable For
Code ContributionCore feature development, bug fixes, performance optimization, new feature proposalsBackend/frontend developers, data engineers
Documentation ContributionUser manual updates, API documentation improvements, tutorial writing, contribution guide optimizationTechnical document creators, experienced users
Testing ContributionWrite unit/integration tests, feedback test issues, participate in compatibility testingTest engineers, QA personnel
Community ContributionAnswer GitHub Issues, participate in community discussions, share use casesAll users, tech enthusiasts
Design ContributionUI/UX optimization, logo/icon design, documentation visual upgradeUI/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:

  1. Clone Repository
git clone https://github.com/ModelEngine-Group/DataMate.git
cd DataMate
  1. Install Dependencies
# Backend dependencies
cd backend
mvn clean install

# Frontend dependencies
cd frontend
pnpm install

# Python dependencies
cd runtime
pip install -r requirements.txt
  1. Start Services
# Start basic services
make install dev=true

For detailed setup instructions, see:

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
  • 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

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 features
  • fix/ - Bug fixes
  • docs/ - Documentation updates
  • refactor/ - 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 feature
  • fix: - Bug fix
  • docs: - Documentation changes
  • style: - Code style changes
  • refactor: - Refactoring
  • test: - Adding tests
  • chore: - 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:

  1. Search existing GitHub Issues
  2. 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:

  1. Follow Ant Design principles
  2. Ensure consistency with existing design
  3. Consider accessibility
  4. 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:

  1. Check existing documentation
  2. Search GitHub Issues
  3. 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. 🎉


Last modified February 9, 2026: :art: perf data-collection (8348d45)