Nomic Labs DevX

A dedicated Ethereum developer experience effort

Franco Zeoli
Nomic Foundation
5 min readJul 23, 2020

--

Since 2020 Nomic Labs has been working in close collaboration with the Ethereum Foundation, and I’m pretty excited to finally tell you about it! We’re leading the EF’s developer experience improvement initiative, and our role includes being a Type C Delegated Domain Allocator. We’re calling this Nomic Labs DevX, and it’s primarily a product effort on the Ethereum development platform.

We’re running an empathy-driven process to coordinate the ecosystem around improving the user experience for developers building on Ethereum.

Some of the work we’ve been doing includes:

  • User research
    Conducting interviews, soliciting written feedback, parsing through Github issues, and paying attention to the community’s input from informal channels. We combine this with our experience building and auditing Ethereum software to identify the most salient user pain points and opportunities for unlocking developer productivity.
  • Prioritization
    While the Ethereum development state of the art has improved significantly in the past 12 months, there’s still a lot of room for improvement. One of the trickiest things is identifying within the ocean of issues the highest leverage projects to go after to produce results as quickly as possible.
  • Designing coordinated solutions
    Many of the problems we’re seeing arise from the lack of enough coordination on how the different components come together. When a team or individual is working on a single piece of software, they can’t realistically think through every possible implication for every possible way of using the software combined with every other tool built by people they may not even know. The Ethereum platform wasn’t built by a single streamlined team — quite the opposite. By stepping into a bird’s-eye view position, we can see how things don’t fit perfectly together and cause problems, putting us in an ideal place to drive the improvements to make the integration of the different components across the stack tighter and more effective.
  • Allocate grants
    As a Delegated Domain Allocator, the Ethereum Foundation has set aside a budget for us, which we may allocate toward developer experience improvements. This includes traditional grants for projects we consider valuable and need funding, as well as paying contractors for work done.
  • Work with DevX partners Tenderly & EthWorks
    We are by no means the only group working toward improving Ethereum developer experience. Our mandate from the Ethereum Foundation includes utilizing and coordinating with other teams doing great work on this front. Tenderly and EthWorks are two such examples. In addition to their excellent independent contributions to improving Ethereum developer experience, they have also taken on the bulk of the implementation work for some of the top priorities we’ve identified. Shout out to both teams for consistently executing with uncompromising quality!

Scope

Improving the Ethereum development platform means that our scope starts where the protocol and network end, because that’s where developers start. Everything that developers interact with is part of the platform, so this includes the clients (JSON-RPC API we’re coming for you), EVM implementations (fast tests 🔥), the Solidity compiler (faster compilation is on the way), orchestrator tools (e.g. Buidler, Truffle), connector libraries (e.g. web3.js), development networks, error messages, documentation, etc. Our scope is the entire development platform, but it doesn’t include the network it runs on.

It’s a significant scope, but while challenging, it’s doable. We expect to concentrate on especially high leverage improvements in a relatively small number of areas at first. That said, there are also many, many marginal improvements to be made at all levels as well. We may tackle some of these, but we probably won’t be able to prioritize most of them. We know we can’t do this alone, and we welcome contributions from those throughout the ecosystem.

While this is our scope, it certainly doesn’t mean we have authority over these components. It just means we’re focused on improving the big picture experience of building software for Ethereum, and these are some of the layers and components that are relevant to that goal.

Collaboration, coordination, adoption, and getting buy-in

Most of the time the projects we work on are third-party codebases that we didn’t author and we don’t own, so we usually have to first get buy-in from the stakeholders on our ideas, reach technical agreement, and only then implementation can start (or be merged). Sometimes the current owners end up working on these issues once we point out the big picture strategic importance, and we help out with additional resources.

In other cases what’s needed for a certain aspect to improve is for developers to switch to a different tool, and facilitating awareness around the most useful software for their needs is also part of our responsibilities. Buidler, our developer tool, is a good example of this. We implemented stack traces and console.log for Solidity in Buidler EVM, both of which are highly valuable features for debugging, but being a new tool not everyone in Ethereum is using it. To achieve an ecosystem-wide impact from the improvements we produce, we must also push for their adoption.

Execution

If you consider the list of things I listed above, you’ll notice that there’s no implementation stage, but there are execution partners. There are many projects we could take on simultaneously, but if we built a team to implement software and any given project takes a while to build, this would obstruct making progress on other projects during this time. For that reason, as a team, we mainly figure out what needs to happen, and then coordinate or supervise others to implement under our guidance. This way, we can have many projects moving forward at the same time. Once implementation is done, we’re also responsible for overseeing deployment to the ecosystem, which is the buy-in or adoption side mentioned before.

Measuring results

Developer experience can be broken down into many different components, but not every situation calls for fine-grained detail. In Ethereum’s case, the areas where the state of the art is suboptimal aren’t only causing frustration and headaches but also significantly impacting productivity and, in turn, the ecosystem’s progress and growth. For the time being, our north star in terms of impact will be productivity, followed by satisfaction. As we progress, this will evolve and become more nuanced.

Sound fun?

If you have read the above and you:

  • find this big picture Ethereum scope exciting,
  • would have fun running an empathy-driven user-centric research process to figure out user needs,
  • know the Ethereum stack in-depth,
  • have a knack for designing elegantly effective systems and APIs,
  • are good at spotting how things went wrong,
  • have management experience,
  • or even better have technical product management experience,

Then get in touch! We’re looking for people to join our management team to help us identify and run these projects hello@nomiclabs.io.

Coming up

This post is a bit on the abstract side for the sake of brevity, but future ones will have more detailed information. In the next post I talk about how we’re roadmapping and choosing projects. Check it out!

--

--