Introduction
Ralph is an open source Asset Management, DCIM, and CMDB system developed by Allegro. We welcome community involvement in discussions and development. All development processes, including planning, blueprinting, and sprints, are conducted in public.Allegro maintains Ralph under a “Sources only” model. While we welcome discussions, we do not guarantee responses to issues or support for pull requests. For commercial support, visit ralph.discourse.group.
Quick Start
Here’s how to contribute a bug fix or feature:Fork the repository
Fork Ralph on GitHub
Getting Started
Join the Community
Introduce yourself and connect with other contributors:- Gitter Chat: gitter.im/allegro/ralph - Current Ralph-related issues and concerns are discussed here
- Community Forum: ralph.discourse.group - Online forum for Ralph community
- For quick responses, you can notify @vi4m on Gitter
Development Process
Bug Tracker & Sprints
Ralph uses GitHub Issues for development tracking:- Issues: Development work is tracked at github.com/allegro/ralph/issues
- Milestones: Used for development sprints (1-2 weeks per milestone) with estimated release dates
- Scrum Board: Available at waffle.io/allegro/ralph?label=ng - use milestone field for filtering
Blueprints
Major design decisions are discussed using “Blueprints”:- Blueprints are GitHub issues containing design drafts, diagrams, and general discussion
- Look for the
blueprintlabel on the issues list to find them - Start a topic in the GitHub “issues” section to propose new features or changes
Code Standards
Python Code Style
Ralph uses Ruff for code linting and formatting:- Follow PEP 8 coding standards
- Code must pass Ruff linting checks
- Line length: 88 characters (default)
- Python version: 3.10.0 to <3.11
Django Template Standards
When writing Django templates, follow these rules for readability:- Blank line between
loadstatements and the rest of the template - Blank line between block sections
- Indent when opening HTML or Django template tags (excluding simple inline code and self-closing tags)
- Use common sense for human readability
Development Workflow
Setting Up Your Environment
Before contributing, set up your development environment:- Install Python 3.10
- Install development dependencies (including ruff for linting)
- Review the technical documentation
Making Changes
Types of Contributions
Code Contributions
- Bug fixes: Fix reported issues from the GitHub tracker
- New features: Implement new functionality (discuss in issues first)
- Refactoring: Improve code quality and maintainability
- Performance improvements: Optimize existing code
Documentation
- Improve existing documentation
- Add missing documentation
- Fix typos and clarify unclear sections
- Add examples and tutorials
Testing
- Write tests for uncovered code
- Improve existing tests
- Report bugs with detailed reproduction steps
Best Practices
Do’s
- Start your topic on GitHub in the “issues” section for discussion
- Follow Python best practices and write clean, maintainable code
- Make contributions that add meaningful value
- Review the technical/architecture documentation before coding
- Write clear, descriptive commit messages
- Add tests for your code changes
Don’ts
- Don’t ask “When is it ready?” - The answer is always “When it is ready”
- Don’t submit code that doesn’t follow PEP 8 and Ruff standards
- Don’t make large changes without prior discussion
- Don’t commit without testing
Additional Resources
- Source Code: github.com/allegro/ralph
- Documentation: ralph-ng.readthedocs.org
- Live Demo: ralph-demo.allegro.tech (login: ralph / password: ralph)
- Community Forum: ralph.discourse.group
- Gitter Chat: gitter.im/allegro/ralph
Ralph is provided under the Apache v2.0 License. All contributions will be licensed under the same terms.