Coder Social home page Coder Social logo

py-ipfs's Introduction

py-ipfs

IPFS Logo

standard-readme compliant

python implementation of ipfs

Python implementation of IPFS, the InterPlanetary File System. Not even remotely done yet - check out # fs1 to join the project.

Table of Contents

Background

IPFS is a distributed file system that seeks to connect all computing devices with the same system of files. In some ways, this is similar to the original aims of the Web, but IPFS is actually more similar to a single bittorrent swarm exchanging git objects.

IPFS could become a new major subsystem of the internet. If built right, it could complement or replace HTTP. It could complement or replace even more. It sounds crazy. It is crazy.

Organization

This repository contains the Python package ipfs, which contains the subpackages block, merkledag, naming, and routing, which function as laid out in the main IPFS repo

The repo roughly looks like this::

ipfs
├─ block
├─ merkledag
├─ naming
├─ network
└─ routing

Install

Not ready for prime time yet

Usage

Also not ready for prime time yet

Documentation

To build the Sphinx docs, execute:

$ make -C docs/ <your favorite docs format> # html, pdf etc.

Roadmap

Note: this has been lifted wholesale from js-ipfs and only lightly edited. As such, it may still contain inconsistencies until further editing.

TODO:

  • Create stubs and checklist items for relevant Python modules.
  • Create and link discussion issues at least for each top level.
  • Remove JS discussion issues when no longer needed.

This is the roadmap according to the JS implementation. It has Peer Routing inside the Network hierarchy. The above organization has both at the same level. It also has the Distributed Record Store inside Network, while our organization diagram also has it at first level. TODO: harmonise?

Contribute

IPFS implementation in Python is a work in progress. As such, there's a few things you can do right now to help out:

  • Go through the modules above and check out existing issues. This would be especially useful for modules in active development. Some knowledge of IPFS may be required, as well as the infrasture behind it - for instance, you may need to read up on p2p and more complex operations like muxing to be able to help technically. However, don't let this discourage you! Feel free to ask questions about where to get that knowledge in this repo, or jump into IRC and ask questions there. We're here to help.
  • Perform code reviews. More eyes will help a) speed the project along b) ensure quality and c) reduce possible future bugs.
  • Take a look at both go-ipfs and js-ipfs (which we intend to follow to a point), and also at some of the planning repositories or issues: for instance, the libp2p spec here. Contributions here that would be most helpful are top-level comments about how it should look based on our understanding. Again, the more eyes the better.
  • Add tests. There can never be enough tests.
  • Contribute to the FAQ repository with any questions you have about IPFS or any of the relevant technology. A good example would be asking, "What is a merkledag tree?". If you don't know a term, odds are someone else doesn't either. Eventually, we should have a good understanding of where we need to improve communications and teaching together to make IPFS and IPN better.
  • TODO: write our own CONTRIBUTE.md similar to IPFS's and once we know what we're doing and who's doing it.

Please be aware that all interactions related to multiformats are subject to the IPFS Code of Conduct.

License

MIT

py-ipfs's People

Contributors

bmcorser avatar richardlitt avatar ntninja avatar fredthomsen avatar daviddias avatar candeira avatar jbenet avatar skwerlman avatar sirmackk avatar gitter-badger avatar sumnerevans avatar drozdziak1 avatar ralphbean avatar mvanveen avatar julienpalard avatar joshpxyne avatar jonafato avatar ivilata avatar whereswaldon avatar brendanbenshoof avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.