Introduction

hApp developers! We invite you to use Holoscape, sim2h, and the hApp-index to share, run, and test your hApps over the internet and discuss your results.

With the introduction of sim2h and Holoscape, we have a fully working Holochain stack again—for the first time since we abandoned the Go Prototype in 2018.

We are shifting internally, moving to more and more fully integrated hApp user testing. This is super exciting—we’re even looking into dogfooding!

Topics

  • Latest Holoscape version
  • Create your hApp bundle
  • Deploy your hApp bundle
  • Share your findings on the Holochain Forum

Details

Latest Holoscape version

As described in a recent blog post on sim2h, we are running a public sim2h switchboard server at wss://sim2h.holochain.org:9000. This allows anybody to run hApps over the internet, in addition to easily connecting Holochain conductor instances for real-world hApp alpha testing! The latest Holoscape release is configured to default to sim2h as the networking implementation, and use this public server.

Since v0.0.2 (currently in v0.0.3), Holoscape has contained a simple prototype of a hApp store, which is currently backed by our hApp index repository. It allows users to install hApps with a few clicks.

As a result, with Holoscape, hApps can be installed and used over the internet without requiring the user to have in-depth knowledge of Holochain or understand all the details of setting up conductors with DNAs and UIs. It should just work!

hApp developers! We invite you to use Holoscape, sim2h, and the hApp index to share, run, and test your hApps over the internet and discuss your results.

What do you need to do?

1. Create your hApp bundle

If you have a working hApp consisting of at least one DNA and one UI, the only thing you would need to add is a hApp bundle file. hApp bundle files are like a manifest, describing the DNAs, UIs, and possibly the bridges being used, as well as the relationships between them. Holoscape can read and install hApp bundle files. It follows any links inside the bundles to download DNAs and UIs and installs them if they aren’t already. Several hApps can reference the same DNA on which they depend via bridging, but Holoscape will not install the same dependency twice.

Let’s look at an example:

bridges = []

[[instances]]
name = "holofuel"
id = "__holofuel"
dna_hash = "QmcnYu8B54tFnJUv68aB3imPRwLxqJH2DQzjkX9Dvxmsf9"
uri = "https://holo-host.github.io/holofuel/releases/download/v0.11.1-alpha1/holofuel.dna.json"

[[UIs]]
name = "HoloFuel"
id = "holofuel-app"
ui_bundle_hash = "Qm34abcde"
uri = "file:./holofuel-ui.zip"

[[UIs.instance_references]]
ui_handle = "holofuel"
instance_id = "__holofuel"

Here we have a simple case—only one DNA/instance and one UI. The DNA will be linked remotely. The UI is expected to be delivered as a zip file next to the bundle. Please note that in this case, you have to include the empty array

bridges = []

in order for Holoscape to parse the file. There is no good reporting in Holoscape yet—a parse error might result in no contents being shown.

The last section conveys the information the UI uses for the DNA, doing so under the name holofuel and set with the ui_handle variable. This is the name of the instance the UI assumes to be there when run inside a conductor. The string holofuel will be hard-coded inside the UI in any occurrence to callZome(...).

2. Deploy your hApp bundle

You can first install your hApp in Holoscape from a local file. You should start with that to test your hApp bundle, DNA, and UI files. Once you are sure your bundle works, you can send the bundle file to your users through the channel of your choosing. In order to avoid sending several megabytes of DNA and UI binaries, it’s best to upload those files to a location (like a release on your GitHub repository) where they are accessible via a public URL that you can then put into the bundle.

Now, if you want to share your hApp with the world, create a pull request to the hApp index as described in its readme. Once that PR gets merged, your hApp will appear in all Holoscape instances and be installable with just two clicks.

3. Share your findings on the Holochain Forum

Holochain, sim2h, and Holoscape are all still in alpha, but we are getting close to actual usability. We are iterating quickly and finding new bugs as we try more hApps, fixing those bugs as we go. We expect this to continue for a few more weeks until we are really using most of the existing hApps. We need this testing and the raising of issues in order to know what is needed for the next level of usability. We also want to discover the real-world scaling limits of sim2h and the current Holochain Core code. We’re therefore reaching out to you.

At this point in time, the Holochain crew is mainly working on two issues that you might be experiencing as well. With actual data—the “if you do this and with what hApp”—would be extremely helpful to us!

  • There is an occasional deadlock of Holochain core that might be logged with IMMORTAL LOCK.
  • In some hApps under some conditions, we can’t seem to see entries on a node that wasn’t online when those entries were created.

With your help, these problems might be solved in a few days and new ones may be found.

We have had many surprisingly smooth test runs of hApps within the last few weeks, so we think it is a good time to broaden the circle of alpha testing and invite your collaboration and feedback! Please share your findings on the Holochain Forum!

Final note: As described here, we want to utilize sim2h’s capability to log network messages for debugging. Holoscape clarifies this in the network setup wizard if the default public server is chosen. Please use our server only if you are ok with us logging network traffic for this purpose.