news
Apr 25, 2020

Get set up for publishing Unison libraries with milestone M1l

Arya Irani

Hi folks! We've just released milestone M1l of the the Unison Codebase Manager (the quickstart guide has install instructions), which focused on essentials for ecosystem growth, specifically: guidance and tools for structuring your own libraries and contributing to others.

A Slack channel to talk about Unison libraries you're working on

Rúnar has started #hackathon on the Unison Slack, as a place to talk about Unison libraries you're working on, find collaborators, and compare notes. He's also started streaming Unison live-coding sessions! Check out reruns on Twitch, or join #hackathon to chat about the next one.

Organizing your codebase

We've had our first few PRs to unisonweb/base, which has been been rewarding, and also forced us to sit down and figure out what a nice process in Unison might look like. So check out the draft docs on how to organize your codebase. It gives some guidance on how to install new Unison libraries (both "released" and pre-released), doing the day-to-day work of creating, or reviewing and merging pull requests, and how to publish a release of your own.

Publishing a library

Speaking of publishing your own libraries, we are now hosting a Unison code catalog to show off what projects people are working on, or maybe accepting contributions for. As of this writing, we've only listed unisonweb/base, so please submit your new libraries to the list via PR (until we have an automated solution)! 🙂

You can use the new create.author command to create Author and CopyrightHolder values to attach, along with your library's License, as metadata to your published definitions.

As of M1l, you can configure the Unison Codebase Manager with some default metadata to attach to all of your work. You can also associate a default Git url to a given namespace, meaning that with some configuration,

._coolproject> push git@github.com:myorg/coolproject

can become simply:

._coolproject> push

and similarly for pull.

UCM improvements

Speaking of push and pull, these commands have been updated to be a bit snappier. The view and display commands now support suffix-based lookups (we're tracking down all the stragglers that don't!). The runtime now supports more operations on Int and Nat, and we've fixed a few other whoopsies. (Thanks to @pete-ts, @noahhaasis, @stew, and @atacratic for their PRs!)

What's next?

Work on the faster new runtime has been humming along, and we plan to release it soon in milestone M2. We'll add better support for the abovementioned proposed codebase organization format to UCM, e.g. good project scoping for commands where it matters, and we're also about to start devoting more resources to the distributed computing libraries. 🚀

Are we forgetting anything? Tweet @unisonweb or come tell us on Slack!