Table of Contents
- Development Roadmap
- Current Focus: QET 2.0 Refactoring
- Prerequisites: Before Major Refactoring
- Planned Architectural Changes
- Phase 1: File Format Modernization (Planned)
- Phase 2: Code Architecture Improvements (Planned)
- Phase 3: Feature Enhancements (Planned)
- Phase 4: Code Quality & Maintenance
- Current Release Status
- Open Issues: 30+ Awaiting Help
- Roadmap by Component
- User Interface
- File Formats & Data Management
- Electrical Features
- Documentation & Help
- Performance & Scalability
- Framework Modernization
- How to Contribute to the Roadmap
- Communication Channels
- Important Notes
- Learning More
- Next Steps
Development Roadmap
Current development efforts, planned features, and the vision for QElectroTech's future.
Note: QET is community-driven. No strict timeline exists; development is driven by contributor availability and prioritization.
Current Focus: QET 2.0 Refactoring
The major initiative for QElectroTech is QET 2.0, a comprehensive code modernization addressing technical debt accumulated since the project's 2006 origin.
What is QET 2.0?
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
Timeline: No explicit date set; deferred until prerequisites complete.
Prerequisites: Before Major Refactoring
QET 2.0 cannot begin until these features are complete:
- Terminal Strip Generator — Programmatic terminal block creation
- Cable Generator — Automated cable/harness documentation
- Project Structure Improvements — Foundation for new architecture
Status: In progress; community contributions welcome!
Planned Architectural Changes
Phase 1: File Format Modernization (Planned)
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
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
Phase 2: Code Architecture Improvements (Planned)
ActionPool Singleton:
- Consolidate scattered QActions in QetDiagramEditor
- Reduce class complexity
- Better code localization and maintenance
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
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:
- Better folio navigation
- Improved element picker
- Terminal strip visual improvements
- Conductor rendering enhancements
File Formats & Data Management
Planned: (QET 2.0 Phase 1)
- .elmt → .selmt conversion with SVG support
- .qet → Structured zip with SQLite
- UUID-based cross-referencing
- Better data persistence
Electrical Features
Planned: (QET 2.0 Phase 3)
- Electrical potential as first-class concept
- Enhanced auto-numbering
- Better cross-reference management
- Improved conductor property management
Documentation & Help
Active:
- Improving wiki (this site!)
- Creating tutorials
- Cleaning up broken links
- Expanding examples
Needed:
- Video tutorials for common workflows
- Architectural documentation for developers
- API reference improvements
Performance & Scalability
Planned:
- Better handling of very large projects (1000+ elements)
- Faster rendering
- Reduced memory usage
- Improved database performance (SQLite)
Framework Modernization
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
How to Contribute to the Roadmap
Report Issues You Find
- Search existing issues first
- Report clearly: Steps to reproduce, version, OS, attachments
- Follow up: Help developers understand and fix the issue
Suggest Features
- Start a discussion
- Describe: What you want, why it's useful, use cases
- Engage: Discuss with interested users and maintainers
Implement Solutions
- Pick an issue from the issues list
- Comment: "I'd like to work on this"
- Build locally and start coding
- Submit a PR when ready
- Engage with reviewers for feedback and approval
Participate in Design
- Join GitHub Discussions
- Propose architectural ideas for QET 2.0
- Vote on community priorities
- Help shape the future direction
Communication Channels
Technical Discussions:
- GitHub Issues — Bug reports, feature requests
- GitHub Discussions — Ideas, design, architecture
Community:
- Forum — General discussion, user support
- Mailing List — Archive of discussions
Development:
- CONTRIBUTING.md — Official guidelines (in repository)
- Doxygen API Docs — Architecture reference
Important Notes
No Fixed Timeline
- 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
- Community voting — What do users need most?
- Critical bugs — Stability and correctness first
- Contributor availability — Who has time to work on it?
- Technical roadmap — Architectural prerequisites
- Low-hanging fruit — Quick wins build momentum
Contributing Helps!
Every contribution:
- Advances the roadmap
- Reduces backlog
- Helps other users
- Strengthens the project
Learning More
- Contributing — How to get started developing
- Building QET — Compile from source
- History — How we got here
- Community — Meet other developers
- GitHub Repository — The code itself
Next Steps
If you want to help:
- Build QET locally
- Pick an issue to work on
- See Contributing guide for process
- Submit a PR with your fix or feature
- Celebrate! 🎉 You're now a contributor
Thank you for helping shape QElectroTech's future!
Getting Started
🌐 Languages — English · Français · Deutsch
Guides
Conductors — wire properties, what feeds which export, and cables
Wire & cable catalogue — cable types, IEC 60757 core colours, assigning a core to a conductor
Printing and exporting — paper, PDF, images, and what each path does differently
Linking elements — master, slave, terminal
PLC modules — I/O tables and linking a wire to a specific point
Using the element editor — drawing tools, saving, checks
Preferences reference — what each settings page does
Keyboard-only control — mouseless QET, and the one real gap
Mouse modifiers — what Shift, Ctrl and Alt change while you drag
Managing collections — folders, writability, building your own shortlist
Templates — reusable multi-element blocks, and why clicking one does nothing
Search & Replace — bulk property changes
Building a nomenclature query — the BOM/summary table builder
Linking wires across pages — folio reports
Variables & formulas — %f, %{label}, sequences
Auto-numbering — schemes, sequences, freezing
Terminal strips — strips, levels, bridges
Title block templates — the .titleblock format
Importing EPLAN parts (.edz) — EPLAN Data Portal
DXF import & export — two unrelated features, one format
The project database — the in-memory SQLite cache
Development
Automating QET — CLI, XML formats, external tools
CLI Reference — command line usage
JavaScript Scripting — --run, geometry editing, undo
Vision — proposal, under discussion
