<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.10">
<title>MLtonLibraryProject</title>
<link rel="stylesheet" href="./asciidoc.css" type="text/css">
<link rel="stylesheet" href="./pygments.css" type="text/css">


<script type="text/javascript" src="./asciidoc.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
asciidoc.install();
/*]]>*/
</script>
<link rel="stylesheet" href="./mlton.css" type="text/css">
</head>
<body class="article">
<div id="banner">
<div id="banner-home">
<a href="./Home">MLton 20201002</a>
</div>
</div>
<div id="header">
<h1>MLtonLibraryProject</h1>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph"><p>We have a <a href="https://github.com/MLton/mltonlib">MLton Library repository</a>
that is intended to collect libraries.</p></div>
<div class="exampleblock">
<div class="content">
<div class="literalblock">
<div class="content monospaced">
<pre>https://github.com/MLton/mltonlib</pre>
</div></div>
</div></div>
<div class="paragraph"><p>Libraries are kept in the <span class="monospaced">master</span> branch, and are grouped according
to domain name, in the Java package style.  For example,
<a href="VesaKarvonen">VesaKarvonen</a>, who works at <span class="monospaced">ssh.com</span>, has been putting code at:</p></div>
<div class="exampleblock">
<div class="content">
<div class="literalblock">
<div class="content monospaced">
<pre>https://github.com/MLton/mltonlib/tree/master/com/ssh</pre>
</div></div>
</div></div>
<div class="paragraph"><p><a href="StephenWeeks">StephenWeeks</a>, owning <span class="monospaced">sweeks.com</span>, has been putting code at:</p></div>
<div class="exampleblock">
<div class="content">
<div class="literalblock">
<div class="content monospaced">
<pre>https://github.com/MLton/mltonlib/tree/master/com/sweeks</pre>
</div></div>
</div></div>
<div class="paragraph"><p>A "library" is a subdirectory of some such directory.  For example,
Stephen&#8217;s basis-library replacement library is at</p></div>
<div class="exampleblock">
<div class="content">
<div class="literalblock">
<div class="content monospaced">
<pre>https://github.com/MLton/mltonlib/tree/master/com/sweeks/basic</pre>
</div></div>
</div></div>
<div class="paragraph"><p>We use "transparent per-library branching" to handle library
versioning.  Each library has an "unstable" subdirectory in which work
happens.  When one is happy with a library, one tags it by copying it
to a stable version directory.  Stable libraries are immutable&#8201;&#8212;&#8201;when
one refers to a stable library, one always gets exactly the same code.
No one has actually made a stable library yet, but, when I&#8217;m ready to
tag my library, I was thinking that I would do something like copying</p></div>
<div class="exampleblock">
<div class="content">
<div class="literalblock">
<div class="content monospaced">
<pre>https://github.com/MLton/mltonlib/tree/master/com/sweeks/basic/unstable</pre>
</div></div>
</div></div>
<div class="paragraph"><p>to</p></div>
<div class="exampleblock">
<div class="content">
<div class="literalblock">
<div class="content monospaced">
<pre>https://github.com/MLton/mltonlib/tree/master/com/sweeks/basic/v1</pre>
</div></div>
</div></div>
<div class="paragraph"><p>So far, libraries in the MLton repository have been licensed under
MLton&#8217;s <a href="License">License</a>.  We haven&#8217;t decided on whether that will be a
requirement to be in the repository or not.  For the sake of
simplicity (a single license) and encouraging widest use of code,
contributors are encouraged to use that license.  But it may be too
strict to require it.</p></div>
<div class="paragraph"><p>If someone wants to contribute a new library to our repository or to
work on an old one, they can make a pull request.  If people want to
work in their own repository, they can do so&#8201;&#8212;&#8201;that&#8217;s the point of
using domain names to prevent clashes.  The idea is that a user should
be able to bring library collections in from many different
repositories without problems.  And those libraries could even work
with each other.</p></div>
<div class="paragraph"><p>At some point we may want to settle on an <a href="MLBasisPathMap">MLBasisPathMap</a> variable
for the root of the library project.  Or, we could reuse <span class="monospaced">SML_LIB</span>,
and migrate what we currently keep there into the library
infrastructure.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr></div>
<div id="footer">
<div id="footer-text">
</div>
<div id="footer-badges">
</div>
</div>
</body>
</html>
