From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id AAE067FE44 for ; Fri, 8 Jul 2016 19:41:21 +0200 (CEST) IronPort-PHdr: 9a23:glveuxefP5/q3R+SmCzfneSVlGMj4u6mDksu8pMizoh2WeGdxc68Zx7h7PlgxGXEQZ/co6odzbGH6+a7ASdZucfJmUtBWaQEbwUCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYsExnyfTB4Ov7yUtaLyZ/mj6bpo9aKO1QArQH+SIs6FA+xowTVu5teqqpZAYF19CH0pGBVcf9d32JiKAHbtR/94sCt4MwrqHwI6Lpyv/JHBO/xdqE8CLhZFygOMmYv5cStuwOJBV+E734YF2EXiQZgAg7f7Ri8UI2n4QXgse8o9CSTO4XKTbcxQS+l6e8/RBLhjjwHOiQl8GbSktd3iopUpRugo1p0xIuCM9LdD+Z3Yq6IJYBSfmFGRMsEDyE= Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=deansherthompson@gmail.com; spf=Pass smtp.mailfrom=deansherthompson@gmail.com; spf=None smtp.helo=postmaster@mail-qt0-f170.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of deansherthompson@gmail.com) identity=pra; client-ip=209.85.216.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="deansherthompson@gmail.com"; x-sender="deansherthompson@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of deansherthompson@gmail.com designates 209.85.216.170 as permitted sender) identity=mailfrom; client-ip=209.85.216.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="deansherthompson@gmail.com"; x-sender="deansherthompson@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-qt0-f170.google.com) identity=helo; client-ip=209.85.216.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="deansherthompson@gmail.com"; x-sender="postmaster@mail-qt0-f170.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BmAACM5H9XhqrYVdFRCoUQpg+HTYYzhn+CYYM3AoEoOxEBAQEBAQEBAREBAQEICwsJISQLgjKCGwEEARIRHQEbEQ0DAQsGBQs3AgIjEQEFARwGJwcHh3MBAw8IoR+BMT4xizuBaoJaBYVvChknDVKDSQEBAQEBBQEBAQEBAQEBFwIGEIgPCIFKgQOEGYMpK4IvBY4EixCOT4k/DoVfjk8wgQ80gjqBc1KJMgEBAQ X-IPAS-Result: A0BmAACM5H9XhqrYVdFRCoUQpg+HTYYzhn+CYYM3AoEoOxEBAQEBAQEBAREBAQEICwsJISQLgjKCGwEEARIRHQEbEQ0DAQsGBQs3AgIjEQEFARwGJwcHh3MBAw8IoR+BMT4xizuBaoJaBYVvChknDVKDSQEBAQEBBQEBAQEBAQEBFwIGEIgPCIFKgQOEGYMpK4IvBY4EixCOT4k/DoVfjk8wgQ80gjqBc1KJMgEBAQ X-IronPort-AV: E=Sophos;i="5.28,331,1464645600"; d="scan'208,217";a="226117880" Received: from mail-qt0-f170.google.com ([209.85.216.170]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 08 Jul 2016 19:41:20 +0200 Received: by mail-qt0-f170.google.com with SMTP id w59so24630973qtd.3 for ; Fri, 08 Jul 2016 10:41:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:message-id:mime-version:subject:date:references:to:in-reply-to; bh=8DodZcCybSH1jfrKNOjYqjG/9APFkPh0fFkCTK5IloQ=; b=0aZkqcixYrMhLzqKF9jExe8diqRIwRrDv5HiTBdYu6ISMiz8jNa+r5KyvFH3+7N6uk l+jUhX1RqwLy1A5ZHRzhTWd0FsAYeTYNfbObs/8s2fxR3FDQ7ZTL2jmmpWOiFNwyCx8U NlohZVJgtWojAxISsIZlMK+K5ikN/WcUpZVxJ1YyBdS0VHl90U0HuAW+bUB9yE4gJFJ/ BskbazYkHzvPpz1by2X9F0adEfoJeIlwjhy5b2t7+8AlyXB8LQJ3IgiJjkLYcs0ttuI6 y0fWjBXRVLhkU5RxUrj2Qn4sw1bNsF0zyapEM0Fvk5hEfQOstXLAoJ2gcZcXNQyThIyU eTqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:message-id:mime-version:subject:date :references:to:in-reply-to; bh=8DodZcCybSH1jfrKNOjYqjG/9APFkPh0fFkCTK5IloQ=; b=jYHNnieTdD3+aXZRKUpqBy/uVGQJUH15ahiK6CCIJZiAaMfs7aHIXi9SLYkzsTVg4t BgM4ZToLJCa75moBASUYsNAj/VExbVYxZfEKYPoRklXvs5rkEuaVbJuc94vVKj+18VPG G56TPEm2T+tseMianAcVo+mnsFAgVcsSIry04n1MHax1pO8HSKcHy/WBzjFi/3RSn4Xk iQvJI9fcbF/mWIFsAd+a3FAjTP2geaSqfS8ussajEBkd8yYPZ+WKKYfqyd5o+9dHDKPc SnC8DgMIHdQXiYiudMkE+G7PkgkRJ7if6ZU6wkDV9SVINS1zjQkYCDVNMj8/m9wDMpw3 kGxA== X-Gm-Message-State: ALyK8tIgyz+qGx1GUD0d8oVf2D9QADtwPQRMOdU2JSBVe9ukjA3/osw98jkqYiqdI4hYSA== X-Received: by 10.200.40.56 with SMTP id 53mr10821177qtq.93.1467999679000; Fri, 08 Jul 2016 10:41:19 -0700 (PDT) Received: from [192.168.1.85] ([208.103.122.250]) by smtp.gmail.com with ESMTPSA id g188sm2424401qkf.7.2016.07.08.10.41.17 for (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 08 Jul 2016 10:41:18 -0700 (PDT) From: Dean Thompson Content-Type: multipart/alternative; boundary="Apple-Mail=_9EA59391-EA29-4FCC-BD6A-BD0A6D883540" Message-Id: Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Date: Fri, 8 Jul 2016 13:41:17 -0400 References: <20160704144512.GB2458@Razor> <577FDAE1.7080207@gmail.com> To: "caml-list@inria.fr" In-Reply-To: X-Mailer: Apple Mail (2.3124) Subject: Re: [Caml-list] how to encourage adoption of OCaml? --Apple-Mail=_9EA59391-EA29-4FCC-BD6A-BD0A6D883540 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Great comments from lots of people. I am in the mobile app business, so I find myself thinking about this as a = conversion funnel: (1) Some number of people will hear enticing things about OCaml. So Gabriel= Scherer=E2=80=99s point is important: > The best thing I can think of is to communicate more and better, talk abo= ut the cool world that is being done in the OCaml communities, and importan= tly talking about it outside it. Supporting software projects that have a p= otential for impact outside the OCaml community is also key -- Coq, MLdonke= y, Coccinelle, Flow, the SLAM static verifier toolkit, just to name a few. (2) Once someone realizes OCaml is enticing, they will poke around the web = to see what the community looks like. We want to maximize the percentage wh= o decide the community looks solid enough for them to invest effort in lear= ning OCaml. So Duane Johnson=E2=80=99s point, for example, is important: > In summary, all of the signals that I usually depend on to evaluate the c= ommunity around a technology are either weak or give me the impression of = =E2=80=9Cold and barely stable".=20 (3) Once someone decides the community is solid enough for their purposes, = they begin learning. We want to maximize the percentage who have sufficient= positive experiences that they decide to persevere. So, for example, Gabri= el Scherer makes additional important points: > Regarding usability, I think the tooling ecosystem is too complex today. = If I wanted to bootstrap a beginner to do stuff I would have to tell them a= bout the OCaml compiler tools (ocamlc, ocamlopt), ocamlfind, a build system= (make or ocamlbuild for example), oasis, Merlin, opam, and get them to lea= rn either Vim or Emacs. (4) Further along in the learning process, Hendrik Boom=E2=80=99s points on= an earlier thread (for example) are important: > That's the hurdle I face whenever I program in OCaml =E2=80=94 figuring o= ut which libraries are usable, and which are actually documented. Not docum= ented in the sense that someone has written an API guide and a tutorial, bu= t documented in the sense that it is actually possible to find them. >=20 > There are often multiple packages to accomplish a single task. You don't = know which one to use. On the more encouraging side, we also have this from Gabriel Scherer on the= earlier thread: > a large part of the problem is rather of the "death by thousand cuts" kin= d: small things that add up to create an overall unpleasant experience. Thi= s portion of the general problem is both too large for a single person to f= ix (no one person can guess all use-cases), it is easily amenable to crowd-= fixing: reporting and/or fixing issues one at a time as you discover them. Is it possible we should be organizing ourselves to map the main flows of t= he beginner experience, identify the most severe cuts along those flows, an= d systematically address them? We could start with cheap solutions, like FA= Qs, and work our way to engineering fixes. Dean= --Apple-Mail=_9EA59391-EA29-4FCC-BD6A-BD0A6D883540 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8
Gr= eat comments from lots of people.

