Here's another open draft to track my progress on securing funding to make my work on the DatPy project sustainable. Producing free software does not need to be done for free. As producers of free software, we need to share knowledge on how to make the work sustainable. This is my contribution so far.

Reality Check

It is currently a fact of life that securing funds for free software infrastructural work. This is work comes without a “business model” and cannot return on investment. Infrastructure work is however still incredibly valuable. Here's my current reading list on understanding our current reality for funding opportunities.


Applications made

When I have some spare time I will be publishing the text of each application. I think this is important to do. It would be very useful if I could see the successful application text of other projects with a similar focus.

Funding secured

None yet.

This is a work-in-progress open draft for the map of what needs to be implemented to achieve a working Python based Hypercore. This page may change as my understanding changes.

From my investigation, the following libraries will need to be implemented. This list is taken from the dependency and sub-dependency tree of Hypercore.

Thanks to the C++ Dat dependency tree for help in visualing and estimating this list.

Please note that I aim to initially only provide a local-first multicast-dns implementation for discovering peers. This will allow local-first experiments to move forward. DNS and DHT based discovery can come afterwards.

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. 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 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 or (because Github, blargh).

That's it for now.