[15] Usability enhancements to CONTROL-CORE #494
Replies: 2 comments 10 replies
-
|
What I Understand So Far The core protocol uses a file-based data-sharing mechanism with a wire format based on Python's ast.literal_eval() syntax, and it supports development in Python, C++, MATLAB/Octave, Verilog, and Java. An optional ZMQ transport layer enables distributed execution. The workflow generator (mkconcore.py) parses GraphML files from the concore Editor (DHGWorkflow) and produces platform-specific scripts for Windows, POSIX, and Docker environments. The CLI (concore_cli) already offers 7 commands - init, run, validate, inspect, status, stop, and watch - with comprehensive validation (12 checks including shell injection detection and ZMQ port conflict analysis). The Docker workflow generates per-node containers with shared-volume communication. However, the multi-platform and multi-language nature of the project introduces friction: configuration is scattered across four separate files (concore.tools, concore.octave, concore.mcr, concore.sudo), tool paths must be set manually, platform-specific scripts must be regenerated when switching between Windows/POSIX/Docker, and the Docker workflow lacks modern orchestration (e.g., Docker Compose). Proposed Approach: "Zero-to-Study in Minutes" Phase 1 - Installation & Configuration Automation (Weeks 1–4) Phase 2 - Container-First Workflow (Weeks 5–8) Phase 3 - Cross-Platform Runner & UX Polish (Weeks 9–12) Why This Approach Given my existing deep involvement in the project, I'm confident I can hit the ground running from Day 1 and deliver meaningful usability improvements across all target platforms. |
Beta Was this translation helpful? Give feedback.
-
|
hello @pradeeban Sir i have one question: |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello @pradeeban Sir, @Rahuljagwani Sir, and @mayureshkothare Sir,
While drafting my proposal for [15] Usability Enhancements to CONTROL-CORE, I came across a few questions and would really appreciate your guidance.
Q1.The current configuration is scattered across four separate files (concore.tools, concore.octave, concore.mcr, concore.sudo). Would you be open to consolidating these into a single TOML/YAML configuration file (e.g., concore.toml) while keeping backward compatibility with the old files? Or is the separation intentional for modularity?
Q2.I noticed that mkconcore.py generates separate shell scripts for Windows (start /B, taskkill), POSIX (xterm -e, kill), and Docker (docker run/stop). Currently, users must choose one target at generation time with -t. Would it be valuable to generate a unified cross-platform runner (e.g., using Python's subprocess module) so that a single generated study can run on any OS without regeneration?
Q3.The CLI's validate command already performs 12 checks including shell injection prevention and ZMQ port conflict detection. For the usability enhancement, should I focus on making validation part of a pre-flight check before concore run, or should validation and running remain decoupled?
Q4. I see that Phase 1 protocol conformance tests exist in tests/test_protocol_conformance.py covering Python's parse_params, initval, and write_zmq. Phase 2 is planned for C++, Java, and MATLAB cross-language validation. Is completing Phase 2 conformance testing in scope for this usability project, or should I focus purely on installation/deployment UX?
Q5.The wire format uses Python ast.literal_eval() syntax. The C++ parser in concore.hpp and Java parser in TestLiteralEval.java re-implement this independently. Have there been interoperability bugs between language implementations? I'm thinking about whether a formal wire format specification document would help prevent future drift.
Q6.The Docker workflow currently generates individual build/run/stop scripts but doesn't produce a docker-compose.yml. Since concore studies often have 3-5+ nodes running concurrently with shared volumes, would generating a Docker Compose file be a high-value usability improvement? This would also naturally pave the way for Kubernetes deployment via kompose.
Q7.I noticed Dockerfile.py installs g++ and libgl1-mesa-glx even though Python-only nodes don't need them. Dockerfile.m uses mtmiller/octave as the base image. Should each study node get a minimal per-language Dockerfile, or is the current 'fat image' approach preferred for simplicity? This has implications for image size and CI/CD build times.
Q8.The DOCKEREXE variable defaults to docker but previous versions defaulted to sudo docker. I see the three-level override (config file > env var > default). For platforms like macOS/Windows with Docker Desktop, Podman, or Rancher Desktop, should the installer auto-detect the container runtime?
Q9. For the installer, I'm considering three approaches: (a) a Python-based concore setup wizard that auto-detects compilers/runtimes and writes config files, (b) platform-native installers (MSI for Windows, .deb/.rpm for Linux, Homebrew formula for macOS), or (c) a container-first approach where docker run concore/studio gives you everything. Which direction aligns best with your users' needs — researchers running locally, or teams deploying on clusters?
Q10.The concore.tools config requires users to manually find paths for g++, iverilog, python3, octave, etc. Tools like shutil.which() in Python can auto-detect these on PATH. Should the concore init command include a --detect-tools phase that scans the system and writes concore.tools automatically?
Q11.Given the 350-hour budget, which is roughly 12 weeks full-time, I'd like to prioritize. From your perspective, which of these areas would deliver the most impact: (a) installation automation, (b) Docker Compose + container-first workflow, (c) cross-platform unified runner, or (d) documentation and guided tutorials? I want to make sure Week 1-4 tackles the highest-value items."
Q12.The concore-editor (DHGWorkflow fork) is a ReactJS frontend. Should usability enhancements include improvements to the editor's setup process (e.g., a single concore editor CLI command to launch it), or should I keep focus strictly on the backend protocol and CLI?
Beta Was this translation helpful? Give feedback.
All reactions