Developer Onboarding

Congratulations to your “move”, even though I don’t understand all your tech decisions, I highly appreciate Libra, Move and the initial setup, there obviously is a lot traction behind it.
Having said this, as a “long term” Ethereum dev, it is obvious to me that the dev experience (not the user experience!) in Ethereum is light years ahead, though it started with the a comparable state Libra and Move are in now.

Therefore, I’d like to help devs by pointing out what’s missing for a decent dev experience. I am assuming here that a majority of devs interested in Libra and Move will have substantial experience in Ethereum development. If that’s not the case, this list must be adjusted.

Core development (Howtos, Tutorials and Guides)

  • Setup a testnet (one or several nodes) in a private network
  • Create faucets for private networks or deactivate “gas” usage
  • Step-by-Step Guide for development in a common IDE like VSCode/Atom/Vim
  • Step-by-Step Guide for deployment of contracts and transaction scripts in local network
  • Tooling: Truffle and Ganache for Move
  • Bootstrapping: Create UI-templates from contract descriptions
  • Provide adapters for most current JavaScript frameworks like React, Angular, Vue.js
  • Provide a CSS starter set for UI/UX based on Bootstrap


  • Provide Docker versions of all Libra components
  • Create Dev Environments like Truffle, Embark, Populus for different Dev Environments

No-Client-Installation Web development

  • Adapt Remix IDE or some other no-installation IDE for Move testing and in-memory chain deployments
  • Create an Infura-clone for Libra to enable developers using several testnets without local nodes


  • Provide a stable Explorer version (like
  • Enable event listening and query support with local storage


  • gRPC Usage Tutorials and Howtos for most used languages (JavaScript, Python, Java/Kotlin)
  • Enterprise Usage: Integration with legacy Systems (Java/.NET)
  • Tutorials for different languages
    ** How to create simple transactions and transaction scripts?
    ** How to deploy smart contracts in language X/Y/Z?


  • Best practices & Patterns to avoid (known) bugs
  • Static Code Analysis with Security Checks for Move

Patterns and Concepts Comparison

  • Main Conceptual Differences between Ethereum/EVM and Move/Libra
  • Side-by-Side Implementation Comparison for most important EIPs
    ** Fungible and Non-Fungible Tokens (eg. ERC-20 and ERC-721)
    ** Signatures and Signature Validation (EIP-712)

Patterns and Best Practices for Wallet Creators

  • How does MetaMask for Libra look like?
  • UX/UI Best Practices (Reorg Handling? Gas estimation? Async Transaction Feedback?)

A very good list to use as inspiration for further topics is this:

Just to make sure: this should not be seen as a demand for the Libra team, but more a start of a collection of missing items to help new devs.

It might make sense to create GH-issues for these items. There is more learning from Ethereum than just technical stuff, eg. Libra could create Bounties for those topics, use Gitcoin for incentivization, etc.


I’m no developer , just from a (eth/libra) user point of view :
Why do we need a metamask like (adds friction) if we can transact with testnet (and libra mainet) directly from browser ? (cf this wallet

kudos for the list, makes great sens !

MetaMask is much more than “just” a wallet. It provides dapps with a possibility to connect to the user wallet, so the dapp can execute transactions “on-behalf-of” the user. I am not sure how a dapp could make sure that a payment happened in realtime in a transactional context otherwise.
Waiting for a transaction to be executed “externally” by some client/web wallet like your Kulap wallet is not possible or at least not UX-friendly at all.
I assume applications (most likely JavaScript-based web application) must be able to send commands to some wallet, which then asks the user for conformation.
Besides, MetaMask’s signing feature is used more and more for identity verification (authentication), which must be some kind of browser plugin.