I’m really excited to introduce an exciting new Holochain-based tool that’s been incubating in the secret underground lair of Melbourne-based hacker Philip Beadle. It’s hard to describe exactly what it is; it’s a real chimera. It’s sort of an application, except that it’s actually just a container for running applications. Only they’re not exactly applications; they’re more like building blocks that you can snap together into your own custom-designed applications. And it’s also an integrated development environment for creating those building blocks, as well as a package manager for distributing them. Maybe you could call it a Holochain OS.
I think the reason that none of these categories quite fit is that I’ve never seen something like this before. It delivers on our vision of the kinds of connectable, combinable, evolvable applications that are enabled by Holochain.
Simplicity, versatility, and power: spreadsheet vs kanban
I have a confession: I’m in love with the world’s least sexy app, the spreadsheet. Even if you’ve never seen one before, its intent is obvious: it’s a grid of cells that you can put stuff into. Its generic-ness makes it useful to everyone. Scratch the surface, though, and you discover that it’s also a programming environment. The barrier to entry is low: one line of code and you’ve summed up your grocery expenses. And as your needs get more advanced, you can create actual apps and share your work with others.
I also love kanban, or ‘list-of-lists’, tools like Trello. Again, they’re simple, versatile, and universally useful. But once I start hitting the limits of the built-in features (and I do, regularly), there’s not much I can do. There’s a huge ecosystem of ‘power-ups’ for Trello, but if I want to create one myself, I have to leave the app, fire up an editor, write code, deploy it to a server, provision API keys, test it, fix it, re-deploy, etc.
The point is that apps with built-in, live programmability are easy for beginners to jump into, but flexible enough for advanced users to mould to their purposes. Everything lives in one environment, affording a seamless transition from using to programming and back again. This is what think tank Ink & Switch call end-user programming, and I love it. It gives me the power to customise my experience for my own needs.
CRISPR: end-user programming for Holochain apps
I think of CRISPR as Holochain’s answer to the spreadsheet—not in terms of rows and columns, but end-user programmability. This proof-of-concept comes with a few basic hApps such as a kanban board, a to-do list, and a knowledge base, and you can download more via its ‘parts store’. This might be enough for you. But when you need something more, you can remix, combine, and share hApps, all from within the same interface. I think this immediately available programmability could result in a Cambrian explosion of handmade apps, fine-tuned for the specific needs of people and groups.
Every app has a button that spawns an IDE (integrated dev environment). This IDE features a visual schema editor for your data model, and it auto-generates most of the code necessary for a Holochain DNA that powers the app’s data layer. If you’ve ever used Visual Studio’s Entity Framework Designer, you’ll know how great it is to be able to design and see all of your models and their relationships on a big canvas that stays in sync with the underlying code.
This is cool, but I think the ‘chimera mode’ is even cooler. It lets you bolt extension modules onto existing hApps. They’re like Trello’s power-ups, without the tooling hassle. This sort of modularity is possible because of an opinionated set of design choices—CRISPR-created DNAs know how to reference each other’s data using a consistent pattern, and CRISPR-hosted UIs are all Vue.js components.
And of course, because it’s Holochain, your app or extension is live as soon as you build and run it—no server provisioning or deployment procedure. Share it with others and you’ve got a DHT that enables collaboration and improves the resilience of your data. CRISPR makes this process easier still—you don’t have to drop to a command line, build the DNA, configure your conductor, fire up a DNA instance, and open your web browser. Press the ‘build’ button and the app just appears in the interface, ready to use.
In the following demo videos Philip focuses on CRISPR’s usefulness as a Holochain IDE. He shows how quick and easy it is to prototype, test, and run a hApp using your data model as a starting point.
Here are the videos; you’ll find an index of interesting topics in the descriptions. If you’re in a hurry, scroll down for some yummy screenshots, the GitHub repo, and the plans for the next version.
Where can I get it?
Clone the CRISPR repo at https://github.com/holochain/CRISPR-Holochain-redux and read the README to get started. But you might want to wait, because...
What’s next?
Last night Philip gave me a demo of the next version of CRISPR, and there are some very exciting features for hApp developers on the way:
- A Git-like version control system that integrates with the IDE
- A behaviour-first paradigm in which you specify what your hApp should do and let CRISPR build the UI and data model for you (I think this is another game-changer)
- An app-building wizard that uses human-relatable terms rather than Rust’s type system
- Deploy targets for CRISPR-hosted web UIs, conductor-hosted web UIs, self-contained Electron apps, Holo-hosted web apps, and Holo-hosted native apps (the current version only builds CRISPR-hosted UIs)