Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / src / MLtonLibraryProject.adoc
CommitLineData
7f918cf1
CE
1MLtonLibraryProject
2===================
3
4We have a https://github.com/MLton/mltonlib[MLton Library repository]
5that is intended to collect libraries.
6
7=====
8 https://github.com/MLton/mltonlib
9=====
10
11Libraries are kept in the `master` branch, and are grouped according
12to domain name, in the Java package style. For example,
13<:VesaKarvonen:>, who works at `ssh.com`, has been putting code at:
14
15=====
16 https://github.com/MLton/mltonlib/tree/master/com/ssh
17=====
18
19<:StephenWeeks:>, owning `sweeks.com`, has been putting code at:
20
21=====
22 https://github.com/MLton/mltonlib/tree/master/com/sweeks
23=====
24
25A "library" is a subdirectory of some such directory. For example,
26Stephen's basis-library replacement library is at
27
28=====
29 https://github.com/MLton/mltonlib/tree/master/com/sweeks/basic
30=====
31
32We use "transparent per-library branching" to handle library
33versioning. Each library has an "unstable" subdirectory in which work
34happens. When one is happy with a library, one tags it by copying it
35to a stable version directory. Stable libraries are immutable -- when
36one refers to a stable library, one always gets exactly the same code.
37No one has actually made a stable library yet, but, when I'm ready to
38tag my library, I was thinking that I would do something like copying
39
40=====
41 https://github.com/MLton/mltonlib/tree/master/com/sweeks/basic/unstable
42=====
43
44to
45
46=====
47 https://github.com/MLton/mltonlib/tree/master/com/sweeks/basic/v1
48=====
49
50So far, libraries in the MLton repository have been licensed under
51MLton's <:License:>. We haven't decided on whether that will be a
52requirement to be in the repository or not. For the sake of
53simplicity (a single license) and encouraging widest use of code,
54contributors are encouraged to use that license. But it may be too
55strict to require it.
56
57If someone wants to contribute a new library to our repository or to
58work on an old one, they can make a pull request. If people want to
59work in their own repository, they can do so -- that's the point of
60using domain names to prevent clashes. The idea is that a user should
61be able to bring library collections in from many different
62repositories without problems. And those libraries could even work
63with each other.
64
65At some point we may want to settle on an <:MLBasisPathMap:> variable
66for the root of the library project. Or, we could reuse `SML_LIB`,
67and migrate what we currently keep there into the library
68infrastructure.