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