Image for post
Image for post

A few weeks ago, we ran our very own internal hackathon and following this, we sponsored and took part in ETHParis (an ETHGlobal hackathon). Our plan with these hackathons was to get as much real-world experience with building Arweave apps as we could in a short period, which would help us identify the complexities in the on-boarding process for new developers into the permaweb ecosystem — and indeed it did.

The key lesson that we learnt during the hackathons is that it is just as easy as we hoped to build useful permaweb apps! For our internal hackathon, within just one week our team was able to build a bunch of well-featured permaweb apps addressing a range of real-world use cases. Then, at ETHParis, members of the wider Ethereum community were able to quickly get onboard using Arweave as a storage platform for their dApps. We believe that the quality and ease of a developer’s first time using a platform will be vital in determining which decentralised platforms will be successful in the fight for adoption. As such, we’re thrilled at how smooth the onboarding process is for developers joining the permaweb, and believe this is a very positive sign for the future.

However, nothing is perfect (yet ;) !). Among the areas for improvement in the developer experience we identified that the permaweb deploy environment was not intuitive to emulate on a developer’s local machine. This is mainly due to the way that browsers treat HTML files served from the local hard drive in comparison to those served from a remote server (CORS headers, etc.). Further, even if the user started a local HTTP server and used this to test their permaweb app, the pages served through it would still act differently than if they were served through the Arweave web extension or a permaweb gateway. This is due to the fact that web pages not served over HTTPS are unable to use various Javascript libraries — most critically, the SubtleCrypto library that is required to sign Arweave transactions, amongst many other things.

In order to address these issues, @arweave-kyle has been hard at work building an `arweave serve` feature into the web app deployment tool that we released back in January, so that developers can trivially start an environment that perfectly matches the permaweb, right from their own machine. We are excited to ship this update in the coming weeks!

Another interesting lesson that we learnt was this: the permaweb makes a great hosting environment for the web apps that often serve as the user interfaces to smart contract systems. One of the things that excites us as developers most about Ethereum (and other smart contract platforms), is the idea that we can build apps that run indefinitely, without maintenance, upkeep, etc. This is very cool, but typically these smart contracts are only useful if the UI that is associated with them is still online. Currently, the typical method for hosting these smart contract web UIs is Amazon’s S3 service, or at best, using a centralised IPFS node (although this is never fast enough to use in practice). If the developer stops paying for hosting or the server goes offline, you lose your UI and these contracts are basically just byte code and non-human readable machine state. Without a user interface to interact with, the usefulness of these contracts is highly limited.

The permaweb is a perfect fit here, as the web apps stored inside are just as permanent as the dApps that they are supporting. This means that when you use Arweave to store your dApp UI, you can be confident that at some point in the future you will not end up with an ‘eternal’ smart contract that nobody can understand or interact with. Neat!

Stay tuned to this blog as we will be showcasing some of the experiments that were built at these hackathons in the near future!


Deploy your dApp on the permaweb now >

A novel data storage blockchain protocol enabling a permanent serverless web and creating truly permanent data storage for the first time.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store