🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fa.caml
Article #33

Re: Problems to get larger user base ... (Re: [Caml-list] OCaml's variables)

#33
From: Mike Lin
Date: Fri, 31 May 2013 13:33
145 lines
10914 bytes
It sure would be nice if OPAM happened to provide install-able OCaml
binaries, but as real production systems are an amalgam of many different
moving parts, I think it would solve only one small part of a larger
problem. I think an increasingly popular solution - which is taking
Malcom's idea to its extreme logical conclusion - is to deploy virtual
machine images. In my company, for example, we build such images frequently
as part of continuous integration and, during a deploy, just slowly cycle
thousands of cloud instances over to a new image. LXC (chroot on steroids)
is another popular way to instantiate this strategy with less overhead, and
we've also experimented with CDE (http://www.pgbovine.net/cde.html).
I understand Facebook somehow manages to compile one ginormous binary,
though:
http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/


On Wed, May 29, 2013 at 11:02 PM, Malcolm Matalka <mmatalka@gmail.com>wrote:

> 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.
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>

-- 
Caml-list mailing list.  Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs
Technical Details
Message-ID: <fa.lhlLHU+SoGbHLPRibRpFt4MXCO4@ifi.uio.no>
Path: arc1-ca.pugleaf.net!bp1ni28784pbd.1!nntp.google.com!news.glorb.com!uio.no!nntp.uio.no!.POSTED!not-for-mail
References: <fa.ygUreM916SCi2HRnlvgczHSDQLY@ifi.uio.no> <fa.r2XClcgBKcljkqbd4Zm2XARLoWs@ifi.uio.no> <fa.7WBi5ppDnLEffRTywR0VksKH4TA@ifi.uio.no> <fa.dWQhXC5IgbjFHmCE0KHRlxx4o+4@ifi.uio.no> <fa.pekpxcTg2Wh+KXVtLFW4zzxYWLw@ifi.uio.no>

Show Full Headers
Complete Article Headers
X-Google-Thread: c0fe4b917e,943792163446c61a,start
X-Google-Attributes: gidc0fe4b917e,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: ENGLISH,ASCII-7-bit
X-Received: by 10.66.197.229 with SMTP id ix5mr2422934pac.23.1370007228481;
        Fri, 31 May 2013 06:33:48 -0700 (PDT)
Path: arc1-ca.pugleaf.net!bp1ni28784pbd.1!nntp.google.com!news.glorb.com!uio.no!nntp.uio.no!.POSTED!not-for-mail
From: Mike Lin <mlin@mlin.net>
Newsgroups: fa.caml
Subject: Re: Problems to get larger user base ... (Re: [Caml-list] OCaml's
 variables)
Date: Fri, 31 May 2013 13:33:47 UTC
Organization: Internet mailing list
Lines: 151
Sender: caml-list-request@inria.fr
Message-ID: <fa.lhlLHU+SoGbHLPRibRpFt4MXCO4@ifi.uio.no>
References: <fa.ygUreM916SCi2HRnlvgczHSDQLY@ifi.uio.no> <fa.r2XClcgBKcljkqbd4Zm2XARLoWs@ifi.uio.no> <fa.7WBi5ppDnLEffRTywR0VksKH4TA@ifi.uio.no> <fa.dWQhXC5IgbjFHmCE0KHRlxx4o+4@ifi.uio.no> <fa.pekpxcTg2Wh+KXVtLFW4zzxYWLw@ifi.uio.no>
NNTP-Posting-Host: mail-jess.uio.no
Mime-Version: 1.0
X-Trace: readme.uio.no 1370007227 9147 129.240.7.9 (31 May 2013 13:33:47 GMT)
X-Complaints-To: abuse@uio.no
NNTP-Posting-Date: Fri, 31 May 2013 13:33:47 +0000 (UTC)
To: caml-list <caml-list@inria.fr>
X-IronPort-AV: E=Sophos;i="4.87,779,1363129200"; 
   d="scan'208";a="19791601"
X-Original-To: caml-list@sympa.inria.fr
Delivered-To: caml-list@sympa.inria.fr
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApwAABSlqFHRVYC0m2dsb2JhbABagzmsRzKJNog7eAgWDgEBAQEBBgsLCRQogiMBAQQBbhALCwsNDSEhARIBBQEKEgYTCAoJh2ADCQYMnDaVHQMKiGSMRIEzgSELg1cDiSCIDoQqgWaBKYp0A4M7FimEVYFKPQ
X-IPAS-Result: ApwAABSlqFHRVYC0m2dsb2JhbABagzmsRzKJNog7eAgWDgEBAQEBBgsLCRQogiMBAQQBbhALCwsNDSEhARIBBQEKEgYTCAoJh2ADCQYMnDaVHQMKiGSMRIEzgSELg1cDiSCIDoQqgWaBKYp0A4M7FimEVYFKPQ
X-IronPort-AV: E=Sophos;i="4.87,779,1363129200"; 
   d="scan'208";a="16339012"
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20120113;
        h=mime-version:x-originating-ip:in-reply-to:references:from:date
         :message-id:subject:to:content-type:x-gm-message-state;
        bh=m+OufjorSVw6cof7hUdgFk/r+FY7S49Xb/fvmiCNiD8=;
        b=ewPZzFCoKMf/vfKnTCTov59wYEgEaQml3aGma3kvs8/uj9mHRZJsoYma0yoxs9OBwN
         ZDXGe0JKKNg90NEU5hpePV0USwHrmOd2cbMh2sfPkK6aQR+aCZUmqKPPg8QQdzqXHOcR
         2R3eVwGsy1qxmZjvvSLuclapbfNJWJ6KteV48foxXwG50gjbq6gv/ccxcYPHa0+451J5
         WC8kXwLwo1y1TiciFV0HO7ds5uMu1XNWqODciWQ9H0Rgd98i/p1J1IaL96AvnwphzybV
         eUqcA5qzpHaEiTnesmdDe67IGqEi5mYMjp0zF9E6YetKtc+GEuBXXrxA4FPCkEmSn2tL
         UVjw==
X-Received: by 10.58.22.74 with SMTP id b10mr5002474vef.47.1370007156553; Fri,
 31 May 2013 06:32:36 -0700 (PDT)
X-Originating-IP: [50.8.102.195]
In-Reply-To: <87a9ndovip.fsf@gmail.com>
X-Gm-Message-State: ALoCoQmLQGqjIVVmIFZ76P3jTIRnupVmQhaKE7wsMNnLtNoxc03HRVToWgkCTSSJQB2uVTmWlnjY
X-Validation-by: mlin@mlin.net
X-Sequence: 6858
X-no-archive: yes
List-Id: <caml-list.inria.fr>
List-Archive: <http://sympa.inria.fr/sympa/arc/caml-list>
List-Help: <mailto:sympa_inria@inria.fr?subject=help>
List-Owner: <mailto:caml-list-request@inria.fr>
List-Post: <mailto:caml-list@inria.fr>
List-Subscribe: <mailto:sympa_inria@inria.fr?subject=subscribe%20caml-list>
List-Unsubscribe: <mailto:sympa_inria@inria.fr?subject=unsubscribe%20caml-list>
X-FA-Processed: Removed HTML alternative
Original-Date: Fri, 31 May 2013 06:32:15 -0700
Original-Message-Id: <CADxsieakCmXqm0TezT5PuCFL1G4Z__QZ79c4UPjhA_A5v0Zr4A@mail.gmail.com>
Original-References: <20130523235355.GI6510@siouxsie> <1629005.lH05byJ9SH@groupon>
 <CAKziXDVp3yPosqe5bwm7uXRxsahvapPOxyfRVnHCceD9RrgS2w@mail.gmail.com>
 <1804446.xtBoISCFl2@groupon> <87a9ndovip.fsf@gmail.com>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit