While I'm very enthusiastic about the Librem 5, I think it would be better if they recommended a non-C language for app development. Gnome Builder, the IDE they recommend, has support for Vala, Rust, and Python, all of which should provide a much better developer experience, not to mention should enable more reliable apps.
Less people know Vala than C, the Qt crate for Rust is some autogenerated thing that doesn't look very well-supported (not sure about GTK), and Python might not be the right choice for an embedded platform.
I'm fine with letting the platform mature a little before the scope of the project is broadened.
> Python might not be the right choice for an embedded platform.
I use micropython in several of my projects for CPUs that are waaaay less powered than the thing they're putting in the Librem5 and, despite not being a 100% feature full implementation of python, it's still a very capable platform. Granted, I don't drive any UIs (yet), but those components would be handled by some native libraries anyways on the Librem5, and the choice of python vs C would not matter from that respect.
I only dabbled with Gtk-rs for a bit, and Rust does not really fit my UI/UX workflows, but I would still suggest as major improvement a better way to being able to reference struct fields from callbacks without the current Option<Rc<>> workarounds.
I don't have personal experience, but my understanding is that GTK is much easier since it's in C; QT makes use of some C++ features like inheritance that don't have a direct analogue in Rust that makes it hard. I've heard of several people doing things, but am not sure there's a particular go-to amazing solution at the moment.
I'm excited C is supported, creating a hello world app is a few lines in a main.c (http://www.levien.com/gimp/hello.html) file and calling GCC. That's immediately so much simpler than complete and utter mess that is android development.
As for rust, I'd prefer they get a stable ABI so my phone doesn't end up with statically compiled bloat.
I'm really glad they chose C-language for this, personally. The reason is, I've been solving the mobile dilemna for the last few years by focusing on one policy: Lua is the platform.
So as soon as I can access a Libre-phone, I'll put my favourite Lua-based engines on this thing, work out a toll-free-bridge for any of the nice OS things, and put all my apps on it as a target platform.
Just a matter of having the hardware.
(That said, there is absolutely no reason one could not do the same thing: use your language-of-choice, with a bridging layer. The use of C makes this a lot more tenable than, say, other systems languages.. at least in terms of tooling and methodology.)