mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-09-20 07:14:13 +02:00
Complete Tier 3: Contributing, Building, and Development Roadmap
Contributing Page (developer guide): - Technical stack: C++, Qt5/Qt6, CMake, Catch2/googletest - Development setup with recursive clone - Complete dev environment configuration for all platforms - Code guidelines (formatting with clang-format, testing) - Commit message best practices with examples - PR submission and review process - Table of key technologies and tools Building Page (compilation guide): - Platform-specific prerequisites (Linux, macOS, Windows) - Detailed package installation instructions - WSL option for Windows developers - Git clone with submodules - CMake build configuration steps - Build variants and testing - Troubleshooting common build issues Development Roadmap (QET 2.0 vision): - QET 2.0 refactoring as major initiative - Prerequisites before refactoring begins (terminal strip gen, etc) - Four phases of architectural changes: * File format modernization (.elmt, .qet structure) * Code architecture improvements (ActionPool, serialization) * Feature enhancements (intelligent numbering, xref) * Code quality improvements - Current release status (v0.100, Jan 2024) - Qt6 migration status and active development - 30+ open issues with priority levels - How to contribute to roadmap - No fixed timeline (honest about community-driven nature) - Communication channels and learning resources Research gathered from: - GitHub repository structure and CONTRIBUTING.md references - Release notes and build system (CMake) - Dependencies (Catch2 v2.13.10, googletest v1.17.0) - QET 2.0 refactoring document and technical vision - Current open issues (30 total, with descriptions) - Roadmap and architectural plans Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtMZqGEiUMvDBqcFvVG2vb
+231
@@ -0,0 +1,231 @@
|
||||
# Tier 3 Pages Research
|
||||
|
||||
Research compiled for Contributing, Building, and Development Roadmap pages.
|
||||
|
||||
## Contributing Page Research
|
||||
|
||||
### Technical Stack Required
|
||||
- **Language:** C++ (primary development language)
|
||||
- **Framework:** Qt Framework (Qt 5.x, moving to Qt 6.x)
|
||||
- **Additional libraries:** KF5 (KDE Frameworks 5)
|
||||
- **Build system:** CMake
|
||||
- **Version control:** Git
|
||||
- **File formats:** XML (for projects, elements, titleblocks)
|
||||
- **Documentation:** Doxygen (for API docs)
|
||||
- **GUI translations:** Qt Linguist
|
||||
|
||||
### Development Setup
|
||||
```bash
|
||||
git clone --recursive https://github.com/qelectrotech/qelectrotech-source-mirror.git
|
||||
```
|
||||
|
||||
### Code Quality Tools
|
||||
- **Code formatting:** `.clang-format` file for consistent style
|
||||
- **Documentation:** Doxygen for API documentation
|
||||
- **Testing:** Unit test framework (Catch2, googletest)
|
||||
|
||||
### Community Channels
|
||||
- **Forum:** https://qelectrotech.org/forum/
|
||||
- **Wiki:** https://qelectrotech.org/wiki_new/
|
||||
- **Bug Tracker:** https://qelectrotech.org/bugtracker/
|
||||
- **Mailing List Archive:** https://listengine.tuxfamily.org/lists.tuxfamily.org/qet/
|
||||
- **GitHub Issues:** https://github.com/qelectrotech/qelectrotech-source-mirror/issues
|
||||
|
||||
### What Needs Work
|
||||
- **30 open issues** currently (bugs, features, documentation)
|
||||
- **Critical bugs:** NaN coordinates causing hangs, UUID duplicates
|
||||
- **UI/UX:** Conductor rendering, folio links, shortcuts config
|
||||
- **Features:** IEC 61355 folder structure, terminal block improvements
|
||||
- **Maintenance:** Wiki cleanup (20+ dead links)
|
||||
|
||||
---
|
||||
|
||||
## Building Page Research
|
||||
|
||||
### Current Version
|
||||
- **Latest stable:** v0.100 (January 25, 2024)
|
||||
- **Nightly builds:** Available (may be unstable)
|
||||
- **Qt5 status:** Frozen, unmaintained
|
||||
- **Qt6 status:** Active development
|
||||
|
||||
### Build System
|
||||
- **CMake:** Primary build system
|
||||
- **Dependency manager:** Handles Catch2, googletest, Qt versions
|
||||
|
||||
### Key Dependencies
|
||||
- **Qt5/Qt6:** Framework for GUI and cross-platform support
|
||||
- **Catch2 v2.13.10:** Testing framework
|
||||
- **googletest v1.17.0:** Testing framework
|
||||
- **i18n support:** Qt Linguist for translations
|
||||
|
||||
### Recent Build Improvements
|
||||
- Dependency upgrades
|
||||
- CMake refinements
|
||||
- Improved i18n handling
|
||||
- Updated packaging scripts
|
||||
- Cross-platform deployment (AppImage, Flatpak, Snap, macOS)
|
||||
- Expanded unit test coverage
|
||||
- Better QA processes
|
||||
|
||||
### Platform Support
|
||||
- **Linux:** Full support via package managers and AppImage
|
||||
- **Windows:** Installer and portable support
|
||||
- **macOS:** Native package and AppImage
|
||||
- **ARM/aarch64:** Recent support additions for non-x86 architectures
|
||||
|
||||
---
|
||||
|
||||
## Development Roadmap Research
|
||||
|
||||
### Current Focus: QET 2.0 Refactoring
|
||||
|
||||
Major modernization initiative addressing technical debt since 2006. **No explicit timeline provided.**
|
||||
|
||||
### Prerequisites Before Refactoring
|
||||
Must implement before major refactoring begins:
|
||||
- Terminal strip generator
|
||||
- Cable generator
|
||||
- Project structure improvements
|
||||
|
||||
### Phase 1: File Format Modernization
|
||||
|
||||
**Element Files (.elmt):**
|
||||
- Convert to proper SVG namespace
|
||||
- Separate non-graphical data (dynamic text, terminals, information)
|
||||
- Better structure for import/export
|
||||
|
||||
**Project Files (.qet):**
|
||||
- Restructure into zipped folder format
|
||||
- Simplified .qet manifest file
|
||||
- SQLite database for all project metadata
|
||||
- Organized subdirectories:
|
||||
- images/ (embedded diagrams)
|
||||
- elements/ (local custom elements)
|
||||
- titleblocks/ (custom title blocks)
|
||||
- config/ (project configuration)
|
||||
|
||||
### Phase 2: Code Architecture Refactoring
|
||||
|
||||
**QetDiagramEditor Refactoring:**
|
||||
- Extract scattered QActions into ActionPool singleton
|
||||
- Reduce class complexity
|
||||
- Better code organization
|
||||
|
||||
**Serialization Layer:**
|
||||
- Create dedicated serialization classes
|
||||
- Separate XML handling from domain logic
|
||||
- Potentially plugin-based approach
|
||||
|
||||
**Element Information System:**
|
||||
- Redesign element information class
|
||||
- Interface with SQLite database
|
||||
- Remove direct data storage
|
||||
|
||||
### Phase 3: Feature Enhancements
|
||||
|
||||
**Electrical Potential System:**
|
||||
- Introduce electrical potential as first-class concept
|
||||
- Group conductor properties by potential
|
||||
- Allow individual overrides per conductor
|
||||
- Better electrical relationship modeling
|
||||
|
||||
**Intelligent Auto-Numbering:**
|
||||
- Formula-based system using variables
|
||||
- Examples: %{prefix}, %{element_type}
|
||||
- Adapts automatically to element types
|
||||
- More flexible numbering schemes
|
||||
|
||||
**Cross-Reference (Xref) Expansion:**
|
||||
- Increased flexibility in display options
|
||||
- Better positioning and sizing control
|
||||
- Improved multi-folio linking
|
||||
|
||||
**Element Prefix Standardization:**
|
||||
- Standardize prefixes by element type
|
||||
- Support for norm specifications (IEC, DIN, etc.)
|
||||
- Automatic prefix assignment
|
||||
|
||||
### Phase 4: Code Quality Improvements
|
||||
|
||||
**Identified Issues Needing Work:**
|
||||
- Titleblock code simplification and redesign
|
||||
- Conductor creation complexity reduction
|
||||
- Text handling inconsistencies
|
||||
- Data validation improvements
|
||||
- Proper error handling
|
||||
|
||||
### Current Open Issues (30 total)
|
||||
|
||||
**Critical Bugs:**
|
||||
- #781: NaN coordinates cause QET to hang on project load
|
||||
- #782: Non-finite coordinates propagate to saved files
|
||||
- #783: Duplicated UUID issues in elements/links
|
||||
|
||||
**UI/UX Issues:**
|
||||
- #735: Folio report link picker displays blanks
|
||||
- #734: Conductor rendering spurs at terminals
|
||||
- #757: Shortcuts config reports false conflicts
|
||||
|
||||
**Feature Requests:**
|
||||
- #730: IEC/EN 61355 folder structure support
|
||||
- #663: Terminal block info menu in element editor
|
||||
- #802: Page refresh after element modification
|
||||
|
||||
**Documentation:**
|
||||
- #816: 20+ dead sidebar wiki links need cleanup
|
||||
|
||||
### Qt Framework Transition
|
||||
|
||||
- **Qt5:** Legacy, no longer maintained in nightly builds
|
||||
- **Qt6:** Active development focus
|
||||
- **Timeline:** Gradual migration, nightly builds on Qt6
|
||||
- **Benefits:** Modernization, performance, long-term support
|
||||
|
||||
### Timeline Notes
|
||||
|
||||
- **No explicit roadmap timeline** provided
|
||||
- Major refactoring deferred until prerequisites complete
|
||||
- Nightly builds show active ongoing work
|
||||
- Community contributions welcome for:
|
||||
- Bug fixes
|
||||
- Feature implementation
|
||||
- Documentation improvements
|
||||
- Testing and QA
|
||||
|
||||
---
|
||||
|
||||
## Key Insights for Content
|
||||
|
||||
**Contributing Page Should Cover:**
|
||||
- C++/Qt/CMake skills required
|
||||
- GitHub fork + clone workflow
|
||||
- CONTRIBUTING.md guidelines (reference)
|
||||
- How to find work (issues list)
|
||||
- Testing framework (Catch2, googletest)
|
||||
- Code formatting (clang-format)
|
||||
- Documentation (Doxygen)
|
||||
- Communication channels (forum, GitHub)
|
||||
- PR review process
|
||||
- Building locally before submitting
|
||||
|
||||
**Building Page Should Cover:**
|
||||
- Prerequisites: CMake, Qt5/Qt6, C++ compiler
|
||||
- Platform-specific setup (Linux, Windows, macOS, ARM)
|
||||
- Step-by-step build instructions
|
||||
- Dependency handling
|
||||
- Build variants (Release, Debug, with sanitizers)
|
||||
- Common build issues and fixes
|
||||
- Running tests
|
||||
- Contributing changes back
|
||||
|
||||
**Development Roadmap Should Cover:**
|
||||
- QET 2.0 refactoring initiative
|
||||
- File format modernization plans
|
||||
- Architectural improvements
|
||||
- Feature enhancements (electrical potential, auto-numbering, xref)
|
||||
- Qt6 migration status
|
||||
- Current open issues (30 total)
|
||||
- How to contribute to roadmap
|
||||
- Prerequisites before major refactoring
|
||||
- No explicit timeline (be honest about this)
|
||||
- Community contribution opportunities
|
||||
+54
-11
@@ -4,41 +4,84 @@ Instructions for building QElectroTech from source code.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before building, ensure you have the right tools and libraries installed.
|
||||
|
||||
### Linux
|
||||
|
||||
**Ubuntu/Debian:**
|
||||
**Ubuntu/Debian (20.04+):**
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install build-essential cmake qt5-qmake qtbase5-dev
|
||||
sudo apt install build-essential cmake git
|
||||
sudo apt install qtbase5-dev qt5-qmake libqt5svg5-dev
|
||||
sudo apt install qt5-image-formats-plugins # Optional, for image support
|
||||
```
|
||||
|
||||
**Fedora/RHEL:**
|
||||
**Fedora/RHEL (25+):**
|
||||
```bash
|
||||
sudo dnf groupinstall "Development Tools"
|
||||
sudo dnf install cmake qt5-qtbase-devel qt5-qmake
|
||||
sudo dnf install cmake git qt5-qtbase-devel qt5-qmake qt5-qtsvg-devel
|
||||
```
|
||||
|
||||
**Arch Linux:**
|
||||
```bash
|
||||
sudo pacman -S base-devel cmake qt5-base
|
||||
sudo pacman -S base-devel cmake git qt5-base qt5-svg qt5-tools
|
||||
```
|
||||
|
||||
**Other distributions:**
|
||||
- Install: `build-essential` (or equivalent), `cmake`, `git`
|
||||
- Install Qt5 development packages: `qtbase5-dev`, `qt5-qmake`, `libqt5svg5-dev`
|
||||
- Or use Qt6 equivalents
|
||||
|
||||
### macOS
|
||||
|
||||
1. Install Xcode Command Line Tools:
|
||||
1. **Install Xcode Command Line Tools:**
|
||||
```bash
|
||||
xcode-select --install
|
||||
```
|
||||
2. Install Qt5 (via Homebrew):
|
||||
|
||||
2. **Install dependencies via Homebrew:**
|
||||
```bash
|
||||
brew install qt5 cmake
|
||||
brew install cmake git qt@5
|
||||
# or for Qt6:
|
||||
brew install cmake git qt
|
||||
```
|
||||
|
||||
3. **Set Qt path** (if needed):
|
||||
```bash
|
||||
export Qt5_DIR=$(brew --prefix qt@5)/lib/cmake/Qt5
|
||||
# or for Qt6:
|
||||
export Qt_DIR=$(brew --prefix qt)/lib/cmake/Qt6
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
1. Install Visual Studio Build Tools or MinGW
|
||||
2. Install Qt5 from [qt.io](https://qt.io)
|
||||
3. Install CMake from [cmake.org](https://cmake.org)
|
||||
**Option 1: Visual Studio (Recommended)**
|
||||
1. Install **Visual Studio Community** (free)
|
||||
- Select "Desktop development with C++"
|
||||
- Includes MSVC compiler
|
||||
2. Install **CMake** from [cmake.org](https://cmake.org)
|
||||
3. Install **Qt5 or Qt6** from [qt.io](https://qt.io)
|
||||
- Choose "MSVC 2019 64-bit" (or 2022)
|
||||
|
||||
**Option 2: MinGW (Alternative)**
|
||||
1. Install **MinGW** with C++ support
|
||||
2. Install **CMake**
|
||||
3. Install **Qt5** (MinGW build)
|
||||
|
||||
**Option 3: WSL (Windows Subsystem for Linux)**
|
||||
1. Enable WSL2
|
||||
2. Install Ubuntu in WSL
|
||||
3. Follow Linux instructions above
|
||||
|
||||
### Git & Source Code
|
||||
|
||||
Clone the repository with submodules:
|
||||
```bash
|
||||
git clone --recursive https://github.com/qelectrotech/qelectrotech-source-mirror.git
|
||||
cd qelectrotech-source-mirror
|
||||
```
|
||||
|
||||
The `--recursive` flag is important to get all dependencies.
|
||||
|
||||
---
|
||||
|
||||
|
||||
+162
-36
@@ -1,6 +1,12 @@
|
||||
# Contributing to QElectroTech
|
||||
|
||||
Thank you for your interest in contributing to QElectroTech! This guide explains how to get involved.
|
||||
Thank you for your interest in contributing to QElectroTech! This guide explains how to get involved, from reporting bugs to writing code.
|
||||
|
||||
**Quick links:**
|
||||
- **[Issues to work on](https://github.com/qelectrotech/qelectrotech-source-mirror/issues)** — 30+ issues need help
|
||||
- **[Source repository](https://github.com/qelectrotech/qelectrotech-source-mirror)** — GitHub home
|
||||
- **[Forum](https://forum.qelectrotech.org/)** — Community discussion
|
||||
- **[CONTRIBUTING.md](https://github.com/qelectrotech/qelectrotech-source-mirror/blob/main/CONTRIBUTING.md)** — Official guidelines (in repository)
|
||||
|
||||
## Ways to Contribute
|
||||
|
||||
@@ -52,79 +58,199 @@ Ready to code? Follow these steps:
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Familiarity with C++ and Qt5
|
||||
- Basic Git knowledge
|
||||
- Ability to **[build QET from source](building)**
|
||||
- Understanding of the **[codebase structure](https://de-backer.github.io/qelectrotech-source-mirror/html/pages.html)**
|
||||
You'll need:
|
||||
|
||||
**Programming Skills:**
|
||||
- **C++** — QET is written in modern C++ (C++11 and later)
|
||||
- **Qt Framework** — Qt 5.x (current stable), Qt 6.x (in active development)
|
||||
- **Git** — Version control; essential for collaboration
|
||||
|
||||
**Tools & Knowledge:**
|
||||
- **[Build QET from source](building)** — Able to compile the project
|
||||
- **CMake** — Build system used by QET
|
||||
- **Understanding of:**
|
||||
- Qt Framework fundamentals (signals/slots, widgets, models)
|
||||
- XML processing (QET uses XML for files)
|
||||
- The **[codebase structure](https://de-backer.github.io/qelectrotech-source-mirror/html/pages.html)**
|
||||
|
||||
**Recommended:**
|
||||
- Some familiarity with electrical schematics (helps understand the domain)
|
||||
- Experience with open-source contribution workflow
|
||||
|
||||
### Key Technologies
|
||||
|
||||
| Component | Technology | Use |
|
||||
|-----------|-----------|-----|
|
||||
| **GUI Framework** | Qt 5.x / Qt 6.x | User interface, cross-platform |
|
||||
| **Language** | C++ | Core application logic |
|
||||
| **Build System** | CMake | Build configuration and compilation |
|
||||
| **Testing** | Catch2, googletest | Unit testing framework |
|
||||
| **Documentation** | Doxygen | API documentation generation |
|
||||
| **Translations** | Qt Linguist | Internationalization (i18n) |
|
||||
| **File Formats** | XML | Projects (.qet), elements (.elmt), titleblocks |
|
||||
| **VCS** | Git | Version control (GitHub) |
|
||||
|
||||
### Setup Your Development Environment
|
||||
|
||||
1. **Fork** the repository on GitHub
|
||||
2. **Clone** your fork:
|
||||
1. **Fork** the repository on GitHub:
|
||||
- Visit [https://github.com/qelectrotech/qelectrotech-source-mirror](https://github.com/qelectrotech/qelectrotech-source-mirror)
|
||||
- Click "Fork" button
|
||||
- Creates your own copy
|
||||
|
||||
2. **Clone** your fork locally (with submodules):
|
||||
```bash
|
||||
git clone https://github.com/YOUR_USERNAME/qelectrotech-source-mirror.git
|
||||
git clone --recursive https://github.com/YOUR_USERNAME/qelectrotech-source-mirror.git
|
||||
cd qelectrotech-source-mirror
|
||||
```
|
||||
3. **Create a feature branch**:
|
||||
|
||||
3. **Add upstream remote** to track main repository:
|
||||
```bash
|
||||
git remote add upstream https://github.com/qelectrotech/qelectrotech-source-mirror.git
|
||||
```
|
||||
|
||||
4. **Create a feature branch** for your work:
|
||||
```bash
|
||||
git checkout -b fix/issue-123
|
||||
# or
|
||||
git checkout -b feature/my-feature
|
||||
# Branch naming: fix/*, feature/*, docs/*, refactor/*, etc.
|
||||
```
|
||||
4. **Set up your Git user** (if not done already):
|
||||
|
||||
5. **Configure Git user** (if not done already):
|
||||
```bash
|
||||
git config user.name "Your Name"
|
||||
git config user.email "your.email@example.com"
|
||||
```
|
||||
|
||||
6. **[Build from source](building)** to ensure environment works:
|
||||
```bash
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
cmake --build . --config Release
|
||||
```
|
||||
|
||||
### Making Changes
|
||||
|
||||
1. **Write clean, well-commented code**
|
||||
- Follow the project's coding style
|
||||
- One logical change per commit
|
||||
- Write meaningful commit messages
|
||||
1. **Understand the issue/feature:**
|
||||
- Read the [GitHub issue](https://github.com/qelectrotech/qelectrotech-source-mirror/issues) thoroughly
|
||||
- Post a comment if unclear ("I'd like to work on this")
|
||||
- Discuss approach with maintainers for major changes
|
||||
|
||||
2. **Test your changes**
|
||||
- Build the project: `cmake --build .`
|
||||
- Run existing tests: `ctest`
|
||||
- Add tests for new functionality
|
||||
2. **Write clean, maintainable code:**
|
||||
- Follow **code formatting:** Use `clang-format` (configuration included)
|
||||
- **One logical change per commit** — don't mix unrelated fixes
|
||||
- **Meaningful commit messages** — explain WHY, not just WHAT
|
||||
- **Comment sparingly:** Only complex logic needs comments
|
||||
- Keep functions focused and small
|
||||
|
||||
3. **Keep your branch updated**
|
||||
3. **Code style guidelines:**
|
||||
- **Naming:** camelCase for variables/functions, PascalCase for classes
|
||||
- **Formatting:** Configured via `.clang-format` file (run before committing)
|
||||
- **Qt conventions:** Follow Qt/KDE coding standards
|
||||
- **Modern C++:** Use C++11/14/17 features appropriately
|
||||
|
||||
4. **Add tests for new functionality:**
|
||||
- Test framework: **Catch2** or **googletest**
|
||||
- Write unit tests that verify your changes
|
||||
- Ensure existing tests still pass: `ctest`
|
||||
- Run: `cmake --build . && ctest`
|
||||
|
||||
5. **Build locally & test:**
|
||||
```bash
|
||||
cd build
|
||||
cmake --build . --config Release
|
||||
ctest # Run tests
|
||||
./qelectrotech # Test the app manually
|
||||
```
|
||||
|
||||
6. **Keep your branch updated with upstream:**
|
||||
```bash
|
||||
git fetch upstream
|
||||
git rebase upstream/main
|
||||
# or merge if you prefer: git merge upstream/main
|
||||
```
|
||||
|
||||
### Submitting Your Contribution
|
||||
|
||||
1. **Push** your changes to your fork
|
||||
2. **Create a Pull Request** on GitHub with:
|
||||
- Clear title describing the change
|
||||
- Detailed description of what you changed and why
|
||||
- Reference to any related issues (`Fixes #123`)
|
||||
- Screenshots for UI changes
|
||||
3. **Respond to feedback** from reviewers
|
||||
4. **Keep the PR updated** if the main branch changes
|
||||
1. **Push** your branch to your fork:
|
||||
```bash
|
||||
git push origin fix/issue-123
|
||||
```
|
||||
|
||||
2. **Create a Pull Request (PR)** on GitHub:
|
||||
- Go to your fork → "Create Pull Request" button
|
||||
- **Title:** Short, descriptive (e.g., "Fix NaN coordinate handling in element loading")
|
||||
- **Description:** Include:
|
||||
- What problem does this solve?
|
||||
- How does your solution work?
|
||||
- Screenshots for UI changes
|
||||
- Tests added
|
||||
- Related issues: "Fixes #781" or "Closes #782"
|
||||
- **Base:** Set to `main` branch
|
||||
- **Draft PR:** Mark as Draft if still work-in-progress
|
||||
|
||||
3. **Respond to feedback:**
|
||||
- Maintainers will review your code
|
||||
- Address comments and suggestions
|
||||
- Push additional commits to same branch (updates PR automatically)
|
||||
- Be patient and collaborative
|
||||
|
||||
4. **Keep PR updated** if main branch changes:
|
||||
```bash
|
||||
git fetch upstream
|
||||
git rebase upstream/main
|
||||
git push --force-with-lease origin fix/issue-123
|
||||
```
|
||||
|
||||
5. **Celebrate!** 🎉 Once approved and merged, your contribution is part of QET
|
||||
|
||||
---
|
||||
|
||||
## Code Guidelines
|
||||
## Code Quality & Standards
|
||||
|
||||
### Coding Standards
|
||||
### Code Formatting
|
||||
|
||||
*C++ coding style and conventions used in QET*
|
||||
QET uses **clang-format** for consistent code style:
|
||||
|
||||
### Commit Messages
|
||||
```bash
|
||||
# Format your files before committing
|
||||
clang-format -i src/my_file.cpp
|
||||
# or format all changed files
|
||||
git diff --name-only | xargs clang-format -i
|
||||
```
|
||||
|
||||
*Guidelines for clear, descriptive commit messages*
|
||||
### Documentation
|
||||
|
||||
### Comments & Documentation
|
||||
|
||||
*When and how to add comments; docstring conventions*
|
||||
- **Inline comments:** Only for non-obvious logic
|
||||
- **Function documentation:** Use Doxygen style for public APIs
|
||||
- **Commit messages:** Clear, descriptive, explain why not just what
|
||||
|
||||
### Testing
|
||||
|
||||
*How to write tests for your changes*
|
||||
- **Unit tests:** Write tests for new functionality
|
||||
- **Run existing tests:** Ensure you don't break anything
|
||||
- **Test coverage:** More tests = better confidence
|
||||
|
||||
### Commit Message Guidelines
|
||||
|
||||
Good commit message structure:
|
||||
|
||||
```
|
||||
Brief one-line summary (50 chars or less)
|
||||
|
||||
Longer explanation of the change. Explain the problem,
|
||||
your solution, and any trade-offs or considerations.
|
||||
Keep to 72 character line width.
|
||||
|
||||
Fixes #123
|
||||
```
|
||||
|
||||
Examples:
|
||||
- ✅ "Fix NaN coordinate validation on element load"
|
||||
- ✅ "Add terminal strip generator feature with tests"
|
||||
- ✅ "Refactor QAction management into ActionPool"
|
||||
- ❌ "Fixed stuff"
|
||||
- ❌ "Work in progress"
|
||||
|
||||
---
|
||||
|
||||
|
||||
+280
-70
@@ -1,140 +1,350 @@
|
||||
# Development Roadmap
|
||||
|
||||
Current development efforts and planned features for QElectroTech.
|
||||
Current development efforts, planned features, and the vision for QElectroTech's future.
|
||||
|
||||
## Current Focus
|
||||
|
||||
### Active Development Areas
|
||||
|
||||
*What the team is actively working on right now*
|
||||
**Note:** QET is community-driven. No strict timeline exists; development is driven by contributor availability and prioritization.
|
||||
|
||||
---
|
||||
|
||||
## Planned Features
|
||||
## Current Focus: QET 2.0 Refactoring
|
||||
|
||||
### Near-term (Next Release)
|
||||
The major initiative for QElectroTech is **QET 2.0**, a comprehensive code modernization addressing technical debt accumulated since the project's 2006 origin.
|
||||
|
||||
*Features planned for the upcoming release*
|
||||
### What is QET 2.0?
|
||||
|
||||
### Medium-term (Future Releases)
|
||||
A **substantial architectural redesign** to:
|
||||
- Decouple code into clean, maintainable modules
|
||||
- Modernize file formats for better efficiency
|
||||
- Improve extensibility and scalability
|
||||
- Remove accumulated "band-aid" solutions
|
||||
- Support future features more easily
|
||||
|
||||
*Features planned for future versions*
|
||||
|
||||
### Long-term Vision
|
||||
|
||||
*The overall direction and goals for QElectroTech*
|
||||
**Timeline:** No explicit date set; deferred until prerequisites complete.
|
||||
|
||||
---
|
||||
|
||||
## Recent Improvements
|
||||
## Prerequisites: Before Major Refactoring
|
||||
|
||||
### Latest Release
|
||||
QET 2.0 cannot begin until these features are complete:
|
||||
|
||||
*Major improvements and features added in the latest version*
|
||||
1. **Terminal Strip Generator** — Programmatic terminal block creation
|
||||
2. **Cable Generator** — Automated cable/harness documentation
|
||||
3. **Project Structure Improvements** — Foundation for new architecture
|
||||
|
||||
### In Development
|
||||
|
||||
*Work that's in progress but not yet released*
|
||||
**Status:** In progress; community contributions welcome!
|
||||
|
||||
---
|
||||
|
||||
## Known Issues
|
||||
## Planned Architectural Changes
|
||||
|
||||
### High Priority
|
||||
### Phase 1: File Format Modernization (Planned)
|
||||
|
||||
*Critical bugs being addressed*
|
||||
**Element Files (.elmt → .selmt):**
|
||||
- Proper SVG namespace for graphics components
|
||||
- Separate non-graphical data outside SVG:
|
||||
- Dynamic text fields
|
||||
- Terminal definitions
|
||||
- Element metadata
|
||||
- Enables direct SVG import to element editor
|
||||
- Better compatibility with external tools
|
||||
|
||||
### Medium Priority
|
||||
**Project Files (.qet → Structured Zip):**
|
||||
- **Main .qet file:** Simplified manifest with folios and element coordinates
|
||||
- **SQLite database:** Comprehensive project metadata
|
||||
- **Organized folder structure:**
|
||||
```
|
||||
project.qet/
|
||||
├── project.qet (manifest)
|
||||
├── metadata.db (SQLite database)
|
||||
├── images/ (embedded diagrams)
|
||||
├── elements/ (custom elements)
|
||||
├── titleblocks/ (custom title blocks)
|
||||
└── config/ (settings)
|
||||
```
|
||||
- **UUID-based cross-referencing** for robust linking
|
||||
- Benefits: Better performance, easier collaboration, cleaner structure
|
||||
|
||||
*Important issues in the backlog*
|
||||
### Phase 2: Code Architecture Improvements (Planned)
|
||||
|
||||
### Community Reports
|
||||
**ActionPool Singleton:**
|
||||
- Consolidate scattered QActions in QetDiagramEditor
|
||||
- Reduce class complexity
|
||||
- Better code localization and maintenance
|
||||
|
||||
*Notable issues reported by users awaiting fixes*
|
||||
**Serialization Abstraction Layer:**
|
||||
- Dedicated classes for XML/database handling
|
||||
- Separate persistence from domain logic
|
||||
- Potentially plugin-based for extensibility
|
||||
- Support multiple serialization backends
|
||||
|
||||
**Element Information System:**
|
||||
- Redesign to interface with SQLite database
|
||||
- Remove direct in-memory storage
|
||||
- Better scalability for large projects
|
||||
|
||||
**Conductor System Redesign:**
|
||||
- **Electrical potential** as first-class concept
|
||||
- Group conductor properties by potential
|
||||
- Individual overrides per conductor for edge cases
|
||||
- Better electrical relationship modeling
|
||||
|
||||
### Phase 3: Feature Enhancements (Planned)
|
||||
|
||||
**Intelligent Auto-Numbering:**
|
||||
- Formula-based system using variables
|
||||
- Examples: `%{prefix}`, `%{element_type}`, `%{sequence}`
|
||||
- Adapts automatically to different element types
|
||||
- More flexible and powerful numbering schemes
|
||||
|
||||
**Element Prefix Standardization:**
|
||||
- Standardize by element type (S for switches, R for relays, etc.)
|
||||
- Support for norm specifications (IEC, DIN, EN 61346)
|
||||
- Automatic prefix assignment
|
||||
|
||||
**Cross-Reference (Xref) Expansion:**
|
||||
- Increased flexibility in display options
|
||||
- Better positioning and sizing control
|
||||
- More intuitive multi-folio linking
|
||||
- Improved link visualization
|
||||
|
||||
**Text Rendering Modernization:**
|
||||
- Switch from points to pixels for text sizing
|
||||
- Consistent text handling across the codebase
|
||||
- Better HDPI support
|
||||
- Simplified independent text handling
|
||||
|
||||
### Phase 4: Code Quality & Maintenance
|
||||
|
||||
**Issues Requiring Significant Work:**
|
||||
- Titleblock code simplification and redesign
|
||||
- Conductor creation complexity reduction
|
||||
- Text handling inconsistencies
|
||||
- Comprehensive data validation
|
||||
- Better error handling throughout
|
||||
|
||||
---
|
||||
|
||||
## Roadmap by Feature Area
|
||||
## Current Release Status
|
||||
|
||||
### Latest Stable: v0.100 (January 25, 2024)
|
||||
|
||||
**Major Features:**
|
||||
- **Terminal Strip Editor** — Draw, display, and edit terminal strips
|
||||
- **8,000+ professional symbols** in collection
|
||||
- **Enhanced export/print** handling
|
||||
- **Improved conductors** with better properties
|
||||
- **Multi-arch support** (aarch64/arm64)
|
||||
|
||||
**Recent Improvements:**
|
||||
- CMake build refinements
|
||||
- Improved internationalization (i18n)
|
||||
- Dependency upgrades (Catch2, googletest)
|
||||
- Expanded unit test coverage
|
||||
- Better QA processes
|
||||
|
||||
### Active Development: Nightly Builds
|
||||
|
||||
- **Qt6 migration** — Active work on modernizing to Qt6
|
||||
- **Qt5 frozen** — Legacy, no longer maintained
|
||||
- **Testing frameworks** — Continuous improvement
|
||||
|
||||
---
|
||||
|
||||
## Open Issues: 30+ Awaiting Help
|
||||
|
||||
Contributors can work on these areas:
|
||||
|
||||
### Critical Bugs (High Priority)
|
||||
|
||||
- **#781:** NaN coordinates cause application hang during project load
|
||||
- Impact: Users cannot load corrupted projects
|
||||
- Fix: Proper coordinate validation on load
|
||||
|
||||
- **#782:** Non-finite coordinates saved to project files
|
||||
- Impact: Corrupted data persists across saves
|
||||
- Root cause: Missing validation on coordinate operations
|
||||
|
||||
- **#783:** Duplicated UUIDs in elements/links
|
||||
- Impact: Non-deterministic resave behavior
|
||||
- Fix: UUID uniqueness validation
|
||||
|
||||
### UI/UX Issues
|
||||
|
||||
- **#735:** Folio report link picker displays valid candidates as blank rows
|
||||
- Impact: Users cannot see available links
|
||||
- Fix: Fix link picker rendering logic
|
||||
|
||||
- **#734:** Conductor rendering includes unwanted spurs at terminals
|
||||
- Impact: Diagram quality reduced
|
||||
- Fix: Improve terminal connection rendering
|
||||
|
||||
- **#757:** Shortcuts configuration incorrectly reports 60/95 bindings as conflicts
|
||||
- Impact: Confusing shortcut management
|
||||
- Fix: Correct conflict detection logic
|
||||
|
||||
### Feature Requests
|
||||
|
||||
- **#730:** Support IEC/EN 61355 folder structure organization
|
||||
- **#663:** Enable terminal block information menu in element editor
|
||||
- **#802:** Auto-refresh diagrams after element modification
|
||||
|
||||
### Maintenance
|
||||
|
||||
- **#816:** 20+ dead sidebar wiki links need cleanup
|
||||
- Impact: Users encounter broken documentation links
|
||||
- Quick fix: Update or remove broken links
|
||||
|
||||
---
|
||||
|
||||
## Roadmap by Component
|
||||
|
||||
### User Interface
|
||||
|
||||
*Planned UI/UX improvements*
|
||||
**Planned:**
|
||||
- Better folio navigation
|
||||
- Improved element picker
|
||||
- Terminal strip visual improvements
|
||||
- Conductor rendering enhancements
|
||||
|
||||
### Performance
|
||||
### File Formats & Data Management
|
||||
|
||||
*Performance optimization efforts*
|
||||
**Planned:** (QET 2.0 Phase 1)
|
||||
- .elmt → .selmt conversion with SVG support
|
||||
- .qet → Structured zip with SQLite
|
||||
- UUID-based cross-referencing
|
||||
- Better data persistence
|
||||
|
||||
### File Formats & Compatibility
|
||||
### Electrical Features
|
||||
|
||||
*Plans for XML format improvements and compatibility*
|
||||
**Planned:** (QET 2.0 Phase 3)
|
||||
- Electrical potential as first-class concept
|
||||
- Enhanced auto-numbering
|
||||
- Better cross-reference management
|
||||
- Improved conductor property management
|
||||
|
||||
### Elements & Symbols
|
||||
### Documentation & Help
|
||||
|
||||
*Expanding element libraries and symbol support*
|
||||
**Active:**
|
||||
- Improving wiki (this site!)
|
||||
- Creating tutorials
|
||||
- Cleaning up broken links
|
||||
- Expanding examples
|
||||
|
||||
### Documentation
|
||||
**Needed:**
|
||||
- Video tutorials for common workflows
|
||||
- Architectural documentation for developers
|
||||
- API reference improvements
|
||||
|
||||
*Plans to improve documentation and help*
|
||||
### Performance & Scalability
|
||||
|
||||
### Scripting & Automation
|
||||
**Planned:**
|
||||
- Better handling of very large projects (1000+ elements)
|
||||
- Faster rendering
|
||||
- Reduced memory usage
|
||||
- Improved database performance (SQLite)
|
||||
|
||||
*Planned automation and extensibility features*
|
||||
### Framework Modernization
|
||||
|
||||
### Multi-user & Collaboration
|
||||
|
||||
*Features to support team workflows*
|
||||
**In Progress:**
|
||||
- **Qt6 migration** — Primary focus of nightly builds
|
||||
- **CMake improvements** — Build system enhancements
|
||||
- **C++ modernization** — Using newer language features
|
||||
- **Testing infrastructure** — Better test coverage
|
||||
|
||||
---
|
||||
|
||||
## Contributing to the Roadmap
|
||||
## How to Contribute to the Roadmap
|
||||
|
||||
### Proposing Features
|
||||
### Report Issues You Find
|
||||
|
||||
Have an idea? **[Share it!](https://github.com/qelectrotech/qelectrotech-source-mirror/discussions)**
|
||||
1. **Search** [existing issues](https://github.com/qelectrotech/qelectrotech-source-mirror/issues) first
|
||||
2. **Report clearly:** Steps to reproduce, version, OS, attachments
|
||||
3. **Follow up:** Help developers understand and fix the issue
|
||||
|
||||
### Voting on Features
|
||||
### Suggest Features
|
||||
|
||||
Interested users can voice support for features on the forum and GitHub discussions.
|
||||
1. **Start a [discussion](https://github.com/qelectrotech/qelectrotech-source-mirror/discussions)**
|
||||
2. **Describe:** What you want, why it's useful, use cases
|
||||
3. **Engage:** Discuss with interested users and maintainers
|
||||
|
||||
### Implementing Features
|
||||
### Implement Solutions
|
||||
|
||||
Ready to code? **[See how to contribute](contributing)**.
|
||||
1. **Pick an issue** from the [issues list](https://github.com/qelectrotech/qelectrotech-source-mirror/issues)
|
||||
2. **Comment:** "I'd like to work on this"
|
||||
3. **[Build locally](building)** and start coding
|
||||
4. **[Submit a PR](contributing)** when ready
|
||||
5. **Engage with reviewers** for feedback and approval
|
||||
|
||||
### Participate in Design
|
||||
|
||||
1. Join **[GitHub Discussions](https://github.com/qelectrotech/qelectrotech-source-mirror/discussions)**
|
||||
2. Propose architectural ideas for QET 2.0
|
||||
3. Vote on community priorities
|
||||
4. Help shape the future direction
|
||||
|
||||
---
|
||||
|
||||
## Release Schedule
|
||||
## Communication Channels
|
||||
|
||||
*Information about release frequency and timing (if available)*
|
||||
**Technical Discussions:**
|
||||
- **[GitHub Issues](https://github.com/qelectrotech/qelectrotech-source-mirror/issues)** — Bug reports, feature requests
|
||||
- **[GitHub Discussions](https://github.com/qelectrotech/qelectrotech-source-mirror/discussions)** — Ideas, design, architecture
|
||||
|
||||
**Community:**
|
||||
- **[Forum](https://forum.qelectrotech.org/)** — General discussion, user support
|
||||
- **[Mailing List](https://listengine.tuxfamily.org/lists.tuxfamily.org/qet/)** — Archive of discussions
|
||||
|
||||
**Development:**
|
||||
- **[CONTRIBUTING.md](https://github.com/qelectrotech/qelectrotech-source-mirror/blob/main/CONTRIBUTING.md)** — Official guidelines (in repository)
|
||||
- **[Doxygen API Docs](https://de-backer.github.io/qelectrotech-source-mirror/html/pages.html)** — Architecture reference
|
||||
|
||||
---
|
||||
|
||||
## Development Setup
|
||||
## Important Notes
|
||||
|
||||
To participate in development:
|
||||
### No Fixed Timeline
|
||||
|
||||
1. **[Build QET from source](building)**
|
||||
2. **[Read developer documentation](https://de-backer.github.io/qelectrotech-source-mirror/html/pages.html)**
|
||||
3. **[Start contributing](contributing)**
|
||||
- QET is **community-driven**, not corporate-backed
|
||||
- Development depends on volunteer contributor time
|
||||
- Major refactoring (QET 2.0) will take years
|
||||
- Release when ready, not on schedule
|
||||
|
||||
### How Priorities Are Set
|
||||
|
||||
1. **Community voting** — What do users need most?
|
||||
2. **Critical bugs** — Stability and correctness first
|
||||
3. **Contributor availability** — Who has time to work on it?
|
||||
4. **Technical roadmap** — Architectural prerequisites
|
||||
5. **Low-hanging fruit** — Quick wins build momentum
|
||||
|
||||
### Contributing Helps!
|
||||
|
||||
Every contribution:
|
||||
- Advances the roadmap
|
||||
- Reduces backlog
|
||||
- Helps other users
|
||||
- Strengthens the project
|
||||
|
||||
---
|
||||
|
||||
## Communication
|
||||
## Learning More
|
||||
|
||||
- **[Forum](https://forum.qelectrotech.org/)** — Discuss roadmap and ideas
|
||||
- **[GitHub Discussions](https://github.com/qelectrotech/qelectrotech-source-mirror/discussions)** — Feature requests and roadmap discussion
|
||||
- **[GitHub Issues](https://github.com/qelectrotech/qelectrotech-source-mirror/issues)** — Bug reports and tracking
|
||||
- **[Community](community)** — Connect with developers and users
|
||||
- **[Contributing](contributing)** — How to get started developing
|
||||
- **[Building QET](building)** — Compile from source
|
||||
- **[History](history)** — How we got here
|
||||
- **[Community](community)** — Meet other developers
|
||||
- **[GitHub Repository](https://github.com/qelectrotech/qelectrotech-source-mirror)** — The code itself
|
||||
|
||||
---
|
||||
|
||||
## Historical Context
|
||||
## Next Steps
|
||||
|
||||
See **[History](history)** for how QElectroTech has evolved.
|
||||
**If you want to help:**
|
||||
|
||||
---
|
||||
1. **[Build QET](building)** locally
|
||||
2. **[Pick an issue](https://github.com/qelectrotech/qelectrotech-source-mirror/issues)** to work on
|
||||
3. **[See Contributing guide](contributing)** for process
|
||||
4. **Submit a PR** with your fix or feature
|
||||
5. **Celebrate!** 🎉 You're now a contributor
|
||||
|
||||
## More Information
|
||||
|
||||
- **[Contributing](contributing)** — How to get involved
|
||||
- **[Community](community)** — The people behind QET
|
||||
- **[Building QET](building)** — Development setup
|
||||
Thank you for helping shape QElectroTech's future!
|
||||
|
||||
Reference in New Issue
Block a user