Repository navigation
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.
The major initiative for QElectroTech is QET 2.0, a comprehensive code modernization addressing technical debt accumulated since the project's 2006 origin.
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.
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!
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 sheets 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
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
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-sheet 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
Issues Requiring Significant Work:
- Titleblock code simplification and redesign
- Conductor creation complexity reduction
- Text handling inconsistencies
- Comprehensive data validation
- Better error handling throughout
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
- Qt6 migration β Active work on modernizing to Qt6
- Qt5 frozen β Legacy, no longer maintained
- Testing frameworks β Continuous improvement
Contributors can work on these areas:
-
#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
-
#735: Sheet 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
- #730: Support IEC/EN 61355 folder structure organization
- #663: Enable terminal block information menu in element editor
- #802: Auto-refresh diagrams after element modification
-
#816: 20+ dead sidebar wiki links need cleanup
- Impact: Users encounter broken documentation links
- Quick fix: Update or remove broken links
Planned:
- Better sheet navigation
- Improved element picker
- Terminal strip visual improvements
- Conductor rendering enhancements
Planned: (QET 2.0 Phase 1)
- .elmt β .selmt conversion with SVG support
- .qet β Structured zip with SQLite
- UUID-based cross-referencing
- Better data persistence
Planned: (QET 2.0 Phase 3)
- Electrical potential as first-class concept
- Enhanced auto-numbering
- Better cross-reference management
- Improved conductor property management
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
Planned:
- Better handling of very large projects (1000+ elements)
- Faster rendering
- Reduced memory usage
- Improved database performance (SQLite)
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
- Search existing issues first
- Report clearly: Steps to reproduce, version, OS, attachments
- Follow up: Help developers understand and fix the issue
- Start a discussion
- Describe: What you want, why it's useful, use cases
- Engage: Discuss with interested users and maintainers
- 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
- Join GitHub Discussions
- Propose architectural ideas for QET 2.0
- Vote on community priorities
- Help shape the future direction
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
- 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
- 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
Every contribution:
- Advances the roadmap
- Reduces backlog
- Helps other users
- Strengthens the project
- 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
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
Windows without admin rights β the portable archive, no installer
Guides
Conductors β wire properties, what feeds which export, cables, and hops where wires cross
Wires per terminal β limit the wires on a terminal, chain wiring instead of stars
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
Grid size and element size β why symbols aren't all the same scale, and scaling one without leaving the grid
Preferences reference β what each settings page does
Saving and loading settings β your whole setup in one file, to copy or keep
Keyboard-only control β mouseless QET, and what still needs a mouse
Mouse modifiers β what Shift, Ctrl and Alt change while you drag
3D mouse β SpaceMouse pan, zoom and buttons
Aligning items β snap symbols back to the grid, or line them up
Pictures on a sheet β labels, crop, transparency, what they cost in the file
Arcs and curved wires β the Arc tool, pulling an arc in or out, rounding a corner with a fillet, dashed arcs for lighting layouts
Grouping items β select, move and copy several items as one
Finding your place on a sheet β go to a cell like B13 or 4-B7, keep the headers in sight, show the cell limits, zoom and pan
Showing and hiding kinds of items β hide texts, wire numbers, shapes, pictures, tables or cross-references on every sheet
Drawing faster β place without dragging, the S shortcut bar, command search, gestures
Customising QElectroTech β keys, toolbar size and contents, the gesture ring (partly pending)
Managing collections β folders, writability, building your own shortlist
Templates β reusable multi-element blocks, placed by double-click or drag
Search & Replace β bulk property changes
Building a nomenclature query β the BOM/summary table builder
Linking wires across pages β sheet 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; command-line export and layers
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
MCP server β let an AI assistant read, verify and edit projects
Connecting an AI assistant β setup for Claude, Copilot, Gemini, Codex, Cursor, LM Studio
Script buttons β stored scripts with an icon, by hand or by an assistant
Live mode β an assistant working in the open project while you watch
Macro recorder β record a task by hand, for an assistant to script
Vision β proposal, under discussion
