4 ms·
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
by moosingin3space 9y ago
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.
- striking 9y agoLess 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.
- steveklabnik 9y agoGTK is re-writing bits in Rust, so it’s a pretty robust option overall. Lots of work left to do!
- shmerl 9y agoIs Qt with Rust usable already, or it's still very experimental?
- steveklabnik 9y agoI 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.
- shmerl 9y agoThe last time I looked into it, there was this project: https://phabricator.kde.org/source/rust-qt-binding-generator/ https://phabricator.kde.org/source/rust-qt-binding-generator... But it was in the prototype stage then.
- pjmlp 9y agoI 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.
- steveklabnik 9y agoThere are already some projects that let you do that, consider Relm for example: https://github.com/antoyo/relm/blob/master/examples/http/src/main.rs#L102-L180 https://github.com/antoyo/relm/blob/master/examples/http/src...
- craftyguy 9y ago> 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.
- solarkraft 9y agoBut it's not micropyhon, you have many apps running on a phone and want them to be as efficient as possible. From my experience with Vala (compiles to C) it would have been a much better choice.
- craftyguy 9y agoTechnically you can use any of those languages. It's just running their flavor to Debian (which runs today on their laptops). I'm super excited for doing mobile app development in something that doesn't require Android's overly complex toolchains.
- flukus 9y agoI'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 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.
- mtaksrud 9y agoI’ll put this here http://www.cl.cam.ac.uk/~srk31/research/papers/kell17some-preprint.pdf http://www.cl.cam.ac.uk/~srk31/research/papers/kell17some-pr...
- primitur 9y agoI'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.)