[ocaml-platform] Unique file names

Alain Frisch alain.frisch at lexifi.com
Tue Mar 5 16:07:34 GMT 2013


On 03/05/2013 03:06 PM, Yaron Minsky wrote:
> On Tue, Mar 5, 2013 at 5:10 AM, Alain Frisch <alain.frisch at lexifi.com> wrote:
>>   - You need to adapt all tools (ocamldep, ocamldoc and also third party
>> tools), and this might change their interface (e.g. for ocamldoc, you will
>> need to specify for each source file what's its implicit prefix).
>
> I agree that this would have to be solved, though I think this is
> worth doing.  You'd need some kind of lookup from the easy to find
> file (e.g., core_list.cmi) to the hard-to-find file (list.ml).

Do you agree that this requires not only a lookup algorithm, but also a 
way to specify to ocamldoc, file per file on its command-line, which 
"prefix" to use?  At least this is required if you want to allow using 
ocamldoc to generate a single documentation for module spanning several 
"namespaces" at once.

> This doesn't seem like much of an issue, since you can feel free to
> simply use unique file-names if you'd like to.  This is merely an
> option for developers who want to organize things in this way.  In the
> end, I think it won't matter most of the time, because I hope that as
> we develop better build tools, they will handle this stuff
> automatically.
 > But if people want, they can name things uniquely and use simple
 > Makefiles.

Again, I'm going to illustrate that we do crazy and non-standard stuffs 
here, but the way we integrate third-party libraries into our project is 
to take their source files and create an very simple OMakefile (usually 
2 or 3 lines) to integrate them in our global tree.  I understand this 
is a rather uncommon scenario, but it is a useful one, at least in our 
context because (i) we want everything to be under the control of our 
revision system so that we can very simply extract a full source tree 
corresponding to a distributed version of our application; (ii) we 
regularly rebuild the whole tree (e.g. as soon as we do a release, we 
recompile everything from sources) and being able to benefit from global 
parallel build is nice; (iii) released build specifications don't always 
work nicely under Windows and/or don't allow to inject custom 
compilation flags (e.g. to enable new warnings); (iv) having everything 
under the control of the same build system makes it easy to insert debug 
statement in the middle of a library and recompile (only) the necessary 
dependencies; (v) we don't use ocamlfind but recreated something similar 
within omake, but this assumes that everything is under the control of 
omake.

Anyway, I'm not trying to convince anyone else that this is a good 
strategy, only that it is currently in use in a least one non-trivial 
code base.  So the assumption that the choice of filenames for source 
code is purely on the developer side does not completely hold (I admit 
it will not be very difficult to rename files upon import if we need to).

>>   - You can deploy compiled files for several libraries in the same
>> directory, but not the corresponding .mli files (for documentation purpose).
>
> I think this is fairly poor practice.  Directory structures are useful
> anyway, and one might as well encourage their use.

I'm not claiming this is good practice in general (and I don't think we 
do that, specifically), but people should realize that some proposals 
will put pressure on many tools and will disallow some usage scenario 
currently in use and which they are not even aware of.  Just as an 
example, we have developed a simple IDE for OCaml code to be embedded in 
our application; it assumes that ocamldoc has been applied at once to 
all distributed libraries and that all the resulting HTML files are in a 
single directory.  I guess this is a rather non-standard use of 
ocamldoc, but it works quite well for us.  We will update our IDE and 
our use of ocamldoc if required, but when evaluating the respective pros 
and cons of various proposals, the cost of adapting all existing tools / 
usage scenarios should not be neglected (and people have little way to 
know about the amount of work required for those adaptations).


Alain


More information about the Platform mailing list