I am in the mobile app business, so I find myself thinking= about this as a conversion funnel:

(1) Some number of people will hear enticing things abou= t OCaml. So Gabriel Scherer=E2=80=99s point is important:

The best thing I can think of is to communicate more a= nd better, talk about the cool world that is being done in the OCaml commun= ities, and importantly talking about it outside it. Supporting software pro= jects that have a potential for impact outside the OCaml community is also = key -- Coq, MLdonkey, Coccinelle, Flow, the SLAM static verifier toolkit, j= ust to name a few.

<= /blockquote>(2) Once someone realizes OCaml is enticing, they will poke aro= und the web to see what the community looks like. We want to maximize the p= ercentage who decide the community looks solid enough for them to invest ef= fort in learning OCaml. So Duane Johnson=E2=80=99s point, for example, is i= mportant:

In summary, all of the signals that I usually depend o= n to evaluate the community around a technology are either weak or giv= e me the impression of =E2=80=9Cold and barely stable". 

(3) Once someone decides the community is solid enough for their= purposes, they begin learning. We want to maximize the percentage who have= sufficient positive experiences that they decide to persevere. So, for exa= mple, Gabriel Scherer makes additional important points:

Regarding usability, I think the tooling ecosystem is too complex tod= ay. If I wanted to bootstrap a beginner to do stuff I would have to te= ll them about the OCaml compiler tools (ocamlc, ocamlopt), ocamlfind, a bui= ld system (make or ocamlbuild for example), oasis, Merlin, opam, and g= et them to learn either Vim or Emacs.

(4) Further alon= g in the learning process, Hendrik Boom=E2=80=99s points on an earlier thre= ad (for example) are important:

<= /div>
That'= s the hurdle I face whenever I program in OCaml =E2=80=94 figuring out= which libraries are usable, and which are actually documented. Not do= cumented in the sense that someone has written an API guide and a tuto= rial, but documented in the sense that it is actually possible to find= them.

There are = often multiple packages to accomplish a single task. You don't know wh= ich one to use.

On the more e= ncouraging side, we also have this from Gabriel Scherer on the earlier thre= ad:

a large part of the problem is rather of= the "death by thousand cuts" kind: small things that add up to create= an overall unpleasant experience. This portion of the general problem= is both too large for a single person to fix (no one person can guess= all use-cases), it is easily amenable to crowd-fixing: reporting and/= or fixing issues one at a time as you discover them.

Is it possible we should be organizi= ng ourselves to map the main flows of the beginner experience, identify the= most severe cuts along those flows, and systematically address them? We co= uld start with cheap solutions, like FAQs, and work our way to engineering = fixes.

Dean
= = --Apple-Mail=_9EA59391-EA29-4FCC-BD6A-BD0A6D883540--