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.
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. And on the other hand, long established Python based applications and tools need plugins to take advantage of peer-to-peer functionality.
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 (because Github, blargh).
That's it for now.