Source for building
CSS JavaScript Shell Makefile HTML Groff
Latest commit fb42918 Dec 18, 2016 @diasdavid diasdavid committed on GitHub Merge pull request #125 from ipfs/greenkeeper-eslint-3.12.1

IPFS distributions

standard-readme compliant Dependency Status Travis CI Circle CI

Source for building

Table of Contents


The goal is to generate a file hierarchy that looks like this:

dist/index.html -- listing of all bundles available
dist/<dist> -- all versions of <dist>
dist/<dist>/ -- simple readme for <dist>
dist/<dist>/latest -- points to latest <version>
dist/<dist>/<version> -- dist version
dist/<dist>/<version>/ -- readme for <version> listing
dist/<dist>/<version>/<platform>.tar.gz -- archive for <platform>


  • <dist> is a distribution, meaning a program or library we release.
  • <version> is the version of the <dist>
  • <platform> is a supported platform of <dist>@<version>

So for example, if we had <dist> go-ipfs and native-app, we might see a hierarchy like:

├── go-ipfs
│   ├── latest -> v0.3.7
│   ├── v0.3.6
│   │   ├──
│   │   ├── go-ipfs_v0.3.6_darwin-386.tar.gz
│   │   ├── go-ipfs_v0.3.6_darwin-amd64.tar.gz
│   │   ├── go-ipfs_v0.3.6_linux-386.tar.gz
│   │   ├── go-ipfs_v0.3.6_linux-amd64.tar.gz
│   │   └── hashes
│   └── v0.3.7
├── index.html
└── native-app
    ├── latest -> v0.2.1
    └── v0.2.1
        ├── hashes
        ├── ipfs-native-app_v0.2.1_linux.tar.gz

7 directories, 11 files

We call this the distribution index, the listing of all distributions, their versions, and platform assets.

Note how they each describe <platform> differently. This is likely to be inevitable as different platform identifiers will be used by different communities.

distribution index versions / updates

The distribution index changes over time, kind of like a git repository. Since we don't yet have commits, we will just do a poor-man's versioning for the index itself. We will write all version hashes to a file versions in this repository.

A site like or would just serve the latest version of the index.


This project uses a makefile + scripts to build all the things.


should do everything.


Each <dist> has a directory in the root of this repo. inside it there is a Makefile and other necessary scripts. Running



  • figure out what the latest released version is (from github tags)
  • figure out what versions are missing from the index
  • construct the missing <dist>/<version> directories


Issues and PRs welcome! Please check out the issues.

Want to hack on IPFS?