Is anyone doing work creating GUIs in OCaml right now? If so, what GUI library are you using?
lablgtk is out of date, supporting only Gtk+2. lablqt is now called lablqml, and the tutorial is offline. Not sure what’s going on with this library, but it seems in transition.
So is there anything up-to-date, or are people just not making use of GUI libraries?
I’m one of the developers or contributors to Lablqml (previously known as Lablqt).
I have used it successfully to develop a proprietary UI application used in the industry and it works great. The documentation is not there yet because the method I have used can be improved. Basically I would like to advance it a bit more.
Currently preparing a clean repository focusing on binding QML which I will document. The more attention, likes and comments the more inclined I will be to get going
I implore you to proceed with this. We definitely need good bindings to a cross-platform GUI library in OCaml. Is lablqml usable as is? I’d love to start using it.
Sure will do. Lablqml is usable, part of the bindings anyway, but you need to know what you are doing, which is currently only possible by reading the code and understanding the bindings.
Very cool! Didn’t even know this was possible. You should get it added to Awesome OCaml.
What made you decide to go in this direction? I’m thinking of the primacy of Windows and the cost of starting up a .Net process as possible downsides here.
I’ve done some Eliom-Ocsigen programming, and while it’s possibly some of the best experiences you can have for client-server web apps, it still has the overhead of html/css/DOM programming, and it requires a client-server mentality even for applications that don’t need client-server. I’d much rather not have to deal with any of that when making simple GUI-based applications, not to mention the cost of starting up a browser instance or dealing with browser slowness.
Just for completeness’s sake I feel like I should mention reason-react. If you’ve ever used React.js that project is basically a set of bindings to it. It’s written in Reason which is just OCaml so you can use it from OCaml world.
I haven’t used it myself but I’ve heard that it’s pretty good
@bluddy I didn’t decide it, csml was used long before I joined my employer. But I would do the same now—I think it makes a lot of sense to develop GUIs using each platform’s native toolkit if you want the best result.
I have been working on a binding generator that addresses the difficulties of GUI libraries: arbitrary (cyclic) object graphs, non-trivial life time and control flow (non-deterministic, concurrent, etc): https://github.com/let-def/goo.
It is the result of a few years of experiments with bindings and should cover the needs of GObject, Objective-C and Win32 GUI bindings.