A Linux kernel developer at Collabora has successfully implemented handwriting recognition for KDEβs on-screen keyboard by pairing with an AI, turning a hardware mishap into a functional feature in just 16 hours of active work. The project, documented on November 2, 2026, highlights how AI-assisted development can bridge the gap between deep systems knowledge and unfamiliar UI stacks, though it also exposes the persistent friction between open-source licensing and modern ML capabilities.
The Gap in Linux Tablet Support
The journey began when a leaking sunscreen bottle destroyed the authorβs old laptop, prompting a switch to a Lenovo Yoga 7a 2-in-1. While the hardware was fully supported by Linux, the software experience in tablet mode was lacking: KDEβs plasma-keyboard had no functional handwriting recognition. The author discovered that Qt Virtual Keyboardβs handwriting mode was gated behind proprietary engines like Cerence or MyScript, leaving open-source builds with only a dormant feature flag and no actual recognition engine.
Vibe Coding With Claude
Facing a steep learning curve in Qt Quick and Wayland input protocols, the developer employed Claude for "vibe coding." The initial attempt to build a custom BiLSTM handwriting engine failed catastrophically, yielding an 82.93% character error rate on unseen fonts. Claude correctly identified the experiment as a dead end, preserving the negative result. The team then pivoted to integrating WritePad, a GPL-3 licensed cursive recognizer, which achieved a much more usable 6.75% character error rate.
Where AI Shines and Stumbles
The AI excelled at volume and reading speed, generating 5,000 lines of code across 32 files in two days. It rapidly diagnosed complex issues, such as KWinβs modifier state resets, by fetching and analyzing source code in minutes rather than hours. However, the AI struggled with evidence-based debugging, often guessing fixes for the scribble-to-correct feature until the human developer insisted on instrumentation, which revealed a subtle bug in QRectF::united() handling zero-size rectangles.
The Human Role in AI Pair Programming
The developerβs value lay in product judgment and catching false assumptions. When Claude claimed a flag sorted strokes, the human noticed the failure pattern correlated with word length, leading to the discovery of a threshold in the WritePad source code. This interaction underscores that while AI can handle the mechanical aspects of coding, it still requires human oversight to avoid plausible but incorrect solutions and to make final architectural decisions.
Key Takeaways
- AI significantly lowers the barrier to entry for unfamiliar tech stacks, enabling a kernel dev to ship a UI feature in a weekend.
- Proprietary licensing remains a major blocker for open-source ML features, forcing reliance on older engines like WritePad.
- Human intuition about failure patterns is critical for debugging AI-generated code that looks correct but behaves incorrectly.
- Negative results from AI experiments should be preserved to guide future development decisions.
The Bottom Line
This project proves that AI is not just a code generator but a force multiplier for developers willing to learn new stacks. The bottleneck is no longer syntax or library documentation, but the human capacity to verify truth and make product calls. - The 16-hour timeline is misleading without context: it represents focused work over 30 hours, including GPU training waits and rebuilds. - The resulting feature is functional but not yet upstream, pending a difficult licensing conversation with KDE maintainers.