caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: David MENTRE <dmentre@linux-france.org>
To: Adrien Nader <adrien@notk.org>
Cc: Paolo Donadeo <p.donadeo@gmail.com>,
	OCaml mailing list <caml-list@inria.fr>
Subject: Re: [Caml-list] OCaml vs Ada and/or GUI options
Date: Wed, 11 Sep 2013 11:49:25 +0200	[thread overview]
Message-ID: <CAC3Lx=b6Ty-a=Su-cw6PWA9ad0=p6H=McfuC4a8d_MeSHwsb1Q@mail.gmail.com> (raw)
In-Reply-To: <20130911052437.GA9514@notk.org>

Hello Adrien,

2013/9/11 Adrien Nader <adrien@notk.org>:
> I'm trying to get a list of things that people find bad in (labl)gtk.
> Would you be able to put clear words on what you dislike?

From past experiment, GUI of demexp OCaml application
(http://www.linux-france.org/~dmentre/demexp/latest-src/demexp-book-0.8.2.pdf
, look at part IV p. 90), about 5-8 years ago:

  1. Lack of documentation. LablGTK doc says "look at C GTK doc". But
the lablgtk binding changes things compared to the C API, so this not
a one-to-one mapping neither. And the "obvious" changes weren't so
obvious to me. A tutorial made by a Korean guy IIRC helped a lot;

  2. Verbosity of GTK: it takes a lot of code to put 2 buttons
together (probably not GTK specific). At one point I used the GTK
graphical tool (can't remember its name) to design the GUI graphically
and load it into OCaml as XML file. It improved a lot my productivity;

  3. As other said, GTK is dead end: bad support of non-Linux
platforms, not a lot of developers, etc.  It was very difficult to get
my labgtk application working on Windows. A windows developer helped
me a lot: picking the good versions of libraries, solve Windows
specific issues, etc. I couldn't have compiled my OCaml GTK GUI on
Windows without him.

  4. The use of callbacks everywhere looks to me like writing
spaghetti code. I still hope somebody will write an
API/Framework/whatever were one writes declaratively how the GUI
should react and interact with application code, and all the needed
code is generated automatically. Adobe had such a tool at one point
for its internal use (i.e. for its applications). I don't know if
reactive approaches would help in that regard.


To answer original Gour question: I don't think anything in the OCaml
world fits the bill (safe, available at long term, documented, big
user community, ...). Should I do the same thing, I would write the
GUI as an external process (probably in C++ Qt) and use a
communication protocol to control it from my OCaml program. Or maybe
use the binding with Tk, if the graphical aspect has improved.

I still hope that somebody will propose a sane environment to write
GUI apps. :-)

Best regards,
david

  parent reply	other threads:[~2013-09-11  9:49 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-10 21:09 Gour
2013-09-10 21:38 ` Paolo Donadeo
2013-09-11  5:24   ` Adrien Nader
2013-09-11  7:21     ` Kakadu
2013-09-11  8:21       ` [Caml-list] " Gour
2013-09-11  8:14     ` Gour
2013-09-11 18:17       ` Adrien Nader
2013-09-11 19:31         ` Gour
2013-09-11 19:53           ` Adrien Nader
2013-09-11 20:41             ` Gour
2013-09-11 21:01               ` Adrien Nader
2013-09-12  5:44                 ` Gour
2013-09-12  6:31                   ` Adrien Nader
2013-09-12  5:36             ` Gour
2013-09-12  6:48               ` Adrien Nader
2013-09-12  7:26                 ` Gour
2013-09-11 20:06         ` Jon Harrop
2013-09-11 20:48           ` Anthony Tavener
2013-09-11 21:04             ` Adrien Nader
2013-09-12 14:40             ` [Caml-list] " Jon Harrop
2013-09-12 14:51               ` Alain Frisch
2013-09-12 14:57                 ` Lukasz Stafiniak
2013-09-12 15:04                   ` Alain Frisch
2013-09-14  3:05                 ` Jon Harrop
2013-09-14  7:10                   ` Kakadu
2013-09-14 11:37                     ` Jon Harrop
2013-09-15  8:32                       ` Kakadu
2013-09-14 23:51                   ` Francois¡¡Charles Matthieu¡¡Berenger
2013-09-11 22:17           ` [Caml-list] " Richard W.M. Jones
2013-09-12 13:49             ` [Caml-list] " Jon Harrop
2013-09-12 13:58               ` Richard W.M. Jones
2013-09-11  9:49     ` David MENTRE [this message]
2013-09-11 10:14       ` Kakadu
2013-09-11 15:21         ` David MENTRE
2013-09-12  1:31           ` Francois Berenger
2013-09-11 18:43         ` Adrien Nader
2013-09-11 18:36       ` Adrien Nader
2013-09-11 19:34         ` [Caml-list] " Gour
2013-09-11 19:45           ` Adrien Nader
2013-09-11 22:06             ` [Caml-list] " Jacques Garrigue
2013-09-12  3:25         ` Ivan Gotovchits
2013-09-12  6:41         ` Adrien Nader
2013-09-12 11:49           ` Gerd Stolpmann
2013-09-11 19:17       ` [Caml-list] " Gour
2013-09-11 22:03       ` [Caml-list] " Jacques Garrigue
2013-09-12  8:16         ` Alain Frisch
2013-09-11 12:26     ` Jon Harrop
2013-09-11 18:48       ` Adrien Nader
2013-09-11 13:22     ` Paolo Donadeo
2013-09-11 13:33       ` Kakadu
2013-09-11 14:09         ` Paolo Donadeo
2013-09-11 19:36           ` Jon Harrop
2013-09-11 19:45             ` [Caml-list] " Gour
2013-09-12 12:55               ` [Caml-list] " Jon Harrop
2013-09-11 18:57       ` Adrien Nader
2013-09-11 19:01         ` Rudi Grinberg
2013-09-11 19:15           ` Adrien Nader
2013-09-11  8:10   ` [Caml-list] " Gour
2013-09-11  1:00 ` [Caml-list] " Francois Berenger
2013-09-11  5:07   ` rixed
2013-09-11  8:26     ` [Caml-list] " Gour
2013-09-11  9:23       ` rixed
2013-09-11 12:54         ` Leo White
2013-09-11 12:59           ` Gour
2013-09-11 19:06             ` Adrien Nader
2013-09-11  8:16   ` Gour
2013-09-11  9:00     ` Francois Berenger
2013-09-11 19:19       ` Gour
2013-11-17 20:12       ` [Caml-list] " Gour
2013-09-11  7:38 ` Gabriel Kerneis
2013-09-11  8:20   ` [Caml-list] " Gour
2013-09-11 11:42     ` Gerd Stolpmann
2013-09-18 11:42       ` [Caml-list] " Gour
2013-09-18 12:24         ` Gerd Stolpmann
2013-09-20  4:47           ` Gour
2013-09-19  8:11         ` Alain Frisch
2013-09-19  8:30           ` Daniel Bünzli
2013-09-19  8:47             ` Andreas Rossberg
2013-09-20  4:51           ` Gour
2013-09-20 12:04             ` Gerd Stolpmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAC3Lx=b6Ty-a=Su-cw6PWA9ad0=p6H=McfuC4a8d_MeSHwsb1Q@mail.gmail.com' \
    --to=dmentre@linux-france.org \
    --cc=adrien@notk.org \
    --cc=caml-list@inria.fr \
    --cc=p.donadeo@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).