Table of Contents
- Tier 3 Pages Research
- Contributing Page Research
- Building Page Research
- Development Roadmap Research
- Current Focus: QET 2.0 Refactoring
- Prerequisites Before Refactoring
- Phase 1: File Format Modernization
- Phase 2: Code Architecture Refactoring
- Phase 3: Feature Enhancements
- Phase 4: Code Quality Improvements
- Current Open Issues (30 total)
- Qt Framework Transition
- Timeline Notes
- Key Insights for Content
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
git clone --recursive https://github.com/qelectrotech/qelectrotech-source-mirror.git
Code Quality Tools
- Code formatting:
.clang-formatfile 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
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
