next-generation programming language, currently in development

Twitter . GitHub . RSS

May 7th 2015 update and roadmap

If you’ve read the About post, you might be thinking:

When I first started thinking about this project, it felt like an amorphous, ill-defined blob. But it was such an exciting topic that I kept thinking about it, in between doing other work. I talked with various people, started nailing down an architecture and technical details (which I still need to write up in a form that might be more comprehensible to other folks!), and implemented parts of the system. Eventually, that amorphous blob started to look a lot more like a well-defined engineering project. Okay, perhaps not absolutely every detail was worked out (no software project has this), but the project began to feel achievable, not ten years from now, but soon.

How soon? Well, three months ago, I decided to take some time off from consulting work to focus almost exclusively on Unison. I had a pretty detailed architecture going in and some code already written, but also a number of unknowns. It’s now three months later, many of these unknowns are known, and what remains feels more like isolated problems rather than foundational concerns. For instance, even though the refactoring story isn’t fully worked out, it seems like a fun and possible problem to solve, and one can still have a super useful platform even without it. The temporary workaround is making transitive edits manually—yup, it will be tedious in a large codebase, but then, so are a lot of text-based refactorings! And when the refactoring story does get worked out, it will be a huge productivity boon for all users of Unison.

Based on the existing progress and what’s left, I’ll estimate that if I had a full year to focus on Unison, I’d have something that people could actually use for real stuff. The Unison editor would be fleshed out, with a layer for multiple declarations and more support for embedded graphical views, and you could use it as a replacement for spreadsheets, in addition to supporting general purpose programming. With more people, more time, and more libraries, the platform becomes more useful.

Here’s my attempt at summarizing the current progress:

If there is interest and people would like to get involved, I can write up some ideas I have for bite-sized projects.


Here’s a tentative roadmap, based on the unrealistic assumption of just me working full time (see below). I don’t think these estimates would be off by an order of magnitude—the last roadmap I did, at the start of the three months I took off, ended up being off by about a month. (Right now, I’m basically where I hoped I’d be like a month ago.) The uncertainty around these items feels pretty similar:

At this point, let’s say 6 months in, the editor will be pretty fleshed out and usable, and the language itself will be nice enough as well. At that point, we have a nice interface to program editing, and focus can move to building out the functionality the platform has access to:

So at around a year of effort, with some buffer, the platform is actually useful. We can start thinking about building clusters of Unison nodes and running massive distributed computations with ease! And with community involvement, who knows what we could accomplish!

More realistically

More realistically, I’ll be working on Unison part-time, in between paid consulting work. Although it was nice getting to take time off to focus on this project, I do need to make a living for myself and my family. It’s harder to estimate what my capacity on Unison will be, as that will depend on the type of consulting work I take on.

This brings me to my last point…


I am extremely thankful for the encouragement I’ve gotten from people while working on Unison. And a few people have even contacted me unasked to ask if there was a way they could donate to the project. (I think one person suggested I set up a page on Patreon). On the one hand, this was really encouraging and kind! On the other hand, I wasn’t sure how I felt about accepting money for a project with admittedly somewhat vaporware status. Something else I wondered about with accepting donations—if there are multiple contributors to the project, as I hope there ultimately will be, I’m unsure what the fairest way is of splitting up donated funds. I’d love to hear in the comments from people who might have thoughts about this sort of thing.

That said, getting funding for Unison is something I’d like to explore. There are a couple avenues:

Comments? Thoughts? Questions? Fire away!

comments powered by Disqus