From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id pBGHTmcQ013399 for ; Fri, 16 Dec 2011 18:29:48 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqUAAHN/607RVaC2kGdsb2JhbABDhQymQAgiAQEBAQkJDQcUBCGBcgEBAQQSAg8VCAEbHAIDDAYFCw0CAgUWCwICCQMCAQIBEREBBQEcEwgBARAHB6J+CosdSIJrhHU/iHECBQuBJIc7ggSBFgSINIxChU6BNIZ1PYQW X-IronPort-AV: E=Sophos;i="4.71,364,1320620400"; d="scan'208";a="135778947" Received: from mail-gy0-f182.google.com ([209.85.160.182]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 16 Dec 2011 18:29:43 +0100 Received: by ghrr19 with SMTP id r19so3594832ghr.27 for ; Fri, 16 Dec 2011 09:29:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=MvL4UQ7JciiRbNUmQfo994u93Rh6Gqo4PUstD5HcCco=; b=c79C5el0cvX9dguTibhLlKTxiEAtpVm5jT1yujpriN7nenxF2UwG16twR06GDeCGoa w72VMIuYgUnltwOAlQGIMHgFIeCfwbS4wg69kFFUp7ZNL4hNassCH3k307eAO0u59GBs GKEahlEUiTKNOpTiQUAToIMoz3mcKu5lmS/Yk= Received: by 10.50.178.68 with SMTP id cw4mr9609716igc.31.1324056582266; Fri, 16 Dec 2011 09:29:42 -0800 (PST) Received: from [192.168.1.65] (99-121-78-10.lightspeed.lnngmi.sbcglobal.net. [99.121.78.10]) by mx.google.com with ESMTPS id j3sm34736366ibj.1.2011.12.16.09.29.39 (version=SSLv3 cipher=OTHER); Fri, 16 Dec 2011 09:29:40 -0800 (PST) Message-ID: <4EEB7FFF.1090708@gmail.com> Date: Fri, 16 Dec 2011 12:29:35 -0500 From: Edgar Friendly User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 To: caml-list@inria.fr References: <4EDE33A0.6070004@gmail.com> <1323760512.9833.9.camel@samsung> <4EE711FB.5020602@frisch.fr> <4EE83C26.7090108@frisch.fr> <1323867161.7750.27.camel@samsung> <4EE8DC93.1000806@metaprl.org> <1323884194.7750.58.camel@samsung> <4EEB3BF7.30401@frisch.fr> In-Reply-To: <4EEB3BF7.30401@frisch.fr> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Caml-list] Some comments on recent discussions On 12/16/2011 07:39 AM, Alain Frisch wrote: > We don't necessarily need a full-blown packaging system, with dependency > tracking, versioning, automatic download, etc. At first, maybe. In the long run, any friction in the system of inter-package dependencies grinds away at the composability of OCaml packages from different authors into a single solution. This is the reason I support oasis and wrote odb, and this is the reason that everyone out there has their own stdlib. Barriers to having package dependencies hinder the reuse of other people's code except in simplistic copy-and-paste of source code fashion. This seems to be something that the haskell community has gotten right[1]. Whenever I run into a haskell package, it's common for it to have 5 or more dependencies on other packages, and those packages to have deps on others, etc. And this *isn't* a problem for them. I surmise that the haskell community has "greased" the process of dependencies sufficiently so that there is almost no friction in external dependencies. In our community, external dependencies are painful - the existence of even one external dependency in batteries has been problematic for our users[2]. Furthermore, many people avoid using batteries because they don't want external dependencies for their own project. Why? Because dependencies are a pain. To a great extent, we're stuck doing manual dependency resolution not just inside a project (mostly solved by ocamlbuild), but also between projects (mostly solved by findlib). And because of the friction here, we're stuck in a community of tiny dependency trees and lots of re-inventing the wheel. What's the next step? Contribute to oasis with patches? Oasis-ify your code and upload to oasis-db? Fix GODI/mingw? Build a proper dependency analysis system that can determine package dependencies from special comments in source files and compile them correctly *without* separating that metadata from the source file? Something else? Find your own pain-point in the current system and *fix* it. Maybe a simple, crude, just barely good enough fix. But share that fix with the community, and we all benefit, and can push forward a campaign to remove the pain of external dependencies from OCaml. E. [1] I'm speaking as an observer only, having no real experience with haskell [2] Batteries has removed its last required external dependency as of 2.0beta, but it has had internal a package that should be an external dep since before 1.0, so is still imperfect.