Our experience as developers of tooling in the Ethereum Foundation
By: Nina Breznik
Tags: Smart Contracts, Ethereum, Blockchain, Code, Solidity

Nina Breznik (nina@ethereum.org)

Previously: https://remix.ethereum.org

Now: https://smartcontract.codes & https://playproject.io/play-ed

During my 2+ years in Remix, I interviewed many expert users (e.g. many 1-on-1 meetings with Chainsafe Team and others, focus interviews with users during Conferences (e.g. EDCON, EthCC, EthGlobal Events, Devcon, etc…), and Interviews during EthMagicians gatherings).

Edcon, Toronto 2018

The thing I heard most often was that they do love Remix, but they want a better UX for dealing with common features (e.g. compile/deploy) + they would love to see a much better debugger. They also said Remix is sometimes too much, when they want to showcase their work to the clients who are not so tech savy. Next, since there are a lot of changes happening in the space (e.g. new Solidity versions, new compilers, new features, new techniques, etc..), most developers said they have a hard time of keeping up with it, so I suggested we create a support chat and integrate it into Remix.

The chat grew from initially +200 people to over 2000 people in one year and I noticed that despite the fact we were working on many new features, users didn’t even know most of them exist and old features were frequently breaking which made people quite frustrated.

@serapath who is working with me on a new project, developed the idea for plugins and designed the architecture for it His idea was to factor out the “pro features” into plugins and allow external teams to integrate their features via plugins too so we can focus on a clean, solid and beginner friendly core to onboard new users.

Things were moving too slow in Remix so we suggested to start a new project that would focus on onboarding and making the main features users pointed out easily accessible and beginner friendly. We are slowly leaving alpha and moving into public beta.

See the screencast demo (1min)

In a week or two we will add a new design and app connect , our improved take on integrating with other services in the spirit of zapier or ifttt , so anyone can connect their app to it.

Additional learning came from workshops we frequently organize all year long (=WizardAmigos).

Source: personal archive

Source: personal archive

When we tried to teach beginners solidity and the logic commonly used in smart contracts and to integrate with oracles and decentralized storage providers (e.g. swarm, ipfs, …) we again tried to use Remix, but it was absolutely overwhelming for them.

Too much information, too many buttons, too many clicks to get even basic things done and so they got lost and didn’t have much interest to continue.

Now I am using the play editor (=play-ed) and I see how beginners feel they understand what is happening and have control, so they can actually do something, send transactions and feel empowered and follow along to learn more.

Play ed (https://playproject.io/play-ed)

Interestingly, I tried to explain smart contracts to Patrick and Catherine from the Ethereum Foundation in Zug and they were intimidated at first, but after I showed them the Play editor and how its auto-generated interactive contract preview (=a familiar form to fill out) works, they could actually follow along and at the end Catherine even commented that this is the first time she felt like this is something that she eventually could wrap her head around. The tool successfully served as a great presentation tool for business/laywers/accountants and other professionals, including software agencies who want to showcase their work to non-technical clients.

We also introduced the tool to many professors and their assistants who teach solidity in universities. Their feedback was positive and the tool is now their go-to-tool when starting to teach solidity, so I guess that’s a pretty good feedback. Some also opened issues and added feature requests some of which we implemented already.

There is one last feedback we got, and the professors we are in touch with confirmed this:

Users are missing good but simple and to the point examples when they start learning. Expert users on the other hand lack access to many advanced code examples where they can search for custom features or look for the latest implementations and best practices to see how certain features are used in solidity, so that they have an easier time integrating them into the contracts they are working on.

In essence, solidity programmers wouldn’t mind to get more inspiration about what and how they can build useful smart contracts.

This lead us to start with the https://smartcontract.codes — a search engine for solidity source code.

It was inspired by https://codepen.io which helps web developers to look for inspiration and quickly copy good examples.

The Project is only a few months old, but we’re collaborating with the professors who are sharing with us the code examples they use in their courses.We’re soon also adding Open Zeppelin contracts and also professionally audited contracts from our partners from ChainSecurity to the database.

Currently our database has over 100.000 smart contract code examples and they will all be published soon when our public Beta is released.

Our hypothesis is that the first real boom Ethereum had was due to ERC20 standard which gave users an out of the box business solution in the form of a contract, which they could slightly adapt for their needs and they were ready to go.

We think there is a need for more standards/templates/out of the box solutions for contracts as a business

Moloch DAO and Token bonding curve came close, but they are maybe not such a mainstream usecase as an ERC20 Token which can be used for any loyalty program, game, ICO etc.

So once again, we think these standard examples are necessary and we’ll search for them or develop them ourselves and integrate them in the smartcontract.codes tool so users will be able to search for contracts they want, click to open them and deploy them instantly to the netowork of their choice using Metamask or other browser wallets in the future.