caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Malcolm Matalka <mmatalka@gmail.com>
To: Chet Murthy <murthy.chet@gmail.com>
Cc: Francois Berenger <berenger@riken.jp>,  caml-list <caml-list@inria.fr>
Subject: Re: Problems to get larger user base ... (Re: [Caml-list] OCaml's variables)
Date: Thu, 30 May 2013 06:02:22 +0000	[thread overview]
Message-ID: <87a9ndovip.fsf@gmail.com> (raw)
In-Reply-To: <1804446.xtBoISCFl2@groupon> (Chet Murthy's message of "Wed, 29 May 2013 22:05:15 -0700")

No I'm not suggesting building on every machine.  I am suggesting using
a Build Server, such as Jenkins or Bamboo or Hydra, to build your system
and package it, then you can deploy it through another mechanism.

Opam generating RPMs (or packages for you) I believe is wrong because:

1 - There are a lot of options when it comes to building a package.
What should the init scripts look like?  Where should the various files
go?  What about configs, etc.  These are issues opam should not concern
it self with.  On top of that, there are already tools for building a
RPM packages from a directory structure, such as fpm.

2 - Which package systems should Opam support?  RPM, Deb?  I use Nix,
why don't you support me?  Some other guy uses something else, what
about him?  I would predict a lot of heated and ultimately fruitless ML
discussions about people wanting their package support in a particular way.

3 - *Maybe* Opam should support exporting the closure of a package to an
external directory structure, then you can package it in any way you
want.

However, IME, and someone with more knowledge in Ocaml please correct
me, if you are deploying to production on a lot of machines I don't
really see why you would want to install Ocaml libraries to those
machines.  Ocaml libraries are statically linked so copying the produced
binary should be sufficient.  This is how I deploy Ocaml apps to the
clusters I have worked on, with success.

Perhaps I am missing something?

If you want a 'deploy' command to be added to Opam that takes a
configuration and pushes builds to machines, I am vehemently opposed to
that.  If you want a mechanism for exporting a package closure someplace
else that you can package, I am less opposed to that.  But I don't
develop Opam so my opinion doesn't really matter :)

/M

Chet Murthy <murthy.chet@gmail.com> writes:

> I'm glad we're having this discussion.
>
> On Thursday, May 30, 2013 06:52:25 AM Malcolm Matalka wrote:
>> I think out would be wrong for opam to try to solve this problem.  There
>> are already many tools available for deploying (Ansible, Puppet, Chef,
>> Fabric, Capistrano).  Such a later can be build on top of opam of need be.
>
> I think this is incorrect.  Let me explain.
>
> (1) when we look at deploying complex collections of code/libs/data
> onto multiple machines, usually we assume that the code has already
> been built.
>
> (2) but let's first dispatch the case where the code has -not- been
> built.  In such a case, I presume you're proposing that the code be
> built on each machine, yes?
>
>   (a) this drastically increases the CPU required to perform upgrades
>   and deploys
>
>   (b) but far, far, far more importantly, it means that on each
>   machine, a nontrivially complex script runs that builds the actual
>   installed binaries.  If that script contains -any- nondeterminism or
>   environmental sensitivity, it could produce different results on
>   different machines.  The technical term is "version skew".
>
> In scale-out systems, this sort of "skew" is absolutely fatal, because
> it means that machines/nodes are not a priori interchangeable.  And
> all of fast-fail fault-tolerance depends on nodes being
> interchangeable.
>
> (3) But let's say that what you really mean is that we should use
> tools like puppet/chef/capistrano to copy collections of
> binaries/libs/data to target machines and install them.  These
> scripts/recipes are written by some person.  You could have equally
> well suggested that that person build Debian packages (or RPMs) of
> each OPAM package, writing out all the descriptions and manifests.
>
> And manually specifying all dependencies and requiremeents.
>
> Either way, that person is doing a job that OPAM already does a lot
> of, and does quite well.  Gosh, wouldn't it be nice if OPAM could
> generate those RPMs?  Well, it's a little more complicated than that,
> but really, not much more.  The complexity comes in that you -might-
> (I'm not saying I have this part figured out yet) want ways to
> -generalize- (say) the camlp5 package so that it could be installed on
> many different base OPAM installations.
>
> But setting aside that nice-to-have, imagine that OPAM knew how to
> generate RPMs from each package it installed, and from the ocaml+opam
> base itself.  You combine those, and you can:
>
>   (i) install ocaml, opam, and a bunch of packages
>
>   (ii) push a button, and out come a pile of RPMs, along with
>   dependencies amongst them (and hopefully on the relevant
>   environmental RPMs (e.g., libpcre-dev for pcre-ocaml, etc) so that
>   you can just stuff those RPMs into a YUM repo, go to a second box,
>   and say
>
>     "yum install opam ocaml pcre-ocaml"
>
>   and get everything slurped down and installed, just as if OPAM had
>   installed it all, package-by-package.
>
> --chet--
>
> P.S. And this doesn't even get into the unsuitability of chef/puppet
> for managing software package installation.  There's a reason that no
> distro uses such schemes to install the large and complex sets of
> packages needed to run amodern Linux box.  And why there is no Linux
> version of Microsorft's "DLL Hell".  Linux distros by and large (and
> esp Debian and Ubuntu) have worked hard to make package installation
> foolproof -- and chef/puppet etc are anything but.

  parent reply	other threads:[~2013-05-30  6:02 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-23 23:53 [Caml-list] OCaml's variables oliver
2013-05-24  9:01 ` Arnaud Spiwack
2013-05-24 23:30   ` oliver
2013-05-24 23:53     ` Siraaj Khandkar
2013-05-25  0:40       ` oliver
2013-05-25  5:14         ` Wojciech Meyer
2013-05-25 11:04           ` oliver
2013-05-25 11:49             ` Gabriel Scherer
2013-05-25 12:04               ` oliver
2013-05-25 12:30                 ` David Allsopp
2013-05-25 22:42                   ` oliver
2013-05-25 23:24                     ` Lukasz Stafiniak
2013-05-25 22:57               ` oliver
2013-05-25 16:53     ` Kristopher Micinski
2013-05-25 22:44       ` oliver
2013-05-26 15:00 ` oliver
2013-05-26 18:38   ` Malcolm Matalka
2013-05-26 21:49     ` Problems to get larger user base ... (Re: [Caml-list] OCaml's variables) Oliver Bandel
2013-05-27  7:40       ` Mr. Herr
2013-05-27  8:37         ` Fabrice Le Fessant
2013-05-27 20:21           ` Mr. Herr
2013-05-27 20:36             ` Török Edwin
2013-05-27 21:10               ` Mr. Herr
2013-05-28  1:15                 ` Francois Berenger
2013-05-28 18:32                   ` Mr. Herr
2013-05-28 18:39                     ` Malcolm Matalka
2013-05-28 18:50                     ` Anil Madhavapeddy
2013-05-28 19:24                       ` Mr. Herr
2013-05-28 22:00                     ` Paolo Donadeo
2013-05-28 22:17                       ` Mr. Herr
2013-05-28 22:43                         ` Paolo Donadeo
2013-05-29 20:48                           ` Mr. Herr
2013-05-29 21:11                             ` Malcolm Matalka
2013-05-29 22:02                               ` Mr. Herr
2013-05-29 22:10                                 ` Malcolm Matalka
2013-05-30  0:51                                 ` Francois Berenger
2013-05-30  0:45                               ` Francois Berenger
2013-05-30  0:57                                 ` Chet Murthy
2013-05-30  1:09                                   ` Francois Berenger
2013-05-30  4:52                                   ` Malcolm Matalka
2013-05-30  5:04                                     ` Francois Berenger
2013-05-30  5:05                                     ` Chet Murthy
2013-05-30  5:11                                       ` Francois Berenger
2013-05-30  6:02                                       ` Malcolm Matalka [this message]
2013-05-30  6:36                                         ` Francois Berenger
2013-05-30  6:47                                           ` Malcolm Matalka
2013-05-30 22:41                                         ` Chet Murthy
2013-05-31  5:27                                           ` Malcolm Matalka
2013-05-31 13:32                                         ` Mike Lin
2013-06-03  1:15                                           ` Francois Berenger
2013-05-30 13:49                                     ` oliver
     [not found]                                   ` <20130530.091844.2217058886454447597.Christophe.Troestler@umons.ac.be>
2013-05-30  7:23                                     ` [Caml-list] Re: Problems to get larger user base Mihamina Rakotomandimby
2013-05-30  7:51                                   ` OPAM binary packages (was Re: Problems to get larger user base ... (Re: [Caml-list] OCaml's variables)) Thomas Gazagnaire
2013-05-27  8:53         ` Problems to get larger user base ... (Re: [Caml-list] OCaml's variables) Erik de Castro Lopo
2013-05-27 12:38           ` Mr. Herr
2013-05-27 12:56             ` Paolo Donadeo
2013-05-27 20:35               ` Mr. Herr
2013-05-27 20:57                 ` Paolo Donadeo
2013-05-28  1:17             ` Francois Berenger
2013-05-28  2:44               ` oliver
2013-05-28  3:40                 ` Francois Berenger
2013-05-28  4:05                   ` Norman Hardy
2013-05-28 12:51                     ` oliver
2013-05-28  4:08                   ` Norman Hardy
2013-05-28 12:36                   ` oliver
2013-05-29  6:12                     ` Mihamina Rakotomandimby
2013-05-29  7:31                       ` Fabrice Le Fessant
2013-05-29  2:39                   ` Jeff Meister
2013-05-29  2:51                     ` Francois Berenger
2013-05-29  2:57                       ` Jeff Meister
2013-05-29  7:50                         ` Török Edwin
2013-05-29  3:06                     ` oliver
2013-05-28 18:51               ` Mr. Herr
2013-05-28 19:06                 ` Anthony Tavener
2013-05-28 19:47                   ` Mr. Herr
2013-05-29  2:25                 ` Francois Berenger
2013-05-28  4:20             ` Erik de Castro Lopo
2013-05-28 18:59               ` Mr. Herr
2013-05-29  3:08                 ` Erik de Castro Lopo

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=87a9ndovip.fsf@gmail.com \
    --to=mmatalka@gmail.com \
    --cc=berenger@riken.jp \
    --cc=caml-list@inria.fr \
    --cc=murthy.chet@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).