* [OSR] OCaml Standard Recommandation Process @ 2008-01-27 13:23 David Teller 2008-01-27 13:52 ` [Caml-list] " Paolo Donadeo ` (5 more replies) 0 siblings, 6 replies; 44+ messages in thread From: David Teller @ 2008-01-27 13:23 UTC (permalink / raw) To: OCaml Dear list, As I have mentioned in my previous message, during the OCaml Developer Days, the INRIA team has made clear that, among other things, the community is essentially in charge of recommending best practices, standards, etc. A candidate name has been suggested: "OSR", for "OCaml Standard Recommandations." While we already have a few tools for this kind of discussions, (I'm thinking about the current mailing-list and the Cocan Wiki), at the moment, we are lacking organisation and a way of committing to a decision. Let me suggest the following process: * anyone on this mailing-list may ask for or suggest best practises -- to do so, please put [OSR] in the header of your e-mail * after some debate, if one or more solutions have emerged, we put these solutions on the appropriate page of the Cocan Wiki, with summaries of pros and cons and an official space for voting and suggesting future improvements * if the vote proves conclusive, we move the chosen solution from the voting stage to some page on that Wiki, say "recommended practises." Does this seem an acceptable method ? Regards, David -- David Teller Security of Distributed Systems http://www.univ-orleans.fr/lifo/Members/David.Teller Angry researcher: French Universities need reforms, but the LRU act brings liquidations. ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 13:23 [OSR] OCaml Standard Recommandation Process David Teller @ 2008-01-27 13:52 ` Paolo Donadeo 2008-01-27 14:24 ` Yaron Minsky ` (4 subsequent siblings) 5 siblings, 0 replies; 44+ messages in thread From: Paolo Donadeo @ 2008-01-27 13:52 UTC (permalink / raw) To: caml-list > Does this seem an acceptable method ? It's ok for me. -- Paolo ~ ~ :wq ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 13:23 [OSR] OCaml Standard Recommandation Process David Teller 2008-01-27 13:52 ` [Caml-list] " Paolo Donadeo @ 2008-01-27 14:24 ` Yaron Minsky 2008-01-27 19:07 ` David Teller 2008-01-27 14:36 ` Michaël Grünewald ` (3 subsequent siblings) 5 siblings, 1 reply; 44+ messages in thread From: Yaron Minsky @ 2008-01-27 14:24 UTC (permalink / raw) To: David Teller; +Cc: OCaml [-- Attachment #1: Type: text/plain, Size: 2240 bytes --] What is it that is meant to be standardized by this process? Is this meant to be parallel to the Java Community Process or Python's PEPs (Python Enhancement Proposals)? Those are not just about "best practices", but are actually about code, language features, APIs, etc. I don't at first glance see any real use in agreeing on best practices for OCaml. Can you give some examples of what would make a reasonable OSR? That might clarify the purpose of them considerably. y On Jan 27, 2008 8:23 AM, David Teller <David.Teller@univ-orleans.fr> wrote: > Dear list, > > As I have mentioned in my previous message, during the OCaml Developer > Days, the INRIA team has made clear that, among other things, the > community is essentially in charge of recommending best practices, > standards, etc. A candidate name has been suggested: "OSR", for "OCaml > Standard Recommandations." > > While we already have a few tools for this kind of discussions, (I'm > thinking about the current mailing-list and the Cocan Wiki), at the > moment, we are lacking organisation and a way of committing to a > decision. > > Let me suggest the following process: > * anyone on this mailing-list may ask for or suggest best practises -- > to do so, please put [OSR] in the header of your e-mail > * after some debate, if one or more solutions have emerged, we put these > solutions on the appropriate page of the Cocan Wiki, with summaries of > pros and cons and an official space for voting and suggesting future > improvements > * if the vote proves conclusive, we move the chosen solution from the > voting stage to some page on that Wiki, say "recommended practises." > > Does this seem an acceptable method ? > > Regards, > David > -- > David Teller > Security of Distributed Systems > http://www.univ-orleans.fr/lifo/Members/David.Teller > Angry researcher: French Universities need reforms, but the LRU act > brings liquidations. > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > [-- Attachment #2: Type: text/html, Size: 3023 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 14:24 ` Yaron Minsky @ 2008-01-27 19:07 ` David Teller 2008-01-27 21:07 ` Jon Harrop 0 siblings, 1 reply; 44+ messages in thread From: David Teller @ 2008-01-27 19:07 UTC (permalink / raw) To: yminsky; +Cc: OCaml You are correct, I should have been more specific. The idea is to discuss * libraries * Camlp4 extensions * language features that may be implemented as a combination of libraires and Camlp4 extensions * actual code. Let me summarise a few good candidates for discussion. Please don't start the actual debate in this thread, they will be posted again in their own e-mail. ** The Unicode situation ** At the moment, at least four libraries (Camomile, ExtLib, ULex, LablGtk) contain their own, incompatible, Unicode management modules, none of which is compatible with OCamllex, or (I believe) OCamlDuce, Camlp4, OCaml-Java, Spidercaml, the Str module, wxOCaml, Expat... We need to * decide on APIs we will consider "standard" for Unicode management -- preferably in the form of one already-existing library, possibly with minor modifications, otherwise as things-that-need-to-be-implemented * decide on whether/how to include these APIs in end-user distributions (e.g. GODI, Debian packages, Fedora packages) * add new implementations of Pervasives / standard library functions for Unicode strings instead of the string type * document the use of these APIs for the most common situations, both for newbies and seasoned developers * start patching our own applications to make use of these APIs, both as a way to test them and as a way to have bring the OCaml world one step further towards something that interacts more easily * from the moment the debate is concluded, make it clear for new users of OCaml that, unless they have very specific needs, this is the One True Way of using Unicode. ** The mutable string situation ** Since the first version, OCaml has mutable strings. With time and the hindsight provided by numerous languages with immutable strings, this design decision has begun to be seen by many developers as wrong. As pointed out by Xavier Leroy, however, it is now impossible to come back on that decision and fully root out mutable strings from the language. However, new data structures may be added, made comfortable for general use and documented as being the new standard. We need to * decide if we actually want this to happen * decide on the necessary APIs and performance requirements for these new data structures (e.g. ropes) * discuss and implement a nice Camlp4 syntax for these revised strings * decide on whether/how to include these APIs in end-user distributions (e.g. GODI, Debian packages, Fedora packages) * add new implementations of Pervasives / standard library functions for text strings instead of the string type * document the use of these APIs for the most common situations, both for newbies and seasoned developers * start patching our own applications to make use of these APIs, both as a way to test them and as a way to have bring the OCaml world one step further towards something that interacts more easily * from the moment the debate is concluded, make it clear for new users of OCaml that, unless they have very specific needs, this is the One True Way of using text. --- Of course, these two debates will probably be closely linked, as they both deal with the representation of text. Other subjects would include ExtLib (anything we need to add ?), Lazy lists, lazy pattern-matching (yes, this can be implemented in Camlp4), pattern views, simple equation solving in patterns à la Haskell (match x with y+1 -> ...), ... Does this answer your questions ? Cheers, David On Sun, 2008-01-27 at 09:24 -0500, Yaron Minsky wrote: > > What is it that is meant to be standardized by this process? Is this > meant to be parallel to the Java Community Process or Python's PEPs > (Python Enhancement Proposals)? Those are not just about "best > practices", but are actually about code, language features, APIs, etc. > I don't at first glance see any real use in agreeing on best practices > for OCaml. Can you give some examples of what would make a reasonable > OSR? That might clarify the purpose of them considerably. > > y ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 19:07 ` David Teller @ 2008-01-27 21:07 ` Jon Harrop 2008-01-27 21:47 ` Yaron Minsky 0 siblings, 1 reply; 44+ messages in thread From: Jon Harrop @ 2008-01-27 21:07 UTC (permalink / raw) To: caml-list On Sunday 27 January 2008 19:07:01 David Teller wrote: > You are correct, I should have been more specific. The idea is to > discuss > * libraries > * Camlp4 extensions > * language features that may be implemented as a combination of > libraires and Camlp4 extensions > * actual code. Would it not be much easier and much more productive to simply fork the OCaml distribution and address these issues at source? You could then address many other issues like improving the stdlib, adding a "try..finally" construct to the language, adding features to help with the brittle binding problem and opening the compiler's internal representations to the outside world. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 21:07 ` Jon Harrop @ 2008-01-27 21:47 ` Yaron Minsky 2008-01-28 11:06 ` David Teller 2008-01-28 12:04 ` Jon Harrop 0 siblings, 2 replies; 44+ messages in thread From: Yaron Minsky @ 2008-01-27 21:47 UTC (permalink / raw) To: Jon Harrop; +Cc: caml-list [-- Attachment #1: Type: text/plain, Size: 1681 bytes --] On Jan 27, 2008 4:07 PM, Jon Harrop <jon@ffconsultancy.com> wrote: > On Sunday 27 January 2008 19:07:01 David Teller wrote: > > You are correct, I should have been more specific. The idea is to > > discuss > > * libraries > > * Camlp4 extensions > > * language features that may be implemented as a combination of > > libraires and Camlp4 extensions > > * actual code. > > Would it not be much easier and much more productive to simply fork the > OCaml > distribution and address these issues at source? You could then address > many > other issues like improving the stdlib, adding a "try..finally" construct > to > the language, adding features to help with the brittle binding problem and > opening the compiler's internal representations to the outside world. That seems like a fairly awful idea to me. Trying to develop the core language away from the confines of INRIA seems expensive and unlikely to go well. The INRIA team understands the core of the language like no one else, after all, and it will be hard to replace that expertise. I do think there is value in outside companies thinking carefully about a limited set of improvements that (a) can only be fixed in the core language and (b) would make it easier for outsiders to add necessary features. One role I would like to see the caml team take upon itself is that of blessing standardization efforts. If INRIA had a link on its site to a recommended batteries-included distribution, that would help the community coalesce around that distribution. Obviously trying to choose winners in this way is tricky and not to be done lightly, but I do think there's a good chance that it will become important. y [-- Attachment #2: Type: text/html, Size: 2070 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 21:47 ` Yaron Minsky @ 2008-01-28 11:06 ` David Teller 2008-01-28 12:04 ` Jon Harrop 1 sibling, 0 replies; 44+ messages in thread From: David Teller @ 2008-01-28 11:06 UTC (permalink / raw) To: yminsky; +Cc: Jon Harrop, caml-list Yaron wrote: > One role I would like to see the caml team take upon itself is that of blessing standardization efforts. If INRIA had a link on its site to a recommended batteries-included distribution, that would help the community coalesce around that distribution. Obviously trying to choose winners in this way is tricky and not to be done lightly, but I do think there's a good chance that it will become important. Just to be clear: we already have the verbal blessing of Xavier Leroy on this. I can only assume that, once the process has been bootstrapped, this will be materialized by a link on the site and/or in the manual. Cheers, David -- David Teller Security of Distributed Systems http://www.univ-orleans.fr/lifo/Members/David.Teller Angry researcher: French Universities need reforms, but the LRU act brings liquidations. ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 21:47 ` Yaron Minsky 2008-01-28 11:06 ` David Teller @ 2008-01-28 12:04 ` Jon Harrop 2008-01-28 12:31 ` David Teller 2008-01-28 14:23 ` Brian Hurt 1 sibling, 2 replies; 44+ messages in thread From: Jon Harrop @ 2008-01-28 12:04 UTC (permalink / raw) To: yminsky; +Cc: caml-list On Sunday 27 January 2008 21:47:47 Yaron Minsky wrote: > On Jan 27, 2008 4:07 PM, Jon Harrop <jon@ffconsultancy.com> wrote: > > Would it not be much easier and much more productive to simply fork the > > OCaml > > distribution and address these issues at source? You could then address > > many > > other issues like improving the stdlib, adding a "try..finally" construct > > to > > the language, adding features to help with the brittle binding problem > > and opening the compiler's internal representations to the outside world. > > That seems like a fairly awful idea to me. Agreed but I see no other way to keep OCaml alive and moving in a direction that is beneficial to its community. > Trying to develop the core language away from the confines of INRIA seems > expensive and unlikely to go well. Sophisticated renovations of the type system might not succeed but we're talking about much more mundane features here. Just looking at text, we might want: . Folds in the String module. . Functions to read whole files as a string or list of lines. . Either "try..finally" or "use" bindings or combinators to automate closing. . Immutable strings. . Ropes. . Unicode. . More efficient pattern matching. These have all been available for years in the form of many incompatible extensions and will continue to be under-used until they are integrated into OCaml itself. There are also many features that I would like to steal from other languages: . The IDisposable interface from .NET and F#'s "use" bindings. . F#'s computation expressions: a syntax for monadic style in ML. . Integrated OpenGL-based graphics. and some more involved ones like operator overloading. > The INRIA team understands the core of the language like no one > else, after all, and it will be hard to replace that expertise. OCaml's researchers at INRIA are unquestionably talented but they have made it quite clear that polishing the public OCaml distribution is not their job. Moreover, they are grossly over-qualified for most of this work. We don't need a world expert in type theory to write String.fold_right for us: it would be a waste of their time and constantly working around its absence is a waste of ours. So we have different goals and (IMHO) have reached the point where their developments are arguably doing more harm than good for many us. If we want a more robust and feature complete OCaml then we must develop it ourselves. Luckily the community has already done most of the hard work and we just need to integrate this work into a new standardized OCaml distribution and get the package maintainers to migrate to it. With so many trivial changes to make this seems like a no-brainer to me. Indeed, we've had many interesting threads here over the past few years and this is our chance to put them into action. Look at all of the great suggestions for optimizations that came out of the thread about MLton's performance, for example. We can implement some of them. Look at the outstanding bugs that were cited recently. We could fix many of them. > I do think there is value in outside companies thinking carefully about a > limited set of improvements that (a) can only be fixed in the core language > and (b) would make it easier for outsiders to add necessary features. You need a reasonable and objective definition of "can only be fixed in the core language" because, of course, you can ad-hoc many things with camlp4 but the results are much harder to maintain and will never gain the traction they deserve. For example, I am not willing to have to change my compile lines, learn to interpret different compiler output and break my other tools just to get a "try..finally" construct but I would love to see it added to the OCaml language and implemented in the tools. Improving the standard library is high on my list. Sources of stack overflows should be removed. The library should be filled out, e.g. so that all modules implementing containers adhere to a suitable signature and Set/Map-compatible modules are provided for all basic types (e.g. Int, Float). As for making it easy for outsiders to add necessary features, perhaps there is something we can do to weaken these brittle bindings by automating the use of functors in a new intermediate representation and distribute that instead. As the package maintainers have already said, this would make their lives easier too! > One role I would like to see the caml team take upon itself is that of > blessing standardization efforts. If INRIA had a link on its site to a > recommended batteries-included distribution, that would help the community > coalesce around that distribution. Obviously trying to choose winners in > this way is tricky and not to be done lightly, but I do think there's a > good chance that it will become important. If INRIA's blessing would help to persuade the package maintainers that we have consensus to move forward with a new upstream source for the OCaml distribution then I agree. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 12:04 ` Jon Harrop @ 2008-01-28 12:31 ` David Teller 2008-01-28 14:23 ` Brian Hurt 1 sibling, 0 replies; 44+ messages in thread From: David Teller @ 2008-01-28 12:31 UTC (permalink / raw) To: Jon Harrop; +Cc: yminsky, caml-list On Mon, 2008-01-28 at 12:04 +0000, Jon Harrop wrote: > Sophisticated renovations of the type system might not succeed but we're > talking about much more mundane features here. Just looking at text, we might > want: > > . Folds in the String module. > . Functions to read whole files as a string or list of lines. > . Either "try..finally" or "use" bindings or combinators to automate closing. > . Immutable strings. > . Ropes. > . Unicode. > . More efficient pattern matching. > > These have all been available for years in the form of many incompatible > extensions and will continue to be under-used until they are integrated into > OCaml itself. I believe there's a problem of vocabulary rather than a philosophical issue. Almost everything you suggest in your post requires modifying *the distribution* but not necessarily *the language*. INRIA is quite happy to let the community handle a standard distribution. Cheers, David -- David Teller Security of Distributed Systems http://www.univ-orleans.fr/lifo/Members/David.Teller Angry researcher: French Universities need reforms, but the LRU act brings liquidations. ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 12:04 ` Jon Harrop 2008-01-28 12:31 ` David Teller @ 2008-01-28 14:23 ` Brian Hurt 2008-01-28 15:15 ` Loup Vaillant 2008-01-28 15:25 ` Jon Harrop 1 sibling, 2 replies; 44+ messages in thread From: Brian Hurt @ 2008-01-28 14:23 UTC (permalink / raw) To: Jon Harrop; +Cc: yminsky, caml-list Jon Harrop wrote: >There are also many features that I would like to steal from other languages: > >. The IDisposable interface from .NET and F#'s "use" bindings. > > Is there a reason that Gc.finalise doesn't work? >and some more involved ones like operator overloading. > > > I *hate* operator overloading. My experience in C++ is for every time this feature is used legitimately (i.e. to implement complex numbers or whatever), it's abused 10 times- and that's ignoring C++'s use of the bit shift operators << and >> for I/O, and the use of + for string concatentation, both of which I'd argue really should be considered abuses, as far as I'm concerned. And this is ignoring the difficulty of type inference in the presence of overloaded operators. The best way to handle this IMHO is Haskell-style type classes. Which solves the whole type inference problem, and rules most of what I consider abuses of operator overloading (for example, if you have a '+' operator, you also have to have a '*' operator- and what is "foo" * "bar"?). But this is a very non-trivial change to the language. Just my $0.02. Brian ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 14:23 ` Brian Hurt @ 2008-01-28 15:15 ` Loup Vaillant 2008-01-28 15:40 ` Brian Hurt 2008-01-28 15:25 ` Jon Harrop 1 sibling, 1 reply; 44+ messages in thread From: Loup Vaillant @ 2008-01-28 15:15 UTC (permalink / raw) To: Brian Hurt; +Cc: Jon Harrop, yminsky, caml-list 2008/1/28, Brian Hurt <bhurt@janestcapital.com>: > I *hate* operator overloading. My experience in C++ is for every time > this feature is used legitimately (i.e. to implement complex numbers or > whatever), it's abused 10 times- and that's ignoring C++'s use of the > bit shift operators << and >> for I/O, and the use of + for string > concatentation, both of which I'd argue really should be considered > abuses, as far as I'm concerned. And this is ignoring the difficulty of > type inference in the presence of overloaded operators. > > The best way to handle this IMHO is Haskell-style type classes. Which > solves the whole type inference problem, and rules most of what I > consider abuses of operator overloading (for example, if you have a '+' > operator, you also have to have a '*' operator- and what is "foo" * > "bar"?). But this is a very non-trivial change to the language. Err, are you really suggesting type classes to be added in Ocaml? Doing that properly would require to change the whole standard library, breaking havoc in every single Ocaml program, even the simplest print_string "Hello World";; I also heard that the current type checker is "quite" complicated (labels, variants, objects...). Type classes fits well with a naked Hindley-Milner type system, but how would it interact with the extra Ocaml features? Finally, it may make some type annotations mandatory, which may be viewed a unacceptable. (I'm not sure of this one, though.) Maybe type classes should be added, but I'm afraid they can't. :-( Loup ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 15:15 ` Loup Vaillant @ 2008-01-28 15:40 ` Brian Hurt 2008-01-28 19:46 ` Jon Harrop 0 siblings, 1 reply; 44+ messages in thread From: Brian Hurt @ 2008-01-28 15:40 UTC (permalink / raw) To: Loup Vaillant; +Cc: caml-list [-- Attachment #1: Type: text/plain, Size: 1090 bytes --] Loup Vaillant wrote: >2008/1/28, Brian Hurt <bhurt@janestcapital.com>: > > >>I *hate* operator overloading. My experience in C++ is for every time >>this feature is used legitimately (i.e. to implement complex numbers or >>whatever), it's abused 10 times- and that's ignoring C++'s use of the >>bit shift operators << and >> for I/O, and the use of + for string >>concatentation, both of which I'd argue really should be considered >>abuses, as far as I'm concerned. And this is ignoring the difficulty of >>type inference in the presence of overloaded operators. >> >>The best way to handle this IMHO is Haskell-style type classes. Which >>solves the whole type inference problem, and rules most of what I >>consider abuses of operator overloading (for example, if you have a '+' >>operator, you also have to have a '*' operator- and what is "foo" * >>"bar"?). But this is a very non-trivial change to the language. >> >> > >Err, are you really suggesting type classes to be added in Ocaml? > > No. I was using that to try and kill the idea of operator overloading. Brian [-- Attachment #2: Type: text/html, Size: 1631 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 15:40 ` Brian Hurt @ 2008-01-28 19:46 ` Jon Harrop 0 siblings, 0 replies; 44+ messages in thread From: Jon Harrop @ 2008-01-28 19:46 UTC (permalink / raw) To: caml-list On Monday 28 January 2008 15:40:56 Brian Hurt wrote: > No. I was using that to try and kill the idea of operator overloading. Pointing out that different ideas are not feasible doesn't kill the original idea. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 14:23 ` Brian Hurt 2008-01-28 15:15 ` Loup Vaillant @ 2008-01-28 15:25 ` Jon Harrop 2008-01-28 16:06 ` Christophe TROESTLER 2008-01-28 16:37 ` Brian Hurt 1 sibling, 2 replies; 44+ messages in thread From: Jon Harrop @ 2008-01-28 15:25 UTC (permalink / raw) To: Brian Hurt; +Cc: caml-list On Monday 28 January 2008 14:23:01 you wrote: > Jon Harrop wrote: > >There are also many features that I would like to steal from other > > languages: > > > >. The IDisposable interface from .NET and F#'s "use" bindings. > > Is there a reason that Gc.finalise doesn't work? Absolutely: Gc.finalise is only probabilistic whereas IDisposable is deterministic. IDisposable guarantees deallocation of resources by a certain point. (This is why you should never use Gc.finalise alone to manage the collection of external resources!) So you write a "use" binding: let read_first_line file = use ch = open_in file in input_line ch and it gets translated into: let read_first_line file = let ch = open_in file in try input_line ch finally ch#dispose where the "dispose" method that was automatically inserted at the end of the scope of the "use" binding calls "close_in" in this case to deallocate the external resource (a file handle in this case but it could be anything with a dispose method). This is easy to implement and will remove a world of pain when doing IO in OCaml. > >and some more involved ones like operator overloading. > > I *hate* operator overloading. My experience in C++ is for every time > this feature is used legitimately (i.e. to implement complex numbers or > whatever), it's abused 10 times- and that's ignoring C++'s use of the > bit shift operators << and >> for I/O, and the use of + for string > concatentation, both of which I'd argue really should be considered > abuses, as far as I'm concerned. And this is ignoring the difficulty of type > inference in the presence of overloaded operators. You're looking in the wrong direction. Look at F# to see how OCaml + overloading done right can be hugely beneficial. OCaml has fallen far too far behind to catch up completely but we could take some baby steps in this direction, just like SML's ad-hoc polymorphic approach but with a wider range of types (complexes, vectors, matrices). This is fairly easy to implement and, again, will remove a world of pain when doing arithmetic in OCaml. > The best way to handle this IMHO is Haskell-style type classes. Which > solves the whole type inference problem, and rules most of what I > consider abuses of operator overloading (for example, if you have a '+' > operator, you also have to have a '*' operator- and what is "foo" * > "bar"?). But this is a very non-trivial change to the language. Type classes are more powerful but they also make performance less predictable (the dictionary may or may not be optimized away). They are also unachievable, as you say. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 15:25 ` Jon Harrop @ 2008-01-28 16:06 ` Christophe TROESTLER 2008-01-28 16:20 ` Nicolas Pouillard 2008-01-28 20:49 ` Jon Harrop 2008-01-28 16:37 ` Brian Hurt 1 sibling, 2 replies; 44+ messages in thread From: Christophe TROESTLER @ 2008-01-28 16:06 UTC (permalink / raw) To: caml-list On Mon, 28 Jan 2008 15:25:12 +0000, Jon Harrop wrote: > > So you write a "use" binding: > > let read_first_line file = > use ch = open_in file in > input_line ch > > and it gets translated into: > > let read_first_line file = > let ch = open_in file in > try input_line ch finally > ch#dispose > > where the "dispose" method that was automatically inserted at the end of the > scope of the "use" binding calls "close_in" in this case to deallocate the > external resource (a file handle in this case but it could be anything with a > dispose method). What is wrong with let read_first_line file = with_open_in file begin fun ch -> input_line ch end ? Cheers, ChriS ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 16:06 ` Christophe TROESTLER @ 2008-01-28 16:20 ` Nicolas Pouillard 2008-01-28 16:45 ` Christophe TROESTLER 2008-01-29 7:51 ` Gordon Henriksen 2008-01-28 20:49 ` Jon Harrop 1 sibling, 2 replies; 44+ messages in thread From: Nicolas Pouillard @ 2008-01-28 16:20 UTC (permalink / raw) To: christophe.troestler+ocaml; +Cc: caml-list Excerpts from christophe.troestler+ocaml's message of Mon Jan 28 17:06:10 +0100 2008: > On Mon, 28 Jan 2008 15:25:12 +0000, Jon Harrop wrote: > > > > So you write a "use" binding: > > > > let read_first_line file = > > use ch = open_in file in > > input_line ch > > > > and it gets translated into: > > > > let read_first_line file = > > let ch = open_in file in > > try input_line ch finally > > ch#dispose > > > > where the "dispose" method that was automatically inserted at the end of the > > scope of the "use" binding calls "close_in" in this case to deallocate the > > external resource (a file handle in this case but it could be anything with a > > dispose method). > > What is wrong with > > let read_first_line file = > with_open_in file begin fun ch -> > input_line ch > end This code has nothing wrong but with_open_in (even if it's very useful) is not resource safe. This is because the in_channel can escape it's scope. | let ch = with_open_in file (fun x -> x) in | input_line ch This program is obviously wrong but still show that with_open_in is not safe. Cheers, -- Nicolas Pouillard aka Ertai ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 16:20 ` Nicolas Pouillard @ 2008-01-28 16:45 ` Christophe TROESTLER 2008-01-28 16:51 ` Olivier Andrieu 2008-01-29 7:51 ` Gordon Henriksen 1 sibling, 1 reply; 44+ messages in thread From: Christophe TROESTLER @ 2008-01-28 16:45 UTC (permalink / raw) To: nicolas.pouillard; +Cc: caml-list On Mon, 28 Jan 2008 17:20:16 +0100, Nicolas Pouillard wrote: > > Excerpts from christophe.troestler+ocaml's message of Mon Jan 28 17:06:10 +0100 2008: > > On Mon, 28 Jan 2008 15:25:12 +0000, Jon Harrop wrote: > > > > > > So you write a "use" binding: > > > > > > let read_first_line file = > > > use ch = open_in file in > > > input_line ch > > > > > > and it gets translated into: > > > > > > let read_first_line file = > > > let ch = open_in file in > > > try input_line ch finally > > > ch#dispose > > > > > > where the "dispose" method that was automatically inserted at > > > the end of the scope of the "use" binding calls "close_in" in > > > this case to deallocate the external resource (a file handle in > > > this case but it could be anything with a dispose method). > > > > What is wrong with > > > > let read_first_line file = > > with_open_in file begin fun ch -> > > input_line ch > > end > > This code has nothing wrong but with_open_in (even if it's very useful) is > not resource safe. This is because the in_channel can escape it's scope. > > | let ch = with_open_in file (fun x -> x) in > | input_line ch > > This program is obviously wrong but still show that with_open_in is not safe. Right but how is it different with "use" ? ChriS ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 16:45 ` Christophe TROESTLER @ 2008-01-28 16:51 ` Olivier Andrieu 2008-01-28 19:58 ` Jon Harrop 0 siblings, 1 reply; 44+ messages in thread From: Olivier Andrieu @ 2008-01-28 16:51 UTC (permalink / raw) To: Christophe TROESTLER; +Cc: caml-list On Jan 28, 2008 5:45 PM, Christophe TROESTLER <Christophe.Troestler+ocaml@umh.ac.be> wrote: > > On Mon, 28 Jan 2008 17:20:16 +0100, Nicolas Pouillard wrote: > > > > Excerpts from christophe.troestler+ocaml's message of Mon Jan 28 17:06:10 +0100 2008: > > > On Mon, 28 Jan 2008 15:25:12 +0000, Jon Harrop wrote: > > > > > > > > So you write a "use" binding: > > > > > > > > let read_first_line file = > > > > use ch = open_in file in > > > > input_line ch > > > > > > > > and it gets translated into: > > > > > > > > let read_first_line file = > > > > let ch = open_in file in > > > > try input_line ch finally > > > > ch#dispose > > > > > > > > where the "dispose" method that was automatically inserted at > > > > the end of the scope of the "use" binding calls "close_in" in > > > > this case to deallocate the external resource (a file handle in > > > > this case but it could be anything with a dispose method). > > > > > > What is wrong with > > > > > > let read_first_line file = > > > with_open_in file begin fun ch -> > > > input_line ch > > > end > > > > This code has nothing wrong but with_open_in (even if it's very useful) is > > not resource safe. This is because the in_channel can escape it's scope. > > > > | let ch = with_open_in file (fun x -> x) in > > | input_line ch > > > > This program is obviously wrong but still show that with_open_in is not safe. > > Right but how is it different with "use" ? It's basically the same. But with "use" (or "using" in C#), you don't have to write the "with_open_in" wrapper in the first place because the finalizing function is implicit, it's the method called "Dispose". Using this scheme with OCaml would mean that any resource-using datatype has to be an object (not really the case right now). -- Olivier ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 16:51 ` Olivier Andrieu @ 2008-01-28 19:58 ` Jon Harrop 0 siblings, 0 replies; 44+ messages in thread From: Jon Harrop @ 2008-01-28 19:58 UTC (permalink / raw) To: caml-list On Monday 28 January 2008 16:51:17 Olivier Andrieu wrote: > It's basically the same. But with "use" (or "using" in C#), you don't > have to write the "with_open_in" wrapper in the first place because > the finalizing function is implicit, it's the method called "Dispose". Exactly. > Using this scheme with OCaml would mean that any resource-using > datatype has to be an object (not really the case right now). Well, anything that wanted to exploit this would need to be an object. We could provide a completely new interface and also maintain backwards compatibility. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 16:20 ` Nicolas Pouillard 2008-01-28 16:45 ` Christophe TROESTLER @ 2008-01-29 7:51 ` Gordon Henriksen 1 sibling, 0 replies; 44+ messages in thread From: Gordon Henriksen @ 2008-01-29 7:51 UTC (permalink / raw) To: caml-list On 2008-01-28, at 11:20, Nicolas Pouillard wrote: > Excerpts from christophe.troestler+ocaml's message of Mon Jan 28 > 17:06:10 +0100 2008: >> > >> On Mon, 28 Jan 2008 15:25:12 +0000, Jon Harrop wrote: >> >>> So you write a "use" binding: >>> >>> let read_first_line file = >>> use ch = open_in file in >>> input_line ch >>> >>> and it gets translated into: >>> >>> let read_first_line file = >>> let ch = open_in file in >>> try input_line ch finally >>> ch#dispose >>> >>> where the "dispose" method that was automatically inserted at the >>> end of the >>> scope of the "use" binding calls "close_in" in this case to >>> deallocate the >>> external resource (a file handle in this case but it could be >>> anything with a >>> dispose method). >> >> What is wrong with >> >> let read_first_line file = >> with_open_in file begin fun ch -> >> input_line ch >> end > > This code has nothing wrong but with_open_in (even if it's very > useful) is > not resource safe. This is because the in_channel can escape it's > scope. > > | let ch = with_open_in file (fun x -> x) in > | input_line ch > > This program is obviously wrong but still show that with_open_in is > not safe. This argument applies equally to Pervasives.close_in. Allowing the programmer to control the deallocation of external resources is much more important than attempting to prevent her from performing an invalid operation via a deallocated handle. — Gordon ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 16:06 ` Christophe TROESTLER 2008-01-28 16:20 ` Nicolas Pouillard @ 2008-01-28 20:49 ` Jon Harrop 2008-01-28 22:05 ` Till Varoquaux 1 sibling, 1 reply; 44+ messages in thread From: Jon Harrop @ 2008-01-28 20:49 UTC (permalink / raw) To: caml-list On Monday 28 January 2008 16:06:10 Christophe TROESTLER wrote: > On Mon, 28 Jan 2008 15:25:12 +0000, Jon Harrop wrote: > > So you write a "use" binding: > > > > let read_first_line file = > > use ch = open_in file in > > input_line ch > > > > and it gets translated into: > > > > let read_first_line file = > > let ch = open_in file in > > try input_line ch finally > > ch#dispose > > > > where the "dispose" method that was automatically inserted at the end of > > the scope of the "use" binding calls "close_in" in this case to > > deallocate the external resource (a file handle in this case but it could > > be anything with a dispose method). > > What is wrong with > > let read_first_line file = > with_open_in file begin fun ch -> > input_line ch > end Sure. Here's the complete version using combinators as a workaround: # let try_finally x f g = try let f_x = f x in g x; f_x with e -> (try g x with _ -> ()); raise e;; val try_finally : 'a -> ('a -> 'b) -> ('a -> unit) -> 'b = <fun> # let with_open_in file k = try_finally (open_in file) k close_in;; val with_open_in : string -> (in_channel -> 'a) -> 'a = <fun> # let read_first_line file = with_open_in file begin fun ch -> input_line ch end;; val read_first_line : string -> string = <fun> This is almost exactly what I currently do. The "use" binding is syntactic sugar to make it shorter, clearer, more generic and scale better. I'd be more than happy to have anything at all added to improve this though. Combinators in the stdlib are certainly better than nothing and this is one of the most complained about noob problems (and lack of functions to read files)... -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 20:49 ` Jon Harrop @ 2008-01-28 22:05 ` Till Varoquaux 2008-01-28 23:10 ` Jon Harrop 0 siblings, 1 reply; 44+ messages in thread From: Till Varoquaux @ 2008-01-28 22:05 UTC (permalink / raw) To: Jon Harrop; +Cc: caml-list It is worth noting that OCaml is not F#. Objects in OCaml, unlike in F#, are an advance feature, many users find them hard to grasp and work with. They also come with a rather high runtime cost. Unless we have a good reason to do so, I think we should avoid bolstering them at the very core of the standard library. Don't get me wrong, I think objects have a purpose; and so have polymorphic variants and recursive modules but great care should be taken before axing the core library around them. Out of the so called "advanced" features of OCaml only the labelled and optional arguments have made their way in the standard library. As much as we all enjoy re-inventing the standard library around a nice cold beer, we have to give credit to the INRIA's team for their collective wit and the work that actually has been done. We should keep complicated solutions for complicated problems. Although is is tempting to propose a solution for IO using phantom types, objects or whatnot, I still think the Common Lisp approach (using unwind_protect) is an elaborate enough one to avoid most problems whilst remaining simple enough to be viable. A great solution in F# might not translate as well in OCaml, or it might not translate at all. Till On Jan 28, 2008 8:49 PM, Jon Harrop <jon@ffconsultancy.com> wrote: > On Monday 28 January 2008 16:06:10 Christophe TROESTLER wrote: > > On Mon, 28 Jan 2008 15:25:12 +0000, Jon Harrop wrote: > > > So you write a "use" binding: > > > > > > let read_first_line file = > > > use ch = open_in file in > > > input_line ch > > > > > > and it gets translated into: > > > > > > let read_first_line file = > > > let ch = open_in file in > > > try input_line ch finally > > > ch#dispose > > > > > > where the "dispose" method that was automatically inserted at the end of > > > the scope of the "use" binding calls "close_in" in this case to > > > deallocate the external resource (a file handle in this case but it could > > > be anything with a dispose method). > > > > What is wrong with > > > > let read_first_line file = > > with_open_in file begin fun ch -> > > input_line ch > > end > > Sure. Here's the complete version using combinators as a workaround: > > # let try_finally x f g = > try > let f_x = f x in > g x; > f_x > with e -> > (try g x with _ -> ()); > raise e;; > val try_finally : 'a -> ('a -> 'b) -> ('a -> unit) -> 'b = <fun> > > # let with_open_in file k = > try_finally (open_in file) k close_in;; > val with_open_in : string -> (in_channel -> 'a) -> 'a = <fun> > > # let read_first_line file = > with_open_in file begin fun ch -> > input_line ch > end;; > val read_first_line : string -> string = <fun> > > This is almost exactly what I currently do. > > The "use" binding is syntactic sugar to make it shorter, clearer, more generic > and scale better. > > I'd be more than happy to have anything at all added to improve this though. > Combinators in the stdlib are certainly better than nothing and this is one > of the most complained about noob problems (and lack of functions to read > files)... > > -- > Dr Jon D Harrop, Flying Frog Consultancy Ltd. > http://www.ffconsultancy.com/products/?e > > _______________________________________________ > > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > -- http://till-varoquaux.blogspot.com/ ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 22:05 ` Till Varoquaux @ 2008-01-28 23:10 ` Jon Harrop 0 siblings, 0 replies; 44+ messages in thread From: Jon Harrop @ 2008-01-28 23:10 UTC (permalink / raw) To: Till Varoquaux; +Cc: caml-list On Monday 28 January 2008 22:05:30 Till Varoquaux wrote: > It is worth noting that OCaml is not F#. Objects in OCaml, unlike in > F#, are an advance feature, many users find them hard to grasp and > work with. They also come with a rather high runtime cost. Unless we > have a good reason to do so, I think we should avoid bolstering them > at the very core of the standard library. In this case, the user doesn't see anything at all of the objects. > Don't get me wrong, I think objects have a purpose; and so have > polymorphic variants and recursive modules but great care should be > taken before axing the core library around them. Absolutely. I couldn't agree more. I would say exactly the same of working around the absence of a "try..finally" construct using combinators. The problem is that trivial tasks like reading lines from a file are made much more difficult for newbies because OCaml pulls in so many complicated concepts but this complexity is completely incidental, completely man-made. OCaml is better in the long-run, of course, but many languages solve these common problems much more elegantly than OCaml. > We should keep complicated solutions for complicated problems. Exactly but OCaml is moving in the opposite direction because it is a research project: it is getting more complicated. The community would benefit enormously from lots of simple things like String.fold_right and a "try..finally" construct (I've no preference for those two, I'm just picking them out of hundreds of common ideas) but INRIA cannot afford to do such things themselves and are instead focussing on advanced research concepts like integrating generalized algebraic data types instead. That is great research, but it does not help people to use OCaml as a tool. Hence if the community wants this improved then they must improve it themselves. That means either forking OCaml or starting afresh. > Although is is tempting to propose a solution for IO using phantom > types, objects or whatnot, I still think the Common Lisp approach > (using unwind_protect) is an elaborate enough one to avoid most > problems whilst remaining simple enough to be viable. Yes. The only difference is syntax and I think that is an important difference. > A great solution in F# might not translate as well in OCaml, or it > might not translate at all. I was proposing that we learn from the advancements made in other languages rather than referring to porting F# code to OCaml code. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 15:25 ` Jon Harrop 2008-01-28 16:06 ` Christophe TROESTLER @ 2008-01-28 16:37 ` Brian Hurt 2008-01-28 17:30 ` David Teller 2008-01-28 22:07 ` Arnaud Spiwack 1 sibling, 2 replies; 44+ messages in thread From: Brian Hurt @ 2008-01-28 16:37 UTC (permalink / raw) To: Jon Harrop; +Cc: caml-list [-- Attachment #1: Type: text/plain, Size: 1251 bytes --] Jon Harrop wrote: >On Monday 28 January 2008 14:23:01 you wrote: > > >>Jon Harrop wrote: >> >> >>>There are also many features that I would like to steal from other >>>languages: >>> >>>. The IDisposable interface from .NET and F#'s "use" bindings. >>> >>> >>Is there a reason that Gc.finalise doesn't work? >> >> > >Absolutely: Gc.finalise is only probabilistic whereas IDisposable is >deterministic. IDisposable guarantees deallocation of resources by a certain >point. (This is why you should never use Gc.finalise alone to manage the >collection of external resources!) > >So you write a "use" binding: > > let read_first_line file = > use ch = open_in file in > input_line ch > >and it gets translated into: > > let read_first_line file = > let ch = open_in file in > try input_line ch finally > ch#dispose > > What happens when I write: let broken file = use ch = open_in file in (fun () -> input_line ch) ? Or some other tricky way to let ch escape the scope? Monads strike me as being a better way to do this, but again, we're talking about deep changes to Ocaml. The alternative- wait until the object is garbage collected, depends upon the form of the garbage collector. Brian [-- Attachment #2: Type: text/html, Size: 1774 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 16:37 ` Brian Hurt @ 2008-01-28 17:30 ` David Teller 2008-01-28 20:43 ` Jon Harrop 2008-01-28 21:12 ` Gerd Stolpmann 2008-01-28 22:07 ` Arnaud Spiwack 1 sibling, 2 replies; 44+ messages in thread From: David Teller @ 2008-01-28 17:30 UTC (permalink / raw) To: Brian Hurt; +Cc: Jon Harrop, caml-list A few things here: * we can provide two libraries, one with monads and one without, and let users choose whichever they use * it's quite easy to build a generic resource-disposal facility on par with 'use' or 'try...finally...', even without resorting to Camlp4 -- I leave that as an exercise to the reader or to the time when we decide to start an OSR thread on that issue * in any case, there's no need to change OCaml itself to do any of these, or even to add a IDisposable interface and an object-oriented hierarchy, only the distribution. Let me remind you that the initial topic of the thread was to agree upon a discussion process, not to debate on a specific issue. So do we agree on the OSR process as I've described it or does anyone believe we should first change it ? Cheers, David On Mon, 2008-01-28 at 11:37 -0500, Brian Hurt wrote: > Monads strike me as being a better way to do this, but again, we're talking about deep changes to Ocaml. The alternative- wait until the object is garbage collected, depends upon the form of the garbage collector. -- David Teller Security of Distributed Systems http://www.univ-orleans.fr/lifo/Members/David.Teller Angry researcher: French Universities need reforms, but the LRU act brings liquidations. ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 17:30 ` David Teller @ 2008-01-28 20:43 ` Jon Harrop 2008-01-28 21:12 ` Gerd Stolpmann 1 sibling, 0 replies; 44+ messages in thread From: Jon Harrop @ 2008-01-28 20:43 UTC (permalink / raw) To: David Teller; +Cc: Brian Hurt, caml-list On Monday 28 January 2008 17:30:40 David Teller wrote: > A few things here: > * we can provide two libraries, one with monads and one without, and let > users choose whichever they use Why not provide both? After all, people are suggesting pulling in lots of esoteric libraries like Extlib... > * it's quite easy to build a generic resource-disposal facility on par > with 'use' or 'try...finally...', even without resorting to Camlp4 -- I > leave that as an exercise to the reader or to the time when we decide to > start an OSR thread on that issue Combinators are certainly better than nothing and easier to implement (because they don't touch the language) but they can't compete with syntactic sugar for brevity and clarity, of course. > * in any case, there's no need to change OCaml itself to do any of > these, or even to add a IDisposable interface and an object-oriented > hierarchy, only the distribution. This should be in the stdlib (I don't know if that counts as "changing OCaml"). > Let me remind you that the initial topic of the thread was to agree upon > a discussion process, not to debate on a specific issue. Agreed. We need a more appropriate forum. I think a Wiki would be a great breeding ground for proposals. > So do we agree on the OSR process as I've described it or does anyone > believe we should first change it ? I believe it is a good idea, yes. :-) -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 17:30 ` David Teller 2008-01-28 20:43 ` Jon Harrop @ 2008-01-28 21:12 ` Gerd Stolpmann 2008-01-28 21:39 ` Jon Harrop 2008-01-28 21:43 ` [Caml-list] " Dario Teixeira 1 sibling, 2 replies; 44+ messages in thread From: Gerd Stolpmann @ 2008-01-28 21:12 UTC (permalink / raw) To: David Teller; +Cc: Brian Hurt, caml-list Am Montag, den 28.01.2008, 18:30 +0100 schrieb David Teller: > So do we agree on the OSR process as I've described it or does anyone > believe we should first change it ? Well, the discussion has already taken a strange direction, and this might have to do with ... hhmmm ... some missing guidance. We first should make clear what we are talking about, and then there is the question of how to come to an agreement. First of all, I think OSR can only be about giving users more choice. For example, there are several XML parsers, and all use a different representation of XML. I think this is basically good, because every representation has its pros and cons, and the users can choose among several options. But it would be even better if all XML parsers agreed on an _additional_ representation they share, so the user has the additional option to use the common XML representation, which makes it very easy to switch between several parsers (e.g. sometimes the fastest parser is preferred, and sometimes the parser with the best error messages). I think this is the area for a user-driven process, because there are a lot of views on such practical problems, and the result will profit from knowing all of them. As it was mentioned, we cannot modify OCaml itself. We can ask here and there for changes, e.g. when core APIs could be improved so user add-ons have an easier life. But the OCaml language itself is only a matter of INRIA. It is still a cathedral, not a bazaar (I don't see any change here - except that the cathedral is now completely built). So any discussions about changing the language (try finally) or the stdlib are off-topic. What we can do is to improve the infrastructure around the OCaml core. The example of the XML parsers shows that there is a lot to do (although these parsers might not be the most urgent question). I don't like it to talk about things others would have to implement, so I think OSR is mostly addressed at library/tool authors. Of course, it is important to also hear opinions from the users of the libraries, but I think the implementers should finally decide on what they recommend. We should avoid to set standards that are ignored. As an example of OSR, there is the I/O channels effort: http://www.ocaml-programming.de/rec/IO-Classes.html This is basically an agreement between library implementers. As there were only 3 parties involved, it was a good and fruitful debate, and I think the result is convincing. Most importantly, the recommendation was implemented, and the users have finally more options. E.g. they can now transform a Camomile channel by an OCamlnet channel filter. Of course, OSR could also be about new libraries, but I think this is less important. Everybody can create a new library anyway, so there might be no point in discussing that. What I don't like to discuss is everything in the "what is good style" area. This is fruitless, because there are real reasons for preferring different coding styles to solve different problems, and discussing that will only lead to flame wars. Gerd -- ------------------------------------------------------------ Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany gerd@gerd-stolpmann.de http://www.gerd-stolpmann.de Phone: +49-6151-153855 Fax: +49-6151-997714 ------------------------------------------------------------ ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 21:12 ` Gerd Stolpmann @ 2008-01-28 21:39 ` Jon Harrop 2008-01-29 16:49 ` Edgar Friendly 2008-01-28 21:43 ` [Caml-list] " Dario Teixeira 1 sibling, 1 reply; 44+ messages in thread From: Jon Harrop @ 2008-01-28 21:39 UTC (permalink / raw) To: caml-list On Monday 28 January 2008 21:12:08 Gerd Stolpmann wrote: > As it was mentioned, we cannot modify OCaml itself. We can ask here and > there for changes, e.g. when core APIs could be improved so user add-ons > have an easier life. But the OCaml language itself is only a matter of > INRIA. It is still a cathedral, not a bazaar (I don't see any change > here - except that the cathedral is now completely built). So any > discussions about changing the language (try finally) or the stdlib are > off-topic. Can we clear up once and for all whether or not we can improve the stdlib? -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 21:39 ` Jon Harrop @ 2008-01-29 16:49 ` Edgar Friendly 2008-01-30 8:52 ` Sylvain Le Gall 0 siblings, 1 reply; 44+ messages in thread From: Edgar Friendly @ 2008-01-29 16:49 UTC (permalink / raw) To: Jon Harrop; +Cc: caml-list Jon Harrop wrote: > On Monday 28 January 2008 21:12:08 Gerd Stolpmann wrote: >> As it was mentioned, we cannot modify OCaml itself. We can ask here and >> there for changes, e.g. when core APIs could be improved so user add-ons >> have an easier life. But the OCaml language itself is only a matter of >> INRIA. It is still a cathedral, not a bazaar (I don't see any change >> here - except that the cathedral is now completely built). So any >> discussions about changing the language (try finally) or the stdlib are >> off-topic. > > Can we clear up once and for all whether or not we can improve the stdlib? > I wish I could answer your question authoritatively. The best I can tell from the situation comes to this: 1) The community now has some permission to make a distribution out of the OCaml code created at INRIA. 2) This distribution should (Must?) not break backwards compatibility with the currently official, INRIA-blessed distro. The way I interpret these two gives me/us limited ability to improve the stdlib. One question for the community involves both directions of migration. #2 insists that INRIA-OCaml programs have the same semantics (including triggering the same warts of the language) under Community-OCaml. i.e. taking a program compiled under INRIA-OCaml and compiling it under Community-OCaml should "just work". The reverse -- going from Community-OCaml to INRIA-OCaml -- isn't guaranteed to work in the same way, *but* the question comes: how much work must the user spend to translate from Community-OCaml to INRIA-OCaml. Messing with the type system has many pitfalls, but not least of which comes a (likely) very difficult conversion to INRIA-OCaml involving probably complex source-code transformation. Many people seem to put forward improvement ideas for OCaml that stay within the realm of including more libraries in the Community-OCaml distribution, and having efforts to standardize interfaces of these libraries. This kind of change seems to have minimal conversion difficulty to INRIA-OCaml (just install the needed libraries). In between these extremes sits things like changes to the stdlib and extensions to the language. I hope that we can make changes to both of these. stdlib changes should only extend the current library (in my mind this includes changing implementations of existing functions, as long as the semantics stay identical), but to ease compatibility with the INRIA-OCaml system, (some of) these changes could get implemented in such a way that with a small amount of additional work (opening a "Community.Pervasives" module that includes the new changes). Changes to the compiler such as try..finally could get put in to the community distro, but with a "close-enough" camlp4 filter to transform programs using them into programs that would work under the current system. (maybe not as efficiently, maybe with horrible error messages) E. ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [OSR] OCaml Standard Recommandation Process 2008-01-29 16:49 ` Edgar Friendly @ 2008-01-30 8:52 ` Sylvain Le Gall 2008-01-30 10:02 ` [Caml-list] " Jon Harrop 2008-01-30 12:12 ` Vincent Hanquez 0 siblings, 2 replies; 44+ messages in thread From: Sylvain Le Gall @ 2008-01-30 8:52 UTC (permalink / raw) To: caml-list On 29-01-2008, Edgar Friendly <thelema314@gmail.com> wrote: > Jon Harrop wrote: >> On Monday 28 January 2008 21:12:08 Gerd Stolpmann wrote: >>> As it was mentioned, we cannot modify OCaml itself. We can ask here and >>> there for changes, e.g. when core APIs could be improved so user add-ons >>> have an easier life. But the OCaml language itself is only a matter of >>> INRIA. It is still a cathedral, not a bazaar (I don't see any change >>> here - except that the cathedral is now completely built). So any >>> discussions about changing the language (try finally) or the stdlib are >>> off-topic. >> >> Can we clear up once and for all whether or not we can improve the stdlib? >> > > I wish I could answer your question authoritatively. The best I can > tell from the situation comes to this: > > 1) The community now has some permission to make a distribution out of > the OCaml code created at INRIA. > > 2) This distribution should (Must?) not break backwards compatibility > with the currently official, INRIA-blessed distro. > > The way I interpret these two gives me/us limited ability to improve the > stdlib. One question for the community involves both directions of > migration. #2 insists that INRIA-OCaml programs have the same semantics > (including triggering the same warts of the language) under > Community-OCaml. i.e. taking a program compiled under INRIA-OCaml and > compiling it under Community-OCaml should "just work". The reverse -- > going from Community-OCaml to INRIA-OCaml -- isn't guaranteed to work in > the same way, *but* the question comes: how much work must the user > spend to translate from Community-OCaml to INRIA-OCaml. [...] I am not sure that i understand you. "Community distribution" should just be "INRIA-Ocaml" + some others libraries. I am really not sure that anyone talk about anything else. In other word, what have been talked about is that ocaml INRIA distribution will stay as is, but people can take it to put it into the center of a larger distribution. If i read you well, you are thinking that we can change things inside ocaml INRIA distribution. That is not true. And anyway, if such a thing should happen, you will see a change in INRIA license, that will permit you to do so. For now, this is not the case. Sorry if i didn't catch your point. Regards, Sylvain Le Gall ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] Re: [OSR] OCaml Standard Recommandation Process 2008-01-30 8:52 ` Sylvain Le Gall @ 2008-01-30 10:02 ` Jon Harrop 2008-01-30 12:12 ` Vincent Hanquez 1 sibling, 0 replies; 44+ messages in thread From: Jon Harrop @ 2008-01-30 10:02 UTC (permalink / raw) To: caml-list On Wednesday 30 January 2008 08:52:08 Sylvain Le Gall wrote: > I am not sure that i understand you. "Community distribution" should > just be "INRIA-Ocaml" + some others libraries. That is the current situation. > I am really not sure that anyone talk about anything else. Several people (including me) have been talking about other ideas because we can't fix OCaml without leaving that model. > In other word, what have been talked about is that ocaml INRIA distribution > will stay as is, but people can take it to put it into the center of a > larger distribution. That is the current situation. The problem is that INRIA's core OCaml distribution has many issues that we could address. To address them, we must create a new upstream that the community can maintain. > If i read you well, you are thinking that we can change things inside > ocaml INRIA distribution. That is not true. Which is why forking is our only option. > And anyway, if such a thing should happen, you will see a change in INRIA > license, that will permit you to do so. For now, this is not the case. INRIA cannot accept our contributions. -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] Re: [OSR] OCaml Standard Recommandation Process 2008-01-30 8:52 ` Sylvain Le Gall 2008-01-30 10:02 ` [Caml-list] " Jon Harrop @ 2008-01-30 12:12 ` Vincent Hanquez 1 sibling, 0 replies; 44+ messages in thread From: Vincent Hanquez @ 2008-01-30 12:12 UTC (permalink / raw) To: Sylvain Le Gall; +Cc: caml-list On Wed, Jan 30, 2008 at 08:52:08AM +0000, Sylvain Le Gall wrote: > I am not sure that i understand you. "Community distribution" should > just be "INRIA-Ocaml" + some others libraries. I am really not sure that > anyone talk about anything else. In other word, what have been talked > about is that ocaml INRIA distribution will stay as is, but people can > take it to put it into the center of a larger distribution. > > If i read you well, you are thinking that we can change things inside > ocaml INRIA distribution. That is not true. And anyway, if such a thing > should happen, you will see a change in INRIA license, that will permit > you to do so. For now, this is not the case. to which license are you refering to here ? most of the thing i've just look into ocaml-3.10 stdlib are LGPL. -- Vincent Hanquez ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 21:12 ` Gerd Stolpmann 2008-01-28 21:39 ` Jon Harrop @ 2008-01-28 21:43 ` Dario Teixeira 2008-01-29 7:59 ` Francois Pottier 1 sibling, 1 reply; 44+ messages in thread From: Dario Teixeira @ 2008-01-28 21:43 UTC (permalink / raw) To: Gerd Stolpmann, David Teller; +Cc: caml-list > What we can do is to improve the infrastructure around the OCaml core. > The example of the XML parsers shows that there is a lot to do (although > these parsers might not be the most urgent question). I don't like it to > talk about things others would have to implement, so I think OSR is > mostly addressed at library/tool authors. Of course, it is important to > also hear opinions from the users of the libraries, but I think the > implementers should finally decide on what they recommend. We should > avoid to set standards that are ignored. Hi, Another example that is probably so obvious that it almost doesn't need mentioning is the incompatibility of the lexer interface between ulex and Ocamlyacc/Menhir. Either we define a common lexer interface that everyone can migrate to, or at least Ocamlyacc and Menhir could adopt Dypgen's solution and allow the user to specify the lexer's signature. The current situation is just absurd. Cheers, Dario ___________________________________________________________ Yahoo! Answers - Got a question? Someone out there knows the answer. Try it now. http://uk.answers.yahoo.com/ ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 21:43 ` [Caml-list] " Dario Teixeira @ 2008-01-29 7:59 ` Francois Pottier 0 siblings, 0 replies; 44+ messages in thread From: Francois Pottier @ 2008-01-29 7:59 UTC (permalink / raw) To: Dario Teixeira; +Cc: caml-list Hello, On Mon, Jan 28, 2008 at 09:43:55PM +0000, Dario Teixeira wrote: > Another example that is probably so obvious that it almost doesn't need > mentioning is the incompatibility of the lexer interface between ulex > and Ocamlyacc/Menhir. It would be possible for menhir to follow dypgen and allow the parser to be parameterized over a lexer signature. I'll add that to the todo list. In the meantime, another possibility would be to write a stub function that makes ulex (or whatever lexer you are using) artificially look like an ocamllex lexer. If I am not mistaken, all that is needed is to provide a function of type Lexing.lexbuf -> token, which must update the fields lex_start_p and lex_curr_p as a side effect. -- François Pottier Francois.Pottier@inria.fr http://cristal.inria.fr/~fpottier/ ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-28 16:37 ` Brian Hurt 2008-01-28 17:30 ` David Teller @ 2008-01-28 22:07 ` Arnaud Spiwack 1 sibling, 0 replies; 44+ messages in thread From: Arnaud Spiwack @ 2008-01-28 22:07 UTC (permalink / raw) Cc: caml-list > > Monads strike me as being a better way to do this, but again, we're > talking about deep changes to Ocaml. Monads are no more than a pair of functions (there are four in Haskell presentation of these, but two of them can be defined automatically). They not only exist by essence, but there also is a camlp4 extension (rather short actually) which gives them a nice notation looking : perform p <-- e; q <-- f; return a You can specify a module name after the "perform" keyword when using several monads. This camlp4 extension is pa_monad (authored by Oleg Kiselyov, Lydia E. van Dijk, and Jacques Carette), it works both with camlp4 3.10 and previous version by the way (plus camlp5 I guess). Actually, there are a couple of developpement that use monads : Jérôme Vouillon's Lwt (lightweight, monadic, cooperative threads) are a monad. On a more personnal note, my current developpement (somewhere deep inside the code of the proof assistant Coq) uses a monad as well. The downside is that sometimes monad might be slower than other approaches (there are more closure built than necessary). At least in the current runtime and compiler. But I guess we're going (again) off topic... We probably have to start having wiki discussions ;) . Arnaud Spiwack ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 13:23 [OSR] OCaml Standard Recommandation Process David Teller 2008-01-27 13:52 ` [Caml-list] " Paolo Donadeo 2008-01-27 14:24 ` Yaron Minsky @ 2008-01-27 14:36 ` Michaël Grünewald 2008-01-27 15:10 ` Dario Teixeira ` (2 subsequent siblings) 5 siblings, 0 replies; 44+ messages in thread From: Michaël Grünewald @ 2008-01-27 14:36 UTC (permalink / raw) To: David Teller; +Cc: OCaml David Teller <David.Teller@univ-orleans.fr> writes: > Dear list, > > As I have mentioned in my previous message, during the OCaml Developer > Days, the INRIA team has made clear that, among other things, the > community is essentially in charge of recommending best practices, > standards, etc. A candidate name has been suggested: "OSR", for "OCaml > Standard Recommandations." > > While we already have a few tools for this kind of discussions, (I'm > thinking about the current mailing-list and the Cocan Wiki), at the > moment, we are lacking organisation and a way of committing to a > decision. > > Let me suggest the following process: > * anyone on this mailing-list may ask for or suggest best practises -- > to do so, please put [OSR] in the header of your e-mail > * after some debate, if one or more solutions have emerged, we put these > solutions on the appropriate page of the Cocan Wiki, with summaries of > pros and cons and an official space for voting and suggesting future > improvements > * if the vote proves conclusive, we move the chosen solution from the > voting stage to some page on that Wiki, say "recommended practises." > > Does this seem an acceptable method ? The method seems acceptable. It could be very stimulating to arrange a weekly appointment on the IRC (or anything else), perspectives and projects could born thanks to the spontaneity of this communication medium. It could also turn out useful to give volunteers to list themselves somewhere, so that people having a project can look there to find a helping hand. -- Michaël ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 13:23 [OSR] OCaml Standard Recommandation Process David Teller ` (2 preceding siblings ...) 2008-01-27 14:36 ` Michaël Grünewald @ 2008-01-27 15:10 ` Dario Teixeira 2008-01-28 13:38 ` Sylvain Le Gall 2008-01-28 0:23 ` [Caml-list] " Oliver Bandel 2008-01-30 9:43 ` Sylvain Le Gall 5 siblings, 1 reply; 44+ messages in thread From: Dario Teixeira @ 2008-01-27 15:10 UTC (permalink / raw) To: David Teller, OCaml Hallo, > As I have mentioned in my previous message, during the OCaml Developer > Days, the INRIA team has made clear that, among other things, the > community is essentially in charge of recommending best practices, > standards, etc. A candidate name has been suggested: "OSR", for "OCaml > Standard Recommandations." I'm looking forward to hearing more about the results from yesterday's meeting (are there minutes?). In any case, the OSR seems like a very reasonable process. I'll start with one thorn: the Unicode situation. Everyone plus their mother defines some custom Unicode module. ExtLib has one, Camomile has obviously a few, Ocamlnet has its own thing, etc, etc. It would make sense to have instead a fairly simple "Unicode" package that defined the basic data type, and then have all these libs use that one. I bet this was discussed yesterday -- what was the conclusion? Cheers, Dario Teixeira __________________________________________________________ Sent from Yahoo! Mail - a smarter inbox http://uk.mail.yahoo.com ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [OSR] OCaml Standard Recommandation Process 2008-01-27 15:10 ` Dario Teixeira @ 2008-01-28 13:38 ` Sylvain Le Gall 2008-01-28 13:52 ` [Caml-list] " David Teller 0 siblings, 1 reply; 44+ messages in thread From: Sylvain Le Gall @ 2008-01-28 13:38 UTC (permalink / raw) To: caml-list On 27-01-2008, Dario Teixeira <darioteixeira@yahoo.com> wrote: > Hallo, > >> As I have mentioned in my previous message, during the OCaml Developer >> Days, the INRIA team has made clear that, among other things, the >> community is essentially in charge of recommending best practices, >> standards, etc. A candidate name has been suggested: "OSR", for "OCaml >> Standard Recommandations." > > I'm looking forward to hearing more about the results from yesterday's > meeting (are there minutes?). In any case, the OSR seems like a very > reasonable process. > > I'll start with one thorn: the Unicode situation. Everyone plus their > mother defines some custom Unicode module. ExtLib has one, Camomile > has obviously a few, Ocamlnet has its own thing, etc, etc. It would make > sense to have instead a fairly simple "Unicode" package that defined the > basic data type, and then have all these libs use that one. I bet this > was discussed yesterday -- what was the conclusion? > You can already read every presentations on the website (.pdf and .odp). At one time in the future, i will also put the video of every talks somewhere (YouTube?) and a link on the wiki page. http://wiki.cocan.org/events/europe/ocamlmeetingparis2008 Regards, Sylvain Le Gall ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] Re: [OSR] OCaml Standard Recommandation Process 2008-01-28 13:38 ` Sylvain Le Gall @ 2008-01-28 13:52 ` David Teller 0 siblings, 0 replies; 44+ messages in thread From: David Teller @ 2008-01-28 13:52 UTC (permalink / raw) To: Sylvain Le Gall; +Cc: caml-list On Mon, 2008-01-28 at 13:38 +0000, Sylvain Le Gall wrote: > It would make > > sense to have instead a fairly simple "Unicode" package that defined the > > basic data type, and then have all these libs use that one. I bet this > > was discussed yesterday -- what was the conclusion? > > The conclusion was essentially "let's create an OCaml Standard Recommendation Process and discuss Unicode as part of that process" :) Cheers, David ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] [OSR] OCaml Standard Recommandation Process 2008-01-27 13:23 [OSR] OCaml Standard Recommandation Process David Teller ` (3 preceding siblings ...) 2008-01-27 15:10 ` Dario Teixeira @ 2008-01-28 0:23 ` Oliver Bandel 2008-01-30 9:43 ` Sylvain Le Gall 5 siblings, 0 replies; 44+ messages in thread From: Oliver Bandel @ 2008-01-28 0:23 UTC (permalink / raw) To: OCaml Hello, Zitat von David Teller <David.Teller@univ-orleans.fr>: > Dear list, > > As I have mentioned in my previous message, during the OCaml > Developer > Days, the INRIA team has made clear that, among other things, the > community is essentially in charge of recommending best practices, > standards, etc. A candidate name has been suggested: "OSR", for > "OCaml > Standard Recommandations." [...] What does that mean? What means "best practices" here? I think it will be more than just recommendation of best code-indentation / coding rules-/Style. Possibly things like how to do the best way in e.g. paketizing things? (CPAN-like, I remember perl -MCPAN ... which IMHO is one of Perl's plus's.) > > While we already have a few tools for this kind of discussions, (I'm > thinking about the current mailing-list and the Cocan Wiki), at the > moment, we are lacking organisation and a way of committing to a > decision. ...hmhhh... can please elaborate more on the above stuff? Thanks, Oliver ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [OSR] OCaml Standard Recommandation Process 2008-01-27 13:23 [OSR] OCaml Standard Recommandation Process David Teller ` (4 preceding siblings ...) 2008-01-28 0:23 ` [Caml-list] " Oliver Bandel @ 2008-01-30 9:43 ` Sylvain Le Gall 2008-01-30 20:25 ` [Caml-list] " blue storm 5 siblings, 1 reply; 44+ messages in thread From: Sylvain Le Gall @ 2008-01-30 9:43 UTC (permalink / raw) To: caml-list On 27-01-2008, David Teller <David.Teller@univ-orleans.fr> wrote: > Does this seem an acceptable method ? > Yes, but we should add some more rules: * designate 1 person that will sync discussion and OSR on the wiki (maybe the one who start the thread) * limit the time of disscussion (1 month) * limit the time of vote (1 week) If the time limit is reached, the current text (as sync by the person in charge on the wiki) is put on vote: <mail that should be sent> Subject: [OSR] XML processing -- Read the OSR: http://wiki.cocan.org/osr/XMLProcessing. Choice: [ ] Accept the OSR [ ] Further discussion Please classify this choices (you should put 1 to the best choice). </mail that should be sent> We should find a way to allow only one vote per person. After one week of voting, choices are classified (Methode Condorcet) and the best choice win. If the choice is "Further discussion", the discussion should last another month. This way, you prevent endless discussion (non converging one) by a final decision after one month. Regards, Sylvain Le Gall ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] Re: [OSR] OCaml Standard Recommandation Process 2008-01-30 9:43 ` Sylvain Le Gall @ 2008-01-30 20:25 ` blue storm 2008-01-30 20:49 ` Sylvain Le Gall 0 siblings, 1 reply; 44+ messages in thread From: blue storm @ 2008-01-30 20:25 UTC (permalink / raw) To: Sylvain Le Gall; +Cc: caml-list > Yes, but we should add some more rules: > * designate 1 person that will sync discussion and OSR on the wiki > (maybe the one who start the thread) > * limit the time of disscussion (1 month) > * limit the time of vote (1 week) > > If the time limit is reached, the current text (as sync by the person in > charge on the wiki) is put on vote: > <mail that should be sent> > Subject: [OSR] XML processing -- > Read the OSR: http://wiki.cocan.org/osr/XMLProcessing. > > Choice: > [ ] Accept the OSR > [ ] Further discussion > > Please classify this choices (you should put 1 to the best choice). > </mail that should be sent> > > We should find a way to allow only one vote per person. > > After one week of voting, choices are classified (Methode Condorcet) and > the best choice win. > > If the choice is "Further discussion", the discussion should last > another month. > > This way, you prevent endless discussion (non converging one) by a final > decision after one month. > > Regards, > Sylvain Le Gall I'm sorry, but this seems far too complicated to me. You jokingly admitted that Debian people tend to have "bureaucratic" methods. Now i can see what you mean :) I'm not fond of the "let's vote" idea. I think most discussions can be sorted out by reaching a consensus, wich is a vaguely defined idea, but works very well in practice. 1) We have seen no need for such a "political" structure for now. What are you trying to fix with such a method ? The only real thing we have now is the I/O specification ( http://www.ocaml-programming.de/rec/IO-Classes.html ), wich are real, emerged from developpers discussion, and certainly didn't required a "community" voting process. 2) I can see problems in your "constitution" draft. To fix them you'd have to add even more bureaucratic definitions. As an example : who vote ? Anybody ? "Registered members" ? In the XML standardization effort, who would vote ? How could someone who never use XML vote, and have the same "power" than a ocaml XML library developper ? This is nonsense. You could restrict the voting process to the XML developpers only, but then you'd have other problems (and XML libs users ? etc.). Do we really need to vote ? I don't think so. I even think that putting such rigid rules too early could harm the process : a vote that is perceived as meaningless by most (and each time you've got more than two choices, there is a chance that the majority disagree with the result) is worse than no vote at all : you've got a meaningless "standard". I suggest we keep to the simple principles that have worked well in other projects, for a very long time : - try to resolve problems by consensus, not vote (although vote in specific situations is of course possible) - generally, let those who do the work decide. If one disagrees, he can works up a better solution, instead of starting an endless "policital" debate. As you said earlier : > That is "keep it simple and stupide" (KISS)! That is great, easy and direct. > I like it. ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [OSR] OCaml Standard Recommandation Process 2008-01-30 20:25 ` [Caml-list] " blue storm @ 2008-01-30 20:49 ` Sylvain Le Gall 2008-01-30 20:54 ` [Caml-list] " Eric Cooper 0 siblings, 1 reply; 44+ messages in thread From: Sylvain Le Gall @ 2008-01-30 20:49 UTC (permalink / raw) To: caml-list On 30-01-2008, blue storm <bluestorm.dylc@gmail.com> wrote: >> Yes, but we should add some more rules: >> * designate 1 person that will sync discussion and OSR on the wiki >> (maybe the one who start the thread) >> * limit the time of disscussion (1 month) >> * limit the time of vote (1 week) >> >> If the time limit is reached, the current text (as sync by the person in >> charge on the wiki) is put on vote: >> <mail that should be sent> >> Subject: [OSR] XML processing -- >> Read the OSR: http://wiki.cocan.org/osr/XMLProcessing. >> >> Choice: >> [ ] Accept the OSR >> [ ] Further discussion >> >> Please classify this choices (you should put 1 to the best choice). >> </mail that should be sent> >> >> We should find a way to allow only one vote per person. >> >> After one week of voting, choices are classified (Methode Condorcet) and >> the best choice win. >> >> If the choice is "Further discussion", the discussion should last >> another month. >> >> This way, you prevent endless discussion (non converging one) by a final >> decision after one month. >> >> Regards, >> Sylvain Le Gall > > I'm sorry, but this seems far too complicated to me. > You jokingly admitted that Debian people tend to have "bureaucratic" > methods. Now i can see what you mean :) > > I'm not fond of the "let's vote" idea. I think most discussions can be > sorted out by reaching a consensus, wich is a vaguely defined idea, > but works very well in practice. > The draft (ideas) i send is almost a copy of the Debian way of doing... I am caught ;-) This is just a suggestion. I am only afraid that some point of view never converge, and i don't like the idea of things being blocked by a minority (in particular some people tends to post more than necessary -- just as me today, but they are not representative to the real problem...) Regards, Sylvain Le Gall ^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [Caml-list] Re: [OSR] OCaml Standard Recommandation Process 2008-01-30 20:49 ` Sylvain Le Gall @ 2008-01-30 20:54 ` Eric Cooper 0 siblings, 0 replies; 44+ messages in thread From: Eric Cooper @ 2008-01-30 20:54 UTC (permalink / raw) To: caml-list On Wed, Jan 30, 2008 at 08:49:49PM +0000, Sylvain Le Gall wrote: > On 30-01-2008, blue storm <bluestorm.dylc@gmail.com> wrote: > > I'm not fond of the "let's vote" idea. I think most discussions can be > > sorted out by reaching a consensus, wich is a vaguely defined idea, > > but works very well in practice. > [...] > This is just a suggestion. I am only afraid that some point of view > never converge, and i don't like the idea of things being blocked by a > minority (in particular some people tends to post more than necessary -- > just as me today, but they are not representative to the real > problem...) I like the old Internet Engineering Task Force motto: "We believe in rough consensus and working code". -- Eric Cooper e c c @ c m u . e d u ^ permalink raw reply [flat|nested] 44+ messages in thread
end of thread, other threads:[~2008-01-30 20:54 UTC | newest] Thread overview: 44+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-01-27 13:23 [OSR] OCaml Standard Recommandation Process David Teller 2008-01-27 13:52 ` [Caml-list] " Paolo Donadeo 2008-01-27 14:24 ` Yaron Minsky 2008-01-27 19:07 ` David Teller 2008-01-27 21:07 ` Jon Harrop 2008-01-27 21:47 ` Yaron Minsky 2008-01-28 11:06 ` David Teller 2008-01-28 12:04 ` Jon Harrop 2008-01-28 12:31 ` David Teller 2008-01-28 14:23 ` Brian Hurt 2008-01-28 15:15 ` Loup Vaillant 2008-01-28 15:40 ` Brian Hurt 2008-01-28 19:46 ` Jon Harrop 2008-01-28 15:25 ` Jon Harrop 2008-01-28 16:06 ` Christophe TROESTLER 2008-01-28 16:20 ` Nicolas Pouillard 2008-01-28 16:45 ` Christophe TROESTLER 2008-01-28 16:51 ` Olivier Andrieu 2008-01-28 19:58 ` Jon Harrop 2008-01-29 7:51 ` Gordon Henriksen 2008-01-28 20:49 ` Jon Harrop 2008-01-28 22:05 ` Till Varoquaux 2008-01-28 23:10 ` Jon Harrop 2008-01-28 16:37 ` Brian Hurt 2008-01-28 17:30 ` David Teller 2008-01-28 20:43 ` Jon Harrop 2008-01-28 21:12 ` Gerd Stolpmann 2008-01-28 21:39 ` Jon Harrop 2008-01-29 16:49 ` Edgar Friendly 2008-01-30 8:52 ` Sylvain Le Gall 2008-01-30 10:02 ` [Caml-list] " Jon Harrop 2008-01-30 12:12 ` Vincent Hanquez 2008-01-28 21:43 ` [Caml-list] " Dario Teixeira 2008-01-29 7:59 ` Francois Pottier 2008-01-28 22:07 ` Arnaud Spiwack 2008-01-27 14:36 ` Michaël Grünewald 2008-01-27 15:10 ` Dario Teixeira 2008-01-28 13:38 ` Sylvain Le Gall 2008-01-28 13:52 ` [Caml-list] " David Teller 2008-01-28 0:23 ` [Caml-list] " Oliver Bandel 2008-01-30 9:43 ` Sylvain Le Gall 2008-01-30 20:25 ` [Caml-list] " blue storm 2008-01-30 20:49 ` Sylvain Le Gall 2008-01-30 20:54 ` [Caml-list] " Eric Cooper
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox