Skip to content

development_roadmap

ispyisail edited this page Oct 1, 2026 · 3 revisions

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:

  1. Terminal Strip Generator β€” Programmatic terminal block creation
  2. Cable Generator β€” Automated cable/harness documentation
  3. 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 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

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-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

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: 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

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 sheet 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

  1. Search existing issues first
  2. Report clearly: Steps to reproduce, version, OS, attachments
  3. Follow up: Help developers understand and fix the issue

Suggest Features

  1. Start a discussion
  2. Describe: What you want, why it's useful, use cases
  3. Engage: Discuss with interested users and maintainers

Implement Solutions

  1. Pick an issue from the issues list
  2. Comment: "I'd like to work on this"
  3. Build locally and start coding
  4. Submit a PR when ready
  5. Engage with reviewers for feedback and approval

Participate in Design

  1. Join GitHub Discussions
  2. Propose architectural ideas for QET 2.0
  3. Vote on community priorities
  4. Help shape the future direction

Communication Channels

Technical Discussions:

Community:

  • Forum β€” General discussion, user support
  • Mailing List β€” Archive of discussions

Development:


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

  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

Learning More


Next Steps

If you want to help:

  1. Build QET locally
  2. Pick an issue to work on
  3. See Contributing guide for process
  4. Submit a PR with your fix or feature
  5. Celebrate! πŸŽ‰ You're now a contributor

Thank you for helping shape QElectroTech's future!

Getting Started

Home

🌐 Languages β€” English Β· FranΓ§ais Β· Deutsch

Downloads

Windows without admin rights β€” the portable archive, no installer

Quick Start Guide

User Manual

FAQ

Tips & Tricks

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

File formats
Elements XML
Project XML
Development

Building from Source

Contributing Code

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

Development Roadmap

Vision β€” proposal, under discussion

Developer Tools

About

Features

History

Community

License

Contributing to this Wiki

Clone this wiki locally