Thank you for your interest in contributing to uaView! We welcome contributions from the community and are grateful for your help in making this OPC-UA client better.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Development Guidelines
- Pull Request Process
- Issue Guidelines
- Testing
- Documentation
- Clone the repository
- Install the uv package manager;
We welcome several types of contributions:
- Bug fixes: Fix issues reported in GitHub Issues
- Feature additions: Implement new functionality
- Documentation improvements: Enhance docs, comments, or examples
- Performance optimizations: Improve speed or memory usage
- UI/UX improvements: Enhance the terminal interface
- Testing: Add or improve test coverage
- Configuration examples: Add more server configuration examples
Check our current limitations in the README.md for areas where contributions are especially welcome:
- Historical data access (HA)
- Method calling functionality
- Write operations
- Event monitoring
- Certificate management
- Batch operations
- Data export functionality
The project follows this structure:
uaView/
├── main.py # Main application entry point
├── style.tcss # Textual CSS styling
├── config/ # Configuration files
├── ua_client/ # OPC-UA client implementation
└── widgets/ # UI widgets and components
-
Follow Python conventions:
- Use descriptive variable and function names
- Add docstrings to classes and functions
- Type hints where appropriate
-
Async/await patterns:
- Use
async deffor I/O operations - Properly handle exceptions in async contexts
- Don't block the event loop
- Use
-
Error handling:
- Use try/except blocks for OPC-UA operations
- Log errors appropriately
- Graceful degradation when possible
-
Widget development:
- Follow Textual widget patterns
- Use CSS for styling in
style.tcss - Implement proper event handling
When reporting bugs, please include:
-
Environment information:
- Python version
- Operating system
- uaView version
-
Steps to reproduce:
- Exact steps to trigger the bug
- Expected behavior
- Actual behavior
-
Additional context:
- Server configuration (sanitized)
- Error messages or logs
- Screenshots if applicable
For new features:
- Use case description: Why is this feature needed?
- Proposed solution: How should it work?
- Alternatives considered: What other approaches were considered?
- Additional context: Screenshots, mockups, or examples
- Add docstrings to all public functions and classes
- Use clear, concise language
- Include parameter and return type information
- Add usage examples where helpful
When adding new features:
- Update the features list in README.md
- Add configuration examples if needed
- Update key bindings table if applicable
- Add to limitations section if introducing known constraints
- Use
textual consolefor debugging - Check the Textual documentation
- Test UI changes with different terminal sizes
- Use CSS for consistent styling
- Test with multiple server types when possible
- Handle connection failures gracefully
- Be mindful of subscription limits
- Consider security implications
- Open a GitHub issue for bugs or feature requests
- Check existing issues before creating new ones
- Join discussions in existing issues
- Ask questions in issue comments
Contributors will be acknowledged in:
- GitHub contributors list
- Release notes for significant contributions
- Project documentation where appropriate
Thank you for contributing to uaView! 🚀