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
ispyisail
2026-09-09 15:22:35 +12:00
parent c0256bc0b6
commit 40a1f6508d
4 changed files with 727 additions and 117 deletions
+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!