decentral1se

https://decentral1.se/

Here's another open draft to track my progress on securing funding to make the work on the DatPy project sustainable. Producing free software does not need to be done for free.

Reality Check

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

References

Applications made

Funding secured

None.

This is a work-in-progress open draft for the map of what needs to be implemented to achieve a working Python based Hypercore (version 7 of the protocol). 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 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 in discovery-channel. This will allow local-first experiments to move forward.

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.