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