Announcing DatPy

A Python implementation of the Dat protocol

After a lot of lurking, reading, discussion and evaluation, I've decided to start an implementation of the Dat protocol in Python. As I know many will be asking “Why!?”, I wanted to elaborate on my motivation.

The Dat project is a new peer-to-peer protocol that is the foundation for a wave of exciting progress in the field of punk-to-punk technology. Projects like Mapeo, Cabal and Beaker Browser show what is possible: small technology for The People's Internet.

Beyond applications, it is exciting to see a commitment to approaches in the Dat ecosystem. Sure, we need applications to get things done but how do we succeed in building those? What paradigms do we need to understand in order to succeed? The ongoing discussion around the benefit and use cases of append-only logs (hypercore) and how to present this information to the application (kappa architecture) shows a focus on the educational dimension.

Today, the reference implementation for the Dat project is written in Javascript. The world of Javascript has shown to be a remarkably flexible language and ecosystem for advancing peer-to-peer technologies. Simple methods of publishing (npm publish), well established distribution channels (the browser) and a philosophy of modularity have enabled so many to get started with building peer-to-peer technology.

However, there is a great need for other languages and ecosystems to benefit from the tools and concepts that are being developed based on the reference implementation. Hobbyists, beginners, artists, researchers, developers etc. all need a working implementation in their language of choice to increase the chances that they discover that they too can build peer-to-peer technology.

This means that there needs to be alternative implementations of the Dat project. In response to this, we are seeing projects like Dat Rust and C++ Dat emerge. Alongside this effort, I propose to add DatPy into the mix.

My initial goals are to implement hypercore as the core abstraction of the Dat project and local-first multicast-dns peer discovery.

Hypercore remains the stable and foundational piece of the Dat ecosystem which enables further innovation (hyperdrive, hyperdb and also ideas like multifeed). It is my hope that with a Python based Hypercore in place, there will be a way for enthusiasts and early-adopters to get started building Python programs based on Dat. This will then start to increase the visibility of the DatPy project in order to build the community.

Besides the benefit of having a Python implementation, I also see advantage of contributing to documentation available for understanding how to implement the Dat project. Efforts like the Dat protocol book and How Dat Works are open to contribution from those like me who are newly entering the space.

I surely cannot succeed alone and welcome collaborators! Find my contact details on decentral1.se or come chat on datpy@freenode on IRC. Furthermore, I will be also working on securing some funding to make this work sustainable.

Follow the progress on this scratchpad or over at hack.decentral1.se/datpy or github.com/datpy.

That's it for now.