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 (thequickstart guidehas 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#hackathonon theUnison 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 rerunson Twitch,or join#hackathonto chat about the next one.

Organizing your codebase

We've had our first few PRs tounisonweb/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 onhow 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 aUnison code catalogto show off what projects people are working on, or maybe accepting contributions for. As of this writing, we've only listedunisonweb/base,so please submit your new libraries to the list via PR (until we have an automated solution)! 🙂

You can use the newcreate.authorcommand to createAuthorandCopyrightHoldervalues to attach, along with your library'sLicense,as metadata to your published definitions.

As of M1l, you canconfigure the Unison Codebase Managerwith 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

can become simply:

._coolproject> push

and similarly forpull.

UCM improvements

Speaking ofpushandpull,these commands have been updated to be a bit snappier. Theviewanddisplaycommands now support suffix-based lookups (we're tracking down all the stragglers that don't!). The runtime now supports more operations onIntandNat,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@unisonwebor come tell uson Slack!