Machine Learning is a native Linux desktop teaching application for the Machine programming language, written in C with GTK4, GtkSourceView 5, and SQLite3.
This first scaffold already implements:
- Linux-only desktop packaging
- First-launch onboarding wizard
- Instant English / Simplified Chinese interface switching
- User-selected database directory
- Resume-from-last-node persistence via SQLite
- A persistent main window named List1
- Plain
.mneediting with line numbers and lesson-aware run/check workflow - Install / uninstall targets that do not depend on the source tree after installation
- Isolation from the Machine compiler runtime paths under
/usr/local/lib/machineand/usr/local/include/machine
- The wizard is fixed-size and non-resizable.
- The main window is the long-lived workspace window called List1.
- If the selected database directory is deleted later, the application returns to the onboarding wizard on the next launch.
- The app installs its own resources into
/usr/local/share/machine-learningand does not overwrite or relocate the Machine compiler runtime. - The code editor keeps plain text editing behavior and does not replace or modify the Machine compiler installation.
GTK windows use pixel sizes, while the original product brief described window sizes as 100x35 and 145x45.
This scaffold maps those layout units to practical desktop defaults:
- onboarding wizard: 1000 x 700
- List1 main window: 1450 x 900
If you want a different mapping later, it is easy to change.
sudo dnf install -y gcc make gtk4-devel gtksourceview5-devel sqlite-devel desktop-file-utilssudo apt install -y build-essential libgtk-4-dev libgtksourceview-5-dev libsqlite3-dev desktop-file-utilssudo pacman -S --needed base-devel gtk4 gtksourceview5 sqlite desktop-file-utilsRunning plain make prints the English build parameter summary:
makeBuild the application:
make buildRun it from the source tree:
make runInstall it system-wide:
sudo make installUninstall it:
sudo make uninstallAfter installation, the project no longer depends on the source tree.
/usr/local/bin/machine-learning
/usr/local/share/machine-learning/css/app.css
/usr/local/share/machine-learning/language-specs/machine.lang
/usr/local/share/applications/machine-learning.desktop
/usr/local/share/icons/hicolor/scalable/apps/machine-learning.svg
User configuration is stored at:
~/.config/machine-learning/config.ini
The actual lesson database is stored inside the folder selected by the user during onboarding:
<selected-folder>/machine_learning.db
- first launch language chooser
- immediate UI language switching
- database folder selection
- SQLite bootstrap
- persistence of the current lesson node
- automatic resume to the previous node
- List1 main workspace opening directly on later launches
This scaffold is ready for the next phase:
- full course graph
- rich lesson rendering
- Machine code execution integration
- progress checkpoints and pass/fail tracking
- more advanced editor tooling
- deeper HTML/CSS-like card layouts and learning modules

