The Vala Programming Language
What Vala Is / Origins
- Designed as a higher-level language for GNOME: C#-like syntax, compiles to GObject-based C, no VM.
- Aims to make GLib/GObject/GTK development less painful than plain C while retaining native binaries and easy C interop.
- Often described as “syntactic sugar over C and GObject,” with reference-counting similar in spirit to Swift or ObjC-style systems.
Niche and Use Cases
- Main niche: GNOME/GTK desktop apps, especially where low footprint and native integration matter (e.g., Linux desktop, embedded, phones like PinePhone).
- Used for GTK apps, GStreamer, DBus, and some desktop distributions (e.g., many elementary OS apps).
- Examples mentioned: GNOME utilities (calculator, Boxes), Git GUI (gitg), XMPP client (Dino), some older apps (Geary, Shotwell), and tools like Frida.
Comparisons to Other Languages
- Versus Java/C#:
- No VM; very small native binaries and low overhead.
- Much easier C/C++ interop than JNI and often simpler than P/Invoke.
- Historically attractive when .NET/Mono on Linux had licensing/patent concerns; several Mono-based apps were rewritten in Vala.
- Some argue that modern C# with NativeAOT now covers most of the same ground and has a stronger ecosystem.
- Versus Swift:
- Similar feel (native code, refcounting, C interop), but tied to GObject instead of Apple ecosystems.
- Versus Go:
- Go considered awkward for GTK; Vala is more “GTK-native” and better suited to this stack.
Ecosystem, Adoption, and Tooling
- Regarded by fans as elegant and very productive for GTK apps, with good central docs (e.g., valadoc) and many existing GObject-based libraries.
- There is an official “Vala for Java/C# programmers” documentation to ease onboarding.
- A sibling language, Genie (Python-like syntax on same compiler), is now explicitly deprecated and effectively dead.
Critiques, Risks, and Decline
- Some report Vala as a “leaky abstraction” over GObject/C, with crashes if you don’t understand the underlying model.
- Concerns that it was developed too narrowly for GNOME/GTK, offering little beyond what Java/C# already provided for broader domains (web, scripting, cross-platform GUI).
- Network effects and job-market concerns: learning effort vs. limited industry usage.
- A 2017-era concern: language reportedly maintained largely by one person; some GNOME voices have advised against new projects in it.
- Questions about long-term maintenance, ABI stability, and GNOME/GTK’s reputation for API breakage further dampen enthusiasm.
Alternatives and Future Direction
- Some in the GNOME world are moving toward Rust with gtk-rs and higher-level frameworks like Relm4, citing better ecosystem and safety.
- Others prefer Qt (often via C++ or Python), or web-based/electron-style stacks for cross-platform GUIs, despite performance and footprint drawbacks.
- Overall sentiment: Vala is liked by those who use it, but perceived as underused, niche, and possibly overshadowed by Rust and modern .NET.