Specifications Engineer, libp2p

Remote - libp2p
Projects – Engineering
The libp2p Project seeks an extraordinary Specifications Engineer to help write clear specifications for libp2p, and thus aid in new languages being able to implement the libp2p specs correctly.  You’ll help lay the foundation for an industry standard peer-to-peer foundation to power the emerging decentralized Internet.

Documentation & Specifications at Protocol Labs and libp2p

Engineering at Protocol Labs is not just about writing world-class code, it is also about providing clear and well-written documentation, specifications, and other guides.  Because the libp2p project aims to be an open standard, it’s imperative that we provide complete specifications that will allow anyone to implement libp2p in any programming language and on any platform.  Writing specifications is an art form where words like “SHOULD,” “MAY” and “MUST” have very specific meanings. If you appreciate this art form, and are passionate about precise technical writing, this role may be for you.

As a Specification Engineer at Protocol Labs, you will focus on radically revamping the libp2 Project’s formal specifications.  You’ll need to be able to read Go and Javascript code, understand what it’s doing, and turn that into explicit English language prose.  Along the way, you’ll need to work with the engineers who wrote and maintain that code to understand the larger context (why was this thing done this way?), as well as listen to feedback from implementers about what parts are unclear.

libp2p already has a significant number of language implementations at varying stages of maturity:  Go, Javascript, Rust, Python, C++, Java, Lua, NIM, etc. For these implementations to interoperate, their authors need to be presented with clear specifications that explain the wire protocols, how to establish and utilize connections, how to respond to error conditions and many other fine details.

As a Specifications Engineer at Protocol Labs you will…

    • Devise a plan to specify all aspects of libp2p, including usage examples, conceptual documentation and specification writing.
    • Affect the lives of countless people you help bring into the libp2p community.
    • Work directly with Software Engineers to understand the abstractions and interfaces that libp2p offers to programmers, and write specifications in a way that helps implementers go from zero to expert in a step-by-step fashion.

You may be a fit for this role if you...

    • Love clear, precise English language prose.
    • Are comfortable reading source code and understanding what it is doing.
    • Read IETF RFCs in your job or your spare time.
    • Write RFCs or similar technically precise specifications.
    • Enjoy navigating open source communities, where sometimes not everyone will agree on what the specification should say and you have to push through to reach a decision.
    • Understand the challenges of keeping documentation up to date with improvements in the code, and how to write just enough documentation to be helpful but not so much that the docs fall behind the state of the code.
    • Have familiarity with peer-to-peer technologies and concepts such as distributed hash tables, S/Kademlia.

Bonus Points

    • Previous work experience as a software engineer
    • Experience as a protocol specification writer
What is libp2p?

The libp2p Project is an open source (MIT/Apache licensed) decentralized networking stack. It provides all the basic plumbing needed to build a peer-to-peer application:  peer discovery, content routing, publish/subscribe messaging, a distributed hash table (DHT) for scalable record storage, advanced cryptography to secure and authenticate connections, stream multiplexing, and other features.  This abundance of features is libp2p’s key strength. Many of our downstream users started out trying to write their own peer-to-peer networking layer and then, upon discovering how complex it is, decide to adopt libp2p instead.  With Go, JS, Rust, Java, Python, C++, Lua and NIM implementations, the libp2p framework is available to a wide range of developers targeting everything from SoC’s to browser-based applications.

What’s it like to work at Protocol Labs?
Protocol Labs mission is to improve humanity’s most important technology, the Internet. We build protocols, systems, and tools to improve how it works. Today, we are focused on how we store, locate, and move information. Our projects include IPFS, Filecoin, libp2p, and more.

As a distributed team, we hire anywhere in the world, and at various levels of experience (entry, senior, staff). We look for people with unique perspectives and diverse backgrounds.

We have a great benefits package, including parental leave, contributions to your retirement, competitive pay, and unlimited time off. For U.S.-based employees, we also provide platinum-level health, dental, and vision coverage for you and your family.