Clone
1
TIER3 RESEARCH
ispyisail edited this page 2026-09-09 15:22:35 +12:00

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-format file for consistent style
  • Documentation: Doxygen for API documentation
  • Testing: Unit test framework (Catch2, googletest)

Community Channels

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