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

Reply via email to