flux changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | Grab OCaml 3.10.2 from http://caml.inria.fr/ocaml/release.html (featuring new camlp4 and more!)
bohanlon has quit [Remote closed the connection]
jeddhaberstro has joined #ocaml
middayc has quit []
bohanlon has joined #ocaml
redocdam has quit []
Axioplase is now known as Axioplase_
bluestorm has joined #ocaml
mbishop has quit [Nick collision from services.]
mbishop_ is now known as mbishop
<landonf> Wow, postgresql-ocaml returns all values as strings :(
mikezackles has quit [Connection timed out]
mwc has quit [Remote closed the connection]
mikezackles has joined #ocaml
Associat0r has quit []
bluestorm has quit [Remote closed the connection]
<vixey> hey
<vixey> is Ocaml an advanced language?
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 54 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
Proteus has quit [Read error: 104 (Connection reset by peer)]
Proteus_ has joined #ocaml
<Chile`> vixey: define advanced?
jeddhaberstro has quit []
<thelema> vixey: yes, it's an advanced language.
hkBst has quit [Read error: 104 (Connection reset by peer)]
hkBst has joined #ocaml
Philonous1 has joined #ocaml
Proteus_ has quit [Read error: 104 (Connection reset by peer)]
Proteus_ has joined #ocaml
Philonous has quit [Read error: 110 (Connection timed out)]
seafood has joined #ocaml
seafood has quit [Read error: 54 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Client Quit]
ygrek has joined #ocaml
netx303 has joined #ocaml
netx has quit [Read error: 110 (Connection timed out)]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 54 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Connection reset by peer]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
GustNG has joined #ocaml
Yoric[DT] has joined #ocaml
asmanur has joined #ocaml
adonis28850 has joined #ocaml
mishok13 has joined #ocaml
Amorphous has quit [Read error: 110 (Connection timed out)]
Amorphous has joined #ocaml
Associat0r has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 54 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Client Quit]
guillem has joined #ocaml
<gildor> ertai: ping
seafood has joined #ocaml
rwmjones has joined #ocaml
seafood has quit [Client Quit]
seafood has joined #ocaml
seafood_ has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood_ has quit [Client Quit]
ygrek has quit [Remote closed the connection]
ygrek has joined #ocaml
OChameau has joined #ocaml
seafood has joined #ocaml
seafood has quit [Connection reset by peer]
seafood has joined #ocaml
asmanur` has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
filp has joined #ocaml
asmanur` has quit [Remote closed the connection]
asmanur has quit [Read error: 110 (Connection timed out)]
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
seafood has quit []
asmanur has joined #ocaml
asmanur has quit [Remote closed the connection]
asmanur has joined #ocaml
Mr_Awesome has quit ["aunt jemima is the devil!"]
Associat0r has quit []
seafood has joined #ocaml
Philonous1 is now known as Philonous
guillem has quit [Remote closed the connection]
adonis28850 has quit [Remote closed the connection]
vixey has quit [Remote closed the connection]
Mr_Awesome has joined #ocaml
asmanur has quit [Remote closed the connection]
asmanur has joined #ocaml
Mr_Awesome has quit [Remote closed the connection]
redocdam has joined #ocaml
guillem has joined #ocaml
seafood has quit []
tomh has joined #ocaml
Jedai has joined #ocaml
Associat0r has joined #ocaml
marmotine has joined #ocaml
jeremiah has joined #ocaml
gdmfsob has joined #ocaml
hoggarth has joined #ocaml
mishok13 has quit [Read error: 110 (Connection timed out)]
asmanur has quit [Remote closed the connection]
kelaouch1 has joined #ocaml
kelaouchi has quit [Read error: 104 (Connection reset by peer)]
hoggarth has quit []
gdmfsob has quit [Read error: 54 (Connection reset by peer)]
asmanur has joined #ocaml
r0bby has quit [Nick collision from services.]
r0bby has joined #ocaml
<Yoric[DT]> How would you tell your boss to please Read The Fine Manual regarding svn rather than complaining at every single step of the road that "it doesn't work"?
<Smerdyakov> I would commiserate with him, since SVN sucks.
<Smerdyakov> Also, I would avoid having a boss.
<Smerdyakov> Any more questions?
<Yoric[DT]> Well, since he's attempting to put his name on my paper and wasting my time because "it doesn't work", I tend not to commiserate that much...
<Smerdyakov> Which paper?
<Yoric[DT]> A paper I'm currently writing on static analysis.
<Yoric[DT]> Of C.
<Yoric[DT]> Types and effects + dependent types.
* Smerdyakov snoozes. ;)
tomh has quit ["http://www.mibbit.com ajax IRC Client"]
pango_ has quit [Remote closed the connection]
Axioplase_ is now known as Axioplase
filp has quit ["Bye"]
pango_ has joined #ocaml
<fremo> Yoric[DT]:
<fremo> I would say 'please read the fine manuel'...
<fremo> manual
<fremo> it may work at the end :)
mfp has quit ["Leaving"]
mfp has joined #ocaml
<Yoric[DT]> who knows...
gaja has quit ["Lost terminal"]
Kopophex has joined #ocaml
Linktim has joined #ocaml
gaja has joined #ocaml
ChristopheT has joined #ocaml
Linktim has quit [Read error: 110 (Connection timed out)]
guillem has quit [Remote closed the connection]
pec1 has joined #ocaml
Linktim has joined #ocaml
asmanur has quit [Read error: 110 (Connection timed out)]
asmanur has joined #ocaml
lispy has joined #ocaml
<lispy> Is there a technical reason why you can only pattern match on one parameter per line in a function definition? (per equation)
<Yoric[DT]> What do you mean?
<lispy> Well, imagine, foo (a::as) (b::bs) = ... (it's been a while since I worked with ocaml syntax, so pardon me if that's only pseudo code)
<lispy> IIRC, that's not legal in Ocaml
<lispy> But, instead you need to do something like, foo ((a::as), (b::bs)) = ...
<lispy> I was wondering if there was a technical reason
pec1 has left #ocaml []
<lispy> Yoric[DT]: does that make more sense?
<Yoric[DT]> Technically, I'm pretty sure you can write
<Yoric[DT]> let foo (a::as) (b::bs) = stuff...
<Yoric[DT]> It's just that you can't continue the function definition afterwards :)
<Yoric[DT]> But yeah, I see your point.
<Yoric[DT]> If I recall correctly, allowing
<Yoric[DT]> the problem is when you extend this to [match...with...]
<Yoric[DT]> i.e.
<Yoric[DT]> In [match x y with a::as b::bs -> ... ]
<Yoric[DT]> should [x y] be treated as two different values or the application of [y] to [x]?
<Yoric[DT]> In case it's not clear, I'm using brackets to differentiate text from source code, nothing to do with lists.
<lispy> Hmm...so the only language with similar syntax I'm used to is Haskell, (where BTW the pattern matching works the way I was asking about). In that language, [match x y with ...] would mean the application of x to y.
<lispy> But, I guess in Ocaml match is different?
<lispy> It seems to me that foo (a::as) (b::bs) = ..., could be desugared to nested [match ... with] statements
<lispy> But, then maybe I'm wrong?
<lispy> Two places that might be difficult that I can think of off the top of my head are type checking and possibly something about eta-expansion
<lispy> But, this is where my knowledge of Ocaml is too little. I don't know much about the type inference used
<lispy> It's based on H-M but that's all I know
<Yoric[DT]> No, in OCaml, it would mean the same thing as in Haskell.
Linktim_ has joined #ocaml
<Yoric[DT]> I don't see any difficulty wrt type inference.
<Yoric[DT]> There's just the risk of syntactic ambiguity.
<Yoric[DT]> Technically, there's an AST construction for doing what you say.
<Yoric[DT]> But there's no concrete syntax for that, afaik.
asmanur has quit [Remote closed the connection]
Linktim has quit [Connection timed out]
Linktim has joined #ocaml
Linktim_ has quit [Read error: 110 (Connection timed out)]
OChameau has quit ["Leaving"]
Christop` has joined #ocaml
Christop` has quit [Remote closed the connection]
ChristopheT has quit [Read error: 113 (No route to host)]
vixey has joined #ocaml
<mattam> let foo (x :: xs) (y :: ys) = x+ y;; is valid. What you can't do is write a second [foo [] []] clause for example.
<Smerdyakov> So as long it's real and not an example, it will work? ;)
<mattam> You will always get non-exhaustive warnings doing that too, so that's probably considered bad-style by most standards.
ido has quit [Remote closed the connection]
ido has joined #ocaml
ido has quit [Remote closed the connection]
ido has joined #ocaml
ra has joined #ocaml
Snark_ has joined #ocaml
ygrek has quit [Remote closed the connection]
ygrek has joined #ocaml
<ra> Hi! Anyone know if I can buy a print copy of Developing applications with Objective Caml ?
<Smerdyakov> Maybe you would be better off waiting for the first printing of Jason Hickey's book.
<landonf> Anyone looked at http://ocamljava.x9c.fr in any detail?
GustNG has quit [Read error: 104 (Connection reset by peer)]
ra has quit ["This computer has gone to sleep"]
mbishop has quit [Read error: 54 (Connection reset by peer)]
mbishop has joined #ocaml
Linktim_ has joined #ocaml
ygrek has quit [Remote closed the connection]
<flux> I think I browsed their website intensively :)
<flux> because it sounds sort of interesting, but I don't know what use I would have for it
<landonf> My interest is in access to better libraries
<landonf> Finding my work frustrated by lack of decent sqlite and postgresql libraries, for instance :(
<flux> what's wrong with the postgresql libraries?
<flux> I read about something that it returns everything as strings. well, I thought that's basically the standard for that..
<flux> and a neat solution for converting them into more useful types is something the libraries don't have
<landonf> It's the second part that's frustrating. (Although PostgreSQL can/will provide data in its native binary format).
<landonf> So it'd be nice if everything wasn't converted to a string, especially when processing sizable data sets.
<flux> but then again I understand using postgresql's native binary format can also be frustrating
<flux> atleast that was my impression when I last took a look at it
<flux> no reason why you couldn't access that level with postgresql-ocaml though
<landonf> As a general question any thoughts on type safety / conversions of query results in OCaml?
<flux> (but it will require looking at very low-level stuff; yes, perhaps this is something postgresql-ocaml could develope on)
sbok has quit [Read error: 113 (No route to host)]
<landonf> Returning polymorphic types means a lot of pattern matching. Another option might be type-specific accessors? I dunno.
<flux> at work I have one solution that converts tuples like (don't remember the exact syntax): select "a, b, c from bar where z=?" [0, Str "42"] (map3 (str @@ int @@ float) (fun (a, b, c) -> { a = a; b = b; c = c})
<flux> but making all that happen can be a bit work..
<flux> (I'm hoping to merge the selected-tuples list with the list describing the types in future)
<flux> alternative approach is using a relational algebra library
<flux> I personally think that's the way to go, but there isn't anything 100% complete stuff yet available, afaik
<flux> using relational algebra solves the issue of using smaller queries to build bigger ones, instead of always building from scratch
<Smerdyakov> landonf, http://laconic.sf.net/
<Smerdyakov> landonf, I'm working on a new version now. It's not OCaml; it's a new language that OCaml will never be able to beat for web app development.
Linktim has quit [Read error: 110 (Connection timed out)]
Linktim has joined #ocaml
tomh has joined #ocaml
Linktim_ has quit [Read error: 110 (Connection timed out)]
sbok has joined #ocaml
Linktim has quit ["Quitte"]
<mbishop> Smerdyakov: general purpose language, or web specific language?
<Smerdyakov> mbishop, sort of the latter, sort of not.
<vixey> all programs in it terminate though right?
<Smerdyakov> mbishop, it's definitely web specific.
<Smerdyakov> vixey, no.
<Smerdyakov> mbishop, but I plan to factor out that part and make it an extensible DSL.
<Smerdyakov> vixey, foreign functions might not terminate.
<vixey> ok
bluestorm has joined #ocaml
Snark_ has quit ["Ex-Chat"]
asmanur has joined #ocaml
asmanur has quit [Remote closed the connection]
asmanur has joined #ocaml
Jedai has quit [Read error: 104 (Connection reset by peer)]
Jedai has joined #ocaml
asmanur has quit [Remote closed the connection]
aeolist has joined #ocaml
<aeolist> oh hello everyone
<aeolist> the magic of online searches makes us communicate less
<aeolist> :(
<landonf> Also discovered ocamldbi, which looks decent.
<landonf> Hi
<landonf> sqlite DBI driver is for sqlite2 instead of sqlite3, though.
<vixey> what rules can you rely on in ocaml?
<vixey> for example, is a * b = b * a ?
<vixey> there are no rules
<aeolist> functors are hard on me
<vixey> what do you mean?
<aeolist> i mean, i still havent figured out how to use the Set module
<aeolist> the syntax escapes me
<landonf> At this point I'm about to get frustrated and give up
<aeolist> i did get the functors bit though... the need to make a module that the Set.Make functor will eat to spew out a wonderful set module of the type i want
<vixey> oh
<aeolist> afraid so
<aeolist> ah
<aeolist> the name after module has to start with a capital letter
<aeolist> enlightment
<aeolist> i really shouldnt be coding this late at night
<vixey> aeolist, module IntSet = Set.Make (struct type t = int;; let compare = compare;; end)
<aeolist> yeah
<aeolist> found taht bit
<aeolist> thank you :)
<aeolist> i was putting in module intSet
<aeolist> lol
Jedai has quit ["KVIrc 3.2.4 Anomalies http://www.kvirc.net/"]
<landonf> The lack of libraries is destroying my productivity, leaving me to wonder if sticking with OCaml is worth writing libraries myself, or if there's some hidden truth I'm missing about programming in OCaml and how you don't *need* libraries.
<landonf> Perhaps I don't need to be afraid of writing them, and I'll find that enormous productivity gains can be applied to that problem as well.
<bluestorm> simple curiosity, landonf, what do you want to write ?
seafood has joined #ocaml
<landonf> Database libraries, for doing a lot of grinding of GIS data sets using PostGIS/PostgreSQL and SQLite. It's a lot of moving data around, so clean simple syntax for accessing results makes a huge difference.
<landonf> Initial proof of concept work was done in Python, but I wanted static typing ...
<bluestorm> landonf: that seems reasonable
<bluestorm> (i mean, if you had wanted to write, say, a blog engine, then OCaml would clearly not be a bright right now)
<bluestorm> s/bright/bright choice/
<bluestorm> i guess you've already tried the existing bindings ?
<bluestorm> there as been quite interesting things in the "bringing type safety to SQL statements" direction, but i'm not sure how much of it is user-usable right now
Yoric[DT] has quit ["Ex-Chat"]
<gildor> landonf: ocaml has not a large collection of libraries (like perl/java/python) but going thisway you will always pickup only mainstream language
<gildor> number of libraries seems to be related to number of people using it
<vixey> is it not possible to use python libraries from ocaml? and whether or not it was, is that a reasonable approach?
<landonf> bluestorm: *nod* spent the past few days trying out bindings
<landonf> gildor: That's very true, the only answer I have are languages like clojure or scala that (regardless of their other traits) piggyback on existing languages' available libraries.
<gildor> indeed
<landonf> vixey: There is http://pycaml.sourceforge.net/
<gildor> and maybe this is the way you should go
<gildor> pycaml and perl4caml
<vixey> so does it mean you could use all the libs from python in an ocaml program? and is this practical?
<aeolist> so i made my grand personalised module from the Set module, now how can i create mutable sets in a type statement?
<vixey> aeolist: Set is not mutable
<aeolist> fail
<vixey> I already linked you
<vixey> "All operations over sets are purely applicative (no side-effects)"
<aeolist> yeah
<aeolist> yeah yeah yeah
bluestorm_ has joined #ocaml
<aeolist> i knwo
<landonf> That's probably the best direction if I'm going to keep using OCaml
<aeolist> i can survive with that vixey
<aeolist> but i need to make a type out of something that contains some sets, what about that?
<gildor> landonf: but you can also try to make the binding (and create another library for ocaml)
<gildor> landonf: if you have time ;-)
bluestorm_ has quit [Client Quit]
<landonf> I have enough time to try and learn a better tool for the job. What's more time? ;)
<aeolist> landonf: you have to give back to the community
<gildor> if think pycaml will be a bi slow
tomh has quit ["http://www.mibbit.com ajax IRC Client"]
<gildor> bi -> bit
<aeolist> is that how you instruct emacs to replace all?
<aeolist> after 5 hours of fiddling with this, i get the idea that sets are not a great choice with what i want to do
<gildor> landonf: if you succeed in doing what is needed for your application with pycaml, you can consider creating a library in OCaml/C for replacing python library
<aeolist> on the other hand implementing find/union/intersection for some lists sounds like too much work
<landonf> *nod* swap out the backend when there is more time to spare.
<bluestorm> aeolist: what are you trying to do ?
<aeolist> actually it all boils down to filling a ref list full of blocks, each block has some immutable and some mutable values... some of these values are lists of immutable values and i need to perform actions such as union/intersection/find
<aeolist> so i thought... sets! all these are already implemented there... but it seems like a deadend
<bluestorm> why so
<bluestorm> ?
<aeolist> let me pastebin some code
<aeolist> there, it's a beauty. actually wanting to replace lines 22-25
Mr_Awesome has joined #ocaml
<bluestorm> aeolist: if you want mutability, you can still use a CP.t ref
<mfp> did it cross anybody's mind that ocamlbuild + ocamlfind provide >80% of the functionality of Cabal?
<bluestorm> mfp: is it easy to have them interactive ?
<bluestorm> (i have the funny impression that you're answering to that discussion there was about three days ago)
<mfp> "interact"?
<bluestorm> s/interactive/interact/
<mfp> yes, I was going to mention that :)
<bluestorm> i've not tried to use ocamlbuild yet
<mfp> in fact, there's a recipe in ocamlbuild's blog to make ocamlbuild use ocamlfind
<mfp> I wrote my first ocamlbuild plugin yesterday
<mfp> the plugin API is clunky, but usable
seafood has quit [Read error: 104 (Connection reset by peer)]
seafood has joined #ocaml
redocdam has quit [Read error: 110 (Connection timed out)]
<mfp> by shipping some code with ocamlfind, it'd be possible to have minimalistic myocamlbuild.ml plugins which would drive compilation + installation
<mfp> allowing furthermore to upload the code to a central repository and extract the documentation
<aeolist> a great
<aeolist> bluestorm: thank you
Axioplase is now known as Axioplase_
<mfp> bluestorm: I've been reading through Haskell "historical data", and come to the conclusion that the single thing that has helped it the most is hackage (essentially cabal + hackageDB))
<bluestorm> that would be coherent with the universal praise of CPAN
<mfp> being able to release in no time and have the code + documentation + announcement appear in a centralized DB is an enormous boost
<mfp> it builds momentum in no time
<aeolist> it's marketing
<mfp> aeolist: not only that; it's code availability, standardized installation system, easier releases...
<aeolist> imho, cabal breaks the package manager, thus it's evil
<mfp> no no, that's only cabal-install
<mfp> cabal-install is a very minor part of the deal
<aeolist> yeah, i have limited experience
<mfp> the important thing is the standardization of the build + install process and the central DB / repos / doc
<mfp> a standardized build system means easier repackaging by Fedora, Debian and friends, too
<mfp> so end-users keep using "native" packages, but devels enjoy development at a faster pace
<aeolist> yeah, that's a good point
<aeolist> actually, i was thinking the other day... why is there a need to reinvent everything? i was thinking of darcs
<aeolist> i mean, the authors might have an argument about that, but frankly i dont remember anything revolutionary about it compared to say... hg
<bluestorm> darcs was based on a theory
<bluestorm> i'm not sure hg is
<aeolist> oh
<aeolist> i am just arguing as an end user here
<mfp> I tried to build a hmmm repackaging process + system for Ruby a few years ago that emphasized stability and good practices; wrote a package manager (technically superior to RubyGems, which later became the de-facto standard), and packaged some ~170 Ruby libraries/apps myself.
<bluestorm> mfp: i agree with your vision , what do you think could/should be _done_ ?
<mfp> bluestorm: I'm getting there, allow me a couple more lines about the stuff I've learned from my prev experience :)
<bluestorm> :p
<bluestorm> agreed.
<mfp> it ultimately failed because (1) I essentially did it all alone, and never managed to get more ppl to work on it (I didn't let them because the system was in devel and I didn't want 3rd party efforts to go to waste)
<landonf> Speaking of someone that just packaged a mountain of OCaml software for MacPorts over the past few days
<landonf> er, as someone
<landonf> I absolutely agree with "a standardized build system means easier repackaging"
<landonf> findlib goes a long way
<mfp> (2) it was based on the idea of a separate "packaging team" (equivalent to the FreeBSD or Debian ppl, but in a vendor-neutral way), which few people seemed to understand in the Ruby community
<mfp> (3) the language itself is at odds with concepts like interface stability, releasing a set of libraries as a tested whole, etc.
<mfp> (incidentally, if you've read the proposal for the Haskell Platform, it's similar in spirit to what I attempted)
<mfp> another lesson is "the best is the enemy of the good". For instance, I wrote a package manager with transactional installs: it was able to recover to a clean state if the computer crashed in the middle of an install, you killed it or whatever. It had build-dependencies, package GC'ing, integrated documentation system, pretty much everything you expect from something like APT. None of this matters in the end.
<bluestorm> :p
<mfp> bluestorm: so... I'm getting there :) What can be done is: take ocamlbuild and ocamlfind, create a minimalistic std build system based on them (nearly everything done already), migrate libs to that sys.
<mfp> in parallel: develop centralized tarball repos + DB + documentation extractor
<mfp> maybe asking gildor to host it? :)
<bluestorm> so you wouldn't use godi at all ? (and gerd made a documentation extarctor too, but it's closed source right now so not really in sight)
<mfp> GODI is much more complex
<mfp> since it's released as a whole, it cannot allow developers to just upload their packages
<mfp> which is exactly what you need to build momentum
<mfp> otherwise nobody will adopt the "standard" build sys, and eventually the thing dies when the ppl maintaining it cannot do it anymore
<mfp> (this is what happened in my case)
<landonf> GODI also stands in the way of upstream operating system packagers
<mfp> GODI becomes another packager
<mfp> so its work cannot be reused easily by other system packagers
<mfp> unless they happen to use the NetBSD ports system hah
<landonf> Right. That in turn causes innumerable headaches to anyone responsible for maintaining large scale production deployments, because you can't rely on the one packaging system.
<mbishop> I'm starting to really like F#
marmotine has quit ["mv marmotine Laurie"]
<mfp> so I keep coming to this conclusion: standardized build system, central DB for availability + building momentum, tools to ease the task for 3rd party, "native" packagers
<landonf> Sounds good to me ;-)
<mfp> IIRC there are scripts to create native pkgs for Debian, Arch linux and others from a "cabalized" tree. The scripts need not be perfect, as the result will be polished by the packagers, but it makes their life easier, and allows end-users to install via their usual package manager too.
<mfp> it did work for Haskell it seems, coming from a worse(?) starting point (fewer libs before Cabal than in OCaml right now, I think)
<bluestorm> ocamlfind, ocamlbuild, iirc none of these tools handle dependencies, wich can be nontrivial in OCaml (need to rebuild when the interface change, etc.)
<mfp> Gerd has done a great work with ocamlfind & GODI (and we also owe him great sw. like ocamlnet), so I wouldn't want him to perceive this as going against GODI. It's just that a std. build sys has got to be usable outside that sys too. In fact, it'd also make things easier for GODI.
<bluestorm> don't you think that could be an issue ?
<mfp> I've given it a thought
<mfp> the easiest way would be to recompile reverse-dependencies on lib upgrade
<bluestorm> (afaik that's what motivated the creation of GODI in the first place, iirc Gerd said that "ocamlfind didn't scale" or something like that)
<mfp> but then it's GODI itself which doesn't scale (!)
<gildor> mfp: are you talking about real thing
<gildor> mfp: have you done a package manager like APT ?
<mfp> gildor: I, for once, would like to make it happen
<mfp> yes, I once wrote one
<mfp> *for one
<gildor> mfp: you WOULD or you WOULD have done it ;-)
<gildor> mfp: you WOULD or you HAVE done it ;-)
seafood has quit []
<mfp> I tried to do it once in Ruby-land (failed, for the reasons mentioned above)
<gildor> mfp: ok
<mfp> I believe it's doable for OCaml
<gildor> mfp: because i am working on the first plan for "domination of the world"
<gildor> first step
<gildor> (sorry it is late for me)
<mfp> gildor: note that the reason of the failure was not technical (the package manager + repository worked great), but rather the exceedingly large scope (social problem)
<gildor> this will be called ocaml-archives and will be host at archives.ocamlcore.org
<mfp> a site with the tarballs?
<gildor> it will store tarballs of ocaml project
<gildor> yep
<gildor> only that
<gildor> this is the first step
<mfp> great, that's one of the 2 uh legs of the system :)
<gildor> I am setting up the automatic scan of site containing tarball + automatic download
<gildor> I also need to set up script to read/parse/use the hump and linkdb (to know if there is new ocaml project project around)
<mfp> the other being the std build sys, and a third (much less important, as I've learned) being the automated install (think cabal-install)
<gildor> most of the project is based on existing tools (uscan with -dehs option)
<gildor> the std build sys is another point i am working on
<gildor> this is called ocaml-autobuild
<mfp> do you agree that having ppl upload directly to archives.ocamlcore.org would be the easiest way to make sure you've got everything?
<gildor> but the real build sys is ocamlbuild or omake or ocamlmakefile
<mfp> ocaml-autobuild -> what are you basing it on?
<gildor> i just standardized the way it is called
<gildor> and some checking at the beginning
* mfp likes omake
<mfp> it seems to me, however, that ocamlbuild is the best choice as it's included in OCaml
<gildor> I think people won't be allowed to upload directly,
<mfp> and it will soon be the preferred way to build the compiler itself
<gildor> the need to send a "regexp pattern" the we will use to see if there is new version
<mfp> gildor: you're a Debian developer, right?
<gildor> i am a DD indeed
<mfp> I see where you're coming from; that's exactly how I thought when in my prev repackaging attempt (no direct uploads, in fact no changes demanded to upstream, everything taken care of by repackaging team)
<gildor> letting people upload directly is a "semi" good solution, automating this allow to have a smaller team of people managing it
<gildor> mfp: i don't deal with packaging for now
<mfp> what I learned from that exp. is that you need to make it very open from the beginning to build momentum
<mfp> -> look at HackageDB
<mfp> even in a "every registered devel can upload" model, you can take sets of packages and test them in order to build periodic "atomic releases"
<mfp> that's what the Haskell Platform proposal is about btw.
<gildor> mfp: I maybe can allow people to upload directly
<gildor> mfp: or even edit the required data to ask for a regular monitoring of their source
<mfp> so, as I see it, availability of sw. in standard build system + registered in the DB precedes releasing package selections
<gildor> eg: ftp://ftp.inria.fr/INRIA/Projects/cristal/advi/advi-(.*)\.t(?:ar\.)?gz
<mfp> ports-style, I see
<gildor> ocaml-archives is a standalone project
<gildor> it can serve other purpose
<gildor> in particular i would like to make it secondary download site for packager (like debian/fedora/godi...)
<mfp> what are you writing the backend in?
<gildor> shell for now
<mfp> !
<gildor> sh
<gildor> #!/bin/sh
<gildor> ;-)
<gildor> you know choose the right tool for what you want to do
<mfp> were somebody to write a site like http://hackage.haskell.org/ using something like e.g. ocsigen, would you host it? :)
<gildor> yes
<gildor> if it doesn't eat all my memory/cpu
<gildor> and it is not a security risk
<mfp> I wouldn't expect it to; it's mostly static data anyway
<mfp> the heavy/risky part is probably documentation extraction
<mfp> if there's some bug in ocamldoc...
<gildor> you can use setrlimit to prevent a process going mad
<mfp> yeah plus a chroot plus ... to manipulate the tarballs in a sandbox
<gildor> if you were to write such a website, i would like you not to write your own auth mechanism
<mfp> gforge's instead?
<gildor> but to connect to forge.ocamlcore.org (postgres) to get the login/password there
<gildor> yep, it would be better to have some centralized auth
<mfp> yup
<gildor> maybe something with OpenID to ease everything
<gildor> (ease is not the word, maybe "possibly make easy in the future for other component")