By Raine Revere,
Revere is a developer and teacher with over 15 years of coding experience, and a leading voice in the developing field of ethereum smart contract security.The ethereum developer community is an active community.
As 2016 comes to a close, it is a great time to reflect on how the latest cryptographic techniques and distributed apps (dapps) have been pioneered and developed within the collective knowledge sharing of the open-source community – whether by a team or through the passion of the individual engineer.
Through my experience as an ethereum dapp developer, I have come to learn the ins and outs of this fledgling community and, as we head into 2017, I would like to share my observations and introduce you to the different types of developers often working behind the scenes.
For non-developers, this may be your first glimpse into who is behind ethereum and the social aspect of being a dapp developer. It will help you better understand where ideas come from, how developers communicate and how the technology evolves with community participation.
For developers new to the ethereum world, you will learn what the main resources are and how you can effectively ask for help.
Protocol developers
Ethereum itself is developed by a talented team of developers employed by the Ethereum Foundation.
These developers and researchers are responsible for security, network stability, consensus mechanisms, scaling, protocols and interfaces, fork implementation and rollout, guidance to miners, the smart contract programming language (Solidity), the web API and the Go ethereum (Geth) client – yes, a lot!
Ethereum Foundation developers carry the greatest responsibility, as they deal with both critical network functions such as consensus and security, along with protocol definitions that serve as the platform for app developers. These developers maintain private communication for internal work, yet they are intermittently active on public channels such as reddit and gitter and often interact with the broader community.
They are primarily concerned with building a stable and powerful foundation which will enable the long-term value of ethereum, yet they also carry the responsibility of taking short-term steps (such as proposing hard forks) in the case of emergent security or stability concerns on the network.
Dapp developers
The other segment of developers, making up the bulk of the developer community, are distributed application developers.
Dapp developers are those who are developing apps that leverage the power of the ethereum platform to build novel distributed applications. Through client-side cryptographic signatures and verifiable transactions on a public ledger, dapps provide a profoundly new form of computing that does not rely on trust in a central server.
Peers in the network can execute complex transactions, such as transfers of ownership, financial agreements or collaborative governance, with un-counterfeitable rules that are coded into the system.
Yet, dapp developers have a steep learning curve themselves — in order to develop dapps, they must learn the Solidity programming language, the interactions of the various layers of the system (from protocol to application layer), smart contract security essentials, gas costs and limits, memory management specific to the ethereum virtual machine (EVM), how contracts are deployed and how transactions are submitted and processed on the network.
Solidity is an easy-to-use, Javascript-like language on the surface, yet real dapp development involves understanding both the quirks of the underlying EVM and all the aforementioned layers of ethereum software that make it work in a live environment.
This can be an intimidating set of skills to acquire, and indeed it took me several months to learn even the basics, despite years of coding experience. Luckily, there are resources available once you dive in.
Opening dialogues
The most well-known resource for ethereum news and communication is reddit.
If you feel like you are on the outside of things, reddit is the quickest way for you to tap into what is happening in the ethereum world. All major announcements, including official announcements about the network and platform (as well as announcements for dapps and tokens) occur here.
It is also a place where individuals express opinions, ask questions and make predictions.
There are just as many polite and supportive folks as there are individuals with negative attitudes, although it is often a polarized space due to the sheer volume of voices. I personally try to check reddit every couple days to stay tuned into what is happening, but otherwise avoid active engagement that often leads to lots of information but no definitive conclusions.
Still, this is an essential first step to better understand what is happening in the community.
The resource that I am most excited to share about however is gitter, the chat platform where most of the public engineering discourse takes place. The community includes a huge range of individuals, from first-time users of Solidity, to experienced dapp developers, to the Foundation developers who are developing the platform itself.
This is the place to come to ask technical questions. Developers with all levels of experience ask questions on gitter as they are proposing ideas, planning features, troubleshooting bugs, or struggling with network issues.
Your question could just as easily be answered by a beginner who has just run into the problem and solved it themselves or a foundation developer who takes a moment to point you in the right direction on an issue they have run into countless times.
Learning the ropes
If you are new to the community, can you jump in and start participating? Absolutely! However, you may find it helpful to keep some things in mind when you first jump in.
First, responses to questions can be short and incomplete, or sometimes questions do not get answered at all.
This is not due to unwillingness, but rather is just the product of a constantly-moving community of individuals in different time zones working on different projects and often balancing community participation with work responsibilities. I recommend asking politely and including as many details as possible. The more specific the better!
The biggest mistake I see new participants make is to ask a question that are too generic, such as “I can’t deploy my contract. What do I do?” or “I have this idea for an app that is like a decentralized marketplace for tokens. How do I build it?”.
These questions either do not provide enough information for someone to help troubleshoot, or are huge questions that have no one right answer, and could be implemented in many ways.
A public chat room is not always the best place to get feedback on big, new ideas. Once you are working on an app or even just playing around with real examples, though, you will find plenty of assistance for the various issues you may run into. Keep it specific and post your code (with proper formatting) and you will likely get a response.
Today, the ethereum community is still in its infancy. But this is also what gives it its charm. It won’t take long for you to start seeing familiar avatars if you hang out on gitter for a few days. I have enjoyed my part in contributing to a supportive development community, and I encourage you to join in if you have any interest at all in ethereum development.
I mainly hang out in the solidity, web3 and truffle channels on gitter – come say hi. I love to hear from new developers who are excited about exploring ethereum for the first time!
With additional members joining the community and new tools making dapp development easier for newcomers, 2017 promises to be the best time yet to dive in and begin making your ideas a reality!