fix: make blog post images work with IPFS

This commit is contained in:
João Peixoto
2021-04-01 16:36:01 +01:00
parent ecc6c3e5c1
commit f8d38e0e0f
378 changed files with 1019 additions and 821 deletions
+3 -3
View File
@@ -65,10 +65,10 @@ sections:
match: "**/*"
templates:
- blog-post
upload_dir: src/.vuepress/public
public_path: ''
upload_dir: src/assets
public_path: "../assets"
front_matter_path: ''
use_front_matter_path: false
use_front_matter_path: true
file_template: ":filename:"
build:
preview_output_directory: dist
+750 -559
View File
File diff suppressed because it is too large Load Diff
+5 -2
View File
@@ -20,6 +20,7 @@
"@vuepress/plugin-blog": "^1.9.4",
"@vuepress/plugin-html-redirect": "^0.1.2",
"@vuepress/plugin-last-updated": "^1.8.2",
"autoprefixer": "^9.8.6",
"eslint": "^7.21.0",
"eslint-config-prettier": "^6.15.0",
"eslint-config-standard": "^16.0.2",
@@ -37,7 +38,7 @@
"markdown-it-task-lists": "^2.1.1",
"markdown-it-video": "^0.6.3",
"npm-run-all": "^4.1.5",
"postcss-nested": "^4.2.3",
"postcss": "^7.0.35",
"prettier": "^2.2.1",
"slug": "^4.0.3",
"standard-version": "^9.1.1",
@@ -47,7 +48,7 @@
"svg-sprite-loader": "^5.2.1",
"svgo": "^1.3.2",
"svgo-loader": "^2.2.2",
"tailwindcss": "^1.9.6",
"tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.1.0",
"tailwindcss-line-clamp": "^1.0.5",
"tailwindcss-touch": "^1.0.1",
"vue": "^2.6.12",
@@ -70,6 +71,8 @@
},
"dependencies": {
"dayjs": "^1.10.4",
"markdown-it-image-lazy-loading": "^1.0.2",
"markdown-it-imsize": "^2.0.1",
"tailwindcss-typography": "^3.1.0",
"v-lazy-image": "^1.4.0",
"v-scroll-lock": "^1.3.1",
+11 -1
View File
@@ -91,6 +91,8 @@ module.exports = {
md.use(require('markdown-it-footnote'))
md.use(require('markdown-it-task-lists'))
md.use(require('markdown-it-deflist'))
md.use(require('markdown-it-imsize'))
md.use(require('markdown-it-image-lazy-loading'))
},
},
themeConfig: {
@@ -151,7 +153,6 @@ module.exports = {
],
[require('./plugins/pageData')],
[require('./plugins/vuepress-plugin-trigger-scroll')],
['vuepress-plugin-img-lazy'],
[
'@vuepress/blog',
{
@@ -250,6 +251,15 @@ module.exports = {
chainWebpack: (config, isServer) => {
config.module.rules.delete('svg')
config.module
.rule('images')
.use('url-loader')
.loader('url-loader')
.tap((options) => {
options.limit = -1
return options
})
// prettier-ignore
config.module
.rule('svg')
+2 -2
View File
@@ -25,6 +25,6 @@ module.exports = [
],
['meta', { name: 'theme-color', content: '#16161F' }],
['meta', { name: 'msapplication-TileColor', content: '#156ff7' }],
['meta', { name: 'apple-mobile-web-app-title', content: 'Protocol Labs' }],
['meta', { name: 'application-name', content: 'Protocol Labs' }],
['meta', { name: 'apple-mobile-web-app-title', content: 'IPFS Blog & News' }],
['meta', { name: 'application-name', content: 'IPFS Blog & News' }],
].concat(favicons)
+4 -1
View File
@@ -4,7 +4,10 @@
</head>
<body>
<script>
window.location.pathname = '/404.html'
var ipfsPathRegExp = /^(\/(?:ipfs|ipns)\/[^/]+)/
var ipfsPathPrefix =
(window.location.pathname.match(ipfsPathRegExp) || [])[1] || ''
window.location.pathname = ipfsPathPrefix + '/404.html'
</script>
</body>
</html>
@@ -5,8 +5,8 @@
:class="imgClass"
:sizes="sizes"
:srcset="srcsetString"
:src="withBase(src, ctx)"
:src-placeholder="withBase(srcPlaceholder, ctx)"
:src="requireAsset(src)"
:src-placeholder="requireAsset(srcPlaceholder)"
loading="lazy"
/>
<p v-if="caption" class="type-p4 mt-3">{{ caption }}</p>
@@ -14,11 +14,11 @@
</template>
<script>
import withBase from '@theme/components/mixins/withBase'
import requireAsset from '@theme/components/mixins/requireAsset'
export default {
name: 'LazyImage',
mixins: [withBase],
mixins: [requireAsset],
props: {
alt: {
type: String,
@@ -60,7 +60,7 @@ export default {
if (srcsetObject) {
return Object.keys(srcsetObject)
.map(function (key, index) {
return `${self.withBase(srcsetObject[key], self.ctx)} ${key}`
return `${self.requireAsset(srcsetObject[key], self.ctx)} ${key}`
})
.join(', ')
}
@@ -85,8 +85,8 @@ export default {
@apply opacity-0;
}
.v-lazy-image[src='/card-placeholder.png'],
.v-lazy-image[src='card-placeholder.png'],
.v-lazy-image[src*='card-placeholder'],
.v-lazy-image[src*='blog-post-placeholder'],
.v-lazy-image-loaded {
@apply bg-gray;
animation: fade-in 0.7s ease-in-out forwards;
@@ -1,6 +1,6 @@
<template>
<div
class="group bg-white rounded overflow-hidden flex flex-col transform hover:scale-105 duration-300 ease-in-out"
class="group bg-white rounded overflow-hidden flex flex-col"
itemprop="mainEntityOfPage"
>
<article
@@ -20,7 +20,7 @@
@click="handleVideoClick"
>
<LazyImage
class="h-full embed-responsive-item"
class="h-full embed-responsive-item transform hover:scale-105 duration-500 ease-in-out"
img-class="w-full h-full object-cover"
itemprop="image"
:alt="title"
@@ -39,7 +39,7 @@
</div>
<div v-else class="cover embed-responsive embed-responsive-og">
<LazyImage
class="h-full embed-responsive-item"
class="h-full embed-responsive-item transform hover:scale-105 duration-500 ease-in-out"
img-class="h-full object-cover"
itemprop="image"
:alt="title"
@@ -20,6 +20,7 @@
<LazyImage
img-class="object-contain rounded w-full"
:alt="$page.title"
src-placeholder="/blog-post-placeholder.png"
:src="`${image ? image : '/blog-post-placeholder.png'}`"
/>
</div>
@@ -1,6 +1,6 @@
<template>
<div
class="group bg-white rounded overflow-hidden flex flex-col transform hover:scale-105 duration-300 ease-in-out"
class="group bg-white rounded overflow-hidden flex flex-col"
itemprop="mainEntityOfPage"
:to="path"
>
@@ -13,8 +13,8 @@
<div class="cover embed-responsive embed-responsive-og">
<router-link :to="path" class="embed-responsive-item">
<LazyImage
class="h-full"
img-class="h-full object-cover"
class="h-full transform hover:scale-105 duration-500 ease-in-out"
img-class="w-full h-full object-cover"
itemprop="image"
:alt="title"
:src="`${
@@ -3,25 +3,22 @@ const { normalize, isAbsolute } = require('path')
export default {
methods: {
requireAsset: function (assetPath, ctx = this.$page.regularPath) {
requireAsset: function (assetPath) {
// bail if assetPath doesn't exist
if (!assetPath) return ''
// if a url or absolute path simply return the asset link
if (isExternal(assetPath)) return assetPath
if (isAbsolute(assetPath)) return this.withBase(assetPath)
const fullPath = normalize(ctx + assetPath).replace(/^\/|\/$/g, '')
try {
return require('@source/' + fullPath)
} catch (e) {
console.error('could not load asset: ', fullPath)
return ''
if (isAbsolute(assetPath)) {
const fullPath = normalize(assetPath).replace(/^\/|\/$/g, '')
try {
return require('@source/assets/' + fullPath)
} catch (e) {
console.error('Could not load asset: ', fullPath)
return ''
}
}
},
withBase: function (path = '') {
const { $withBase } = this.$root
return path.charAt(0) === '/' ? $withBase.call(this, path) : path
},
},
}
@@ -1,8 +0,0 @@
export default {
methods: {
withBase: function (path = '') {
const { $withBase } = this.$root
return path.charAt(0) === '/' ? $withBase.call(this, path) : path
},
},
}
+1 -1
View File
@@ -74,7 +74,7 @@ const theme = {
charcoalMuted: '#7f8491',
gray: {
dark: '#707175',
default: '#d1d1d6',
DEFAULT: '#d1d1d6',
light: '#f5f6f7',
pale: '#edf0f4',
background: '#f1f3f2',
+1 -1
View File
@@ -31,4 +31,4 @@ You can't _yet_ "follow" the blog with ipfs, but we're working on it and expect
Don't miss any InterPlanetary updates!
![](/000-hello-worlds-earthrise.png)
![](../assets/000-hello-worlds-earthrise.png)
+2 -2
View File
@@ -9,7 +9,7 @@ tags:
- 'tutorial'
---
[![](/002-ipscend.png)](https://github.com/diasdavid/ipscend)
[![](../assets/002-ipscend.png)](https://github.com/diasdavid/ipscend)
[`ipscend`](https://github.com/diasdavid/ipscend) is a new tool to help developers publish their static web content to IPFS and share it easily, while keeping history and more. It is heavily inspired by previous static web content publishing tools, like GitHub Pages and surge.
@@ -24,7 +24,7 @@ Currently, `ipscend` offers a set of features, accessible through a CLI, and ins
- `ipscend versions` - Prints out the published versions for the app and its respective timestamp.
- `ipscend screenshot` - Opens a screenshot preview of all the published versions of your app. In order to generate the screenshots, you must first run `ipscend screenshot --gen`.
![](/002-ipscend-screenshot.gif)
![](../assets/002-ipscend-screenshot.gif)
An `ipscend.json` object for a project with some published versions will look like:
+2 -2
View File
@@ -9,7 +9,7 @@ tags:
- conferences
---
![](/003-registry-mirror-interactive-logo.png)
![](../assets/003-registry-mirror-interactive-logo.png)
Node.js Interactive, the first Node.js conference organized by the Linux Foundation, happened on Dec 8-9 of 2015. There were hundreds of participants, and dozens of really amazing talks divided in 3 specific tracks: backend, frontend and IoT.
@@ -19,7 +19,7 @@ You can learn about that project in this blog post, check out the [talk slides](
## Enter registry-mirror
![](/003-registry-mirror.png)
![](../assets/003-registry-mirror.png)
[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io) [![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/) [![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs)
`registry-mirror` enables distributed discovery of npm modules by fetching and caching the latest state of npm through IPNS, the InterPlanetary Naming System. With this state, a node in the network is capable of querying IPFS network for an npm module's cryptographic hash, fetching it from any peer that has it available.
+1 -1
View File
@@ -17,7 +17,7 @@ communication protocols, increased performance, improvements to IPNS (the
Interplanetary Naming System), many bugfixes, and lots of new features to make
IPFS even more powerful.
![0.4.0](/005-ipfs-0-4-0-released-fireworks.jpg)
![0.4.0](../assets/005-ipfs-0-4-0-released-fireworks.jpg)
## The IPFS **Files API**
+1 -1
View File
@@ -6,7 +6,7 @@ description:
author: Richard Littauer
---
[![](/006-distributions-screenshot.png)](https://dist.ipfs.io/)
[![](../assets/006-distributions-screenshot.png)](https://dist.ipfs.io/)
[dist.ipfs.io](https://dist.ipfs.io/) is the new distributions page for IPFS. This is the new one-stop-shop for finding and downloading all official binaries that the IPFS Team produces.
+1 -1
View File
@@ -25,7 +25,7 @@ One set of use cases for CRDTs is when nodes need to collaboratively write to a
In [this 10-minute video](https://www.youtube.com/watch?v=-kdx8rJd8rQ) I show you how we can use the [js-ipfs](https://github.com/ipfs/js-ipfs) library and conflict-free replicated data types (CRDTs) to build a simple text editor that allows several peers to collaborate in real-time. The resulting interactions between the nodes are conflict-free, support offline use, and allow nodes to come in and out of the network while continuously converging data to a single state in all the nodes.
[![https://www.youtube.com/watch?v=-kdx8rJd8rQ](/ipfs-using-crdt.png)](https://www.youtube.com/watch?v=-kdx8rJd8rQ)
[![https://www.youtube.com/watch?v=-kdx8rJd8rQ](../assets/ipfs-using-crdt.png)](https://www.youtube.com/watch?v=-kdx8rJd8rQ)
## Final remarks
+1 -1
View File
@@ -101,7 +101,7 @@ If you run into any hurdles, please open an issue on [ipfs/js-ipfs/issues](https
I'm glad you asked!
![](/contribute-to-ipfs.gif)
![](../assets/contribute-to-ipfs.gif)
We keep curating and updating our [Waffle Board](https://waffle.io/ipfs/js-ipfs) to ensure it signals what is actively being worked on and what is next. We also review issues and tag them with difficulty and a [`help wanted`](https://waffle.io/ipfs/js-ipfs?search=help%20wanted) label, so that it is easy to find place where you can contribute to the project.
+4 -4
View File
@@ -49,7 +49,7 @@ Power users can provide own config (eg. to enable experimental pubsub) via _Pref
**Note:** The embedded node _does not run_ when external node is selected.
Every time you switch back to the embedded node, a new instance is created
on-demand. It can take [a few seconds](/embedded-js-ipfs.gif)
on-demand. It can take [a few seconds](../assets/embedded-js-ipfs.gif)
for a brand-new node to find peers.
### …and more!
@@ -58,9 +58,9 @@ For a longer walkthrough of new features see [Release Notes for v2.2.0](https://
# Install it today!
| Firefox | Chrome / Chromium |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| [![Get the add-on](/firefox-add-on.png)](https://addons.mozilla.org/addon/ipfs-companion/) | [![Install](/chrome-web-store.png)](https://chrome.google.com/webstore/detail/ipfs-companion/nibjojkomfdiaoajekhjakgkdhaomnch) |
| Firefox | Chrome / Chromium |
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| [![Get the add-on](../assets/firefox-add-on.png)](https://addons.mozilla.org/addon/ipfs-companion/) | [![Install](../assets/chrome-web-store.png)](https://chrome.google.com/webstore/detail/ipfs-companion/nibjojkomfdiaoajekhjakgkdhaomnch) |
# Want to contribute?
+13 -13
View File
@@ -18,17 +18,17 @@ If you're not a Windows or `go-ipfs` user, you may still be interested in seeing
### Log output
![log-before](/025-a-look-at-windows-log-before.png)
![log-before](../assets/025-a-look-at-windows-log-before.png)
Issue:
The output on Windows was filled with non-native [control characters](https://en.wikipedia.org/wiki/Control_character). This made our output hard to read, both for users and developers (when malformed logs were shared with us).
![log-after](/025-a-look-at-windows-log-after.png)
![log-after](../assets/025-a-look-at-windows-log-after.png)
Resolution:
We've added a method of translating these characters into native equivalents. There should be no more oddities related to character color or cursor placement, text should be clear and lines shouldn't overlap anymore. This should make everyone a little bit happier.
### Building
![build](/025-a-look-at-windows-build.gif)
![build](../assets/025-a-look-at-windows-build.gif)
Issue:
Building the Windows binary, on Windows itself, had multiple problems: silent failures, lack of respect for user supplied arguments, inconsistent handling of dependencies, and more.
@@ -37,37 +37,37 @@ Multiple fixes had to be applied to `go-ipfs`, `gx`, some of our first and third
### Temporary file access errors
![garbage](/025-a-look-at-windows-garbage.png)
![garbage](../assets/025-a-look-at-windows-garbage.png)
Issue:
When trying to move data-blocks from a temporary location, the destination address was getting corrupted. This led to "Access Denied" errors and the unexpected creation of garbage files in the working directory.
Resolution:
Resolution:
[An audit is in progress](https://github.com/ipfs/go-ipfs/issues/4485), directed at finding areas where memory corruption is possible. We've detected and resolved the Windows specific issue above. Operations should now succeed as expected.
### File output names
Issue:
Issue:
No filters were being applied to file paths during extraction (IPFS -> other file systems). This caused multiple issues when using `ipfs get`.
1. #### Extracting content from IPFS could fail due to native file system restrictions
![File names](/025-a-look-at-windows-filenames.png)
![File names](../assets/025-a-look-at-windows-filenames.png)
FAT32, NTFS, ReFS, and Windows itself, all impose their own path limitations. If a hash contained a non-legal path, operations like `ipfs get` would fail. In the image above, the [XKCD archive ](https://github.com/ipfs/archives/issues/21) could not be downloaded on Windows because the directory "1031 - s keyboard leopard " ends in a space.
2. #### Hashes that contained malicious file paths would be extracted
![overwrite 1](/025-a-look-at-windows-overwrite%201.png)
![overwrite 2](/025-a-look-at-windows-overwrite%202.png)
![overwrite 1](../assets/025-a-look-at-windows-overwrite-1.png)
![overwrite 2](../assets/025-a-look-at-windows-overwrite-2.png)
It was possible for users to craft specific hashes that could escape the extraction root and overwrite files (if the target file's location was known in advance and users had write permissions for the files).
Resolution:
Resolution:
We now account for these limitations and translate path-names into platform legal paths, which are restricted to their hash-root.
### `stdio`
![pipe](/025-a-look-at-windows-pipe.png)
Issue:
![pipe](../assets/025-a-look-at-windows-pipe.png)
Issue:
stdin support was explicitly disabled in `go-ipfs`, preventing basic [IPC](https://en.wikipedia.org/wiki/Inter-process_communication) with other applications.
Resolution:
Resolution:
stdin support has been added to the Windows version of go-ipfs which allows you to place ipfs anywhere in a [pipeline](<https://en.wikipedia.org/wiki/Pipeline_(Unix)>).
## And more...
+4 -4
View File
@@ -27,11 +27,11 @@ The IPFS Web UI has been given a HUGE revamp and is now 10x, no, 100x better tha
- See all of your **connected peers**, geolocated by their IP address
- **Review the settings** for your IPFS node, and update them to better suit your needs
![Screenshot of the status page](/ipfs-webui-status.png)
![Screenshot of the status page](../assets/ipfs-webui-status.png)
| Files | Explore | Peers | Settings |
| ------------------------------------------------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------ |
| ![Screenshot of the file browser page](/ipfs-webui-files.png) | ![Screenshot of the IPLD explorer page](/ipfs-webui-explore.png) | ![Screenshot of the swarm peers map](/ipfs-webui-peers.png) | ![Screenshot of the settings page](/ipfs-webui-settings.png) |
| Files | Explore | Peers | Settings |
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------- |
| ![Screenshot of the file browser page](../assets/ipfs-webui-files.png) | ![Screenshot of the IPLD explorer page](../assets/ipfs-webui-explore.png) | ![Screenshot of the swarm peers map](../assets/ipfs-webui-peers.png) | ![Screenshot of the settings page](../assets/ipfs-webui-settings.png) |
## 🛠 CID tool
+7 -7
View File
@@ -167,13 +167,13 @@ directories and tiny files.
This release includes the latest, very shiny [updated webui](https://github.com/ipfs-shipyard/ipfs-webui). You can view it by
installing go-ipfs and visiting http://localhost:5001/webui. It deserves its own release note - oh look, it [got
one](/51-js-ipfs-0-33/#web-ui-2-0)! Here's a peek:
one](../assets/51-js-ipfs-0-33/#web-ui-2-0)! Here's a peek:
![Screenshot of the status page](/ipfs-webui-status.png)
![Screenshot of the status page](../assets/ipfs-webui-status.png)
| Files | Explore | Peers | Settings |
| ------------------------------------------------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------ |
| ![Screenshot of the file browser page](/ipfs-webui-files.png) | ![Screenshot of the IPLD explorer page](/ipfs-webui-explore.png) | ![Screenshot of the swarm peers map](/ipfs-webui-peers.png) | ![Screenshot of the settings page](/ipfs-webui-settings.png) |
| Files | Explore | Peers | Settings |
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------- |
| ![Screenshot of the file browser page](../assets/ipfs-webui-files.png) | ![Screenshot of the IPLD explorer page](../assets/ipfs-webui-explore.png) | ![Screenshot of the swarm peers map](../assets/ipfs-webui-peers.png) | ![Screenshot of the settings page](../assets/ipfs-webui-settings.png) |
Kudos and thanks to the webui team! 👏
@@ -187,11 +187,11 @@ In this release, we've (a) fixed a slow memory leak in libp2p and (b)
significantly reduced the allocation load. Together, these should improve both
memory and CPU usage. How much you ask? Glad you asked.
![gc-latency](/035-go-ipfs-0-4-18-gc-latency.png)
![gc-latency](../assets/035-go-ipfs-0-4-18-gc-latency.png)
Above is a graph of time our IPFS gateway nodes spend in GC. See the awesome looking light blue line at the bottom? That's the node running 0.4.18. IKR?
![cpu-load](/035-go-ipfs-0-4-18-cpu-load.png)
![cpu-load](../assets/035-go-ipfs-0-4-18-cpu-load.png)
This graph of time spent in execution has greater variability but the improvement is still pretty clear. You want the
light blue one.
+4 -4
View File
@@ -23,7 +23,7 @@ If you didn't have the chance to attend this meetup in person, you can now follo
## Vitor Enes - Borrowing an Identity for a Distributed Counter
[![Watch video](/040-crdt-research-meetup-video1.png)](https://www.youtube.com/watch?v=rGfbcu7UkGk)
[![Watch video](../assets/040-crdt-research-meetup-video1.png)](https://www.youtube.com/watch?v=rGfbcu7UkGk)
In this presentation, Vitor Enes, a PhD student from HasLab, presented a design he co-authored for avoiding the identity explosion in state-based CRDTs.
@@ -33,7 +33,7 @@ Having an entry per replica in the system does not scale, because the state will
## Nuno Preguiça - AntidoteDB and more
[![Play video](/040-crdt-research-meetup-video2.png)](https://www.youtube.com/watch?v=-v_1aJJujdg)
[![Play video](../assets/040-crdt-research-meetup-video2.png)](https://www.youtube.com/watch?v=-v_1aJJujdg)
When using geo-replicated databases, there is a first wave of databases that are eventually consistent (like Cassandra and Riak) that offer high availability but little automation to deal with concurrency. Lately, second-generation DBMSs like Spanner and CosmosDB offer strong consistency guarantees, but at the necessary expense of availability in the face of network partitions.
@@ -43,7 +43,7 @@ What about numeric invariants? How can you guarantee, for instance, that, in a g
## Ali Shoker - As Secure as Possible Eventual Consistency
[![play video](/040-crdt-research-meetup-video3.png)](https://www.youtube.com/watch?v=ip2XhudTEGE)
[![play video](../assets/040-crdt-research-meetup-video3.png)](https://www.youtube.com/watch?v=ip2XhudTEGE)
CRDTs and Strong Eventual Consistency gives us the guarantee that all replicas will eventually converge, but this may only be true depending on your fault model. If, for instance, a replica fails to apply an operation (due to a bug, a hardware failure or malicious code, for instance), the system is not guaranteed to converge.
@@ -53,6 +53,6 @@ Clients can then opt into using the more secure BFT certificate (with the compro
## Evan Miyazono - Protocol Labs RFP Program
[![play video](/040-crdt-research-meetup-video4.png)](https://www.youtube.com/watch?v=PkjfwmFe75s)
[![play video](../assets/040-crdt-research-meetup-video4.png)](https://www.youtube.com/watch?v=PkjfwmFe75s)
Evan Miyazono, captain of the research team at Protocol Labs (PL), provides an overview of the PL approach to external research, and describes the PL Request For Proposals (RFP) and grant program.
+2 -2
View File
@@ -16,7 +16,7 @@ tags:
<br/>
[![](/ipfs-camp-2019.png)](https://camp.ipfs.io)
[![](../assets/ipfs-camp-2019.png)](https://camp.ipfs.io)
<br/>
@@ -24,7 +24,7 @@ The Camp will bring together the Core Developers and Contributors to the IPFS pr
Join us on 27-30th June at the beautiful Campus La Mola in Barcelona for an action-packed program of workshops, talks and deep dives on everything IPFS.
![](/ipfs-camp-2019-campus.jpeg)
![](../assets/ipfs-camp-2019-campus.jpeg)
Registration is a 2-step process. The 1st step is an application were you can tell us why you are excited to attend the camp and what you would like to share with the other attendees. The next step is a review and selection of the best applications by the IPFS team. If youre application is selected well send you a link to register by April 30th. IPFS Camp is limited to 150 hackers.
+4 -4
View File
@@ -13,11 +13,11 @@ In Q4 2018, we undertook a new planning process for the IPFS project to more cle
To ground our thinking about the next year, we first had to zoom out to the core mission of the IPFS project in the long-term. We take on many efforts and support many groups in our open source community, but it is all driven by the aim to make the internet more accessible, empowering, and useful for many years to come. With much wordsmithing, we condensed this into our first (written) [mission statement](https://github.com/ipfs/roadmap#ipfs-mission-statement)! 👏
![IPFS Mission Statement](/043-ipfs-2019-roadmap-mission-statement.png)
![IPFS Mission Statement](../assets/043-ipfs-2019-roadmap-mission-statement.png)
This mission is reflected in our goals for IPFS - what we hope to tangibly achieve in the world. So far, we've identified **SIXTEEN** ranging over the next 5-10 years of work. These include launching the [Interplanetary Web](https://github.com/ipfs/roadmap#-interplanetary-web---mars-2024-d3-e3-i4), making the memex a reality with the [Personal Web](https://github.com/ipfs/roadmap#-personal-web-d3-e4-i2), snapshotting all human knowledge with the [Self-Archiving Web](https://github.com/ipfs/roadmap#-self-archiving-web-d4-e4-i4), and even merging the web and the OS with [WebOS](https://github.com/ipfs/roadmap#-webos-d5-e2-i3) among others. While there are assuredly many that we havent explored yet, 16 is a good start - and far more than we could possibly work on this year. Mission "Plan 2019" was underway! 🚀
![IPFS Goals](/043-ipfs-2019-roadmap-goals.png)
![IPFS Goals](../assets/043-ipfs-2019-roadmap-goals.png)
To narrow in on where we should begin, we ranked the goals on a number of factors to create an ordered list. We sorted first in terms of low difficulty or "delta" (i.e. minimal additional requirements and fewer dependencies from the capabilities IPFS has now), then high ecosystem growth (growing our community and resources to help us gravity assist and accelerate our progress), and finally high importance (to ensure IPFS has a strong, positive impact on the world). This [sorting function](https://github.com/ipfs/roadmap#2019-priority) gave us a ranked list of goals to work towards to achieve our mission - where completing earlier goals brought us closer to the technical requirements and resources to achieve later goals. 🤩
@@ -27,7 +27,7 @@ Improving IPFS for package managers also has the added benefit of diagnosing and
Identifying our [top priority for the year](https://github.com/ipfs/roadmap#2019-priority) was an important achievement, but it was still just the beginning. Next, we needed to break that goal down into milestones so we could incrementally add features, performance improvements, and educational guides to make “IPFS for package managers” a reality. We did this in two stages. First, individual IPFS working groups drafted feature and performance milestones of the work they saw as most important to achieve our goal. After a quick cross-working group feedback loop for asks and alignment, we “merged” across all working group roadmaps to create a unified project-level roadmap. You can see the results of this in our [2019 Epics](https://github.com/ipfs/roadmap#2019-epics). 👀
![IPFS 2019 Epics](/043-ipfs-2019-roadmap-2019-epics.png)
![IPFS 2019 Epics](../assets/043-ipfs-2019-roadmap-2019-epics.png)
When taking on Package Managers as a top use case and priority, we realized there was still much we didnt know about the needs and requirements to support this community - so learning more was our first step. We spun up a new [Package Managers Working Group](https://github.com/ipfs/package-managers) in early Q1, which has been focused on research, knowledge-sharing, and stress-testing the protocol with demos and experiments to target our efforts for the rest of the year. The team has already identified a bunch of low hanging fruit around usability and performance. Want to get involved? [Check out this list of known issues and feature requests!](https://github.com/ipfs/package-managers/blob/master/blockers.md) _(We'd also love to hear about your ideas, experiments, and pain points - add them here!)_ 💪
@@ -37,6 +37,6 @@ When we started out with 2019 planning, we actually took on **THREE** top-level
Given this realization, we made the hard choice to descope those goals for 2019 and focus our energies on supporting package managers. However, wed already finalized our Q1 OKRs and much of the prioritized work was still aligned and valuable for our narrowed priority. Therefore, we decided to pause any additional re-planning until the end-of-quarter mark. Not to fear, Q2 brings lots of fresh package-manager-focused improvements built on all of our great Q1 learnings. Curious what the working groups are picking up and how you can help out? Check out the [IPFS Q2 OKRs](https://docs.google.com/spreadsheets/d/1YSeyWqXh3ImanRrTkYQHHkCofiORn68bYqM_KTLBlsA/edit) and associated planning issues [here](https://github.com/ipfs/team-mgmt/issues/902). 🤗
![IPFS 2019 Q2 OKRs](/043-ipfs-2019-roadmap-q2-okrs.png)
![IPFS 2019 Q2 OKRs](../assets/043-ipfs-2019-roadmap-q2-okrs.png)
Since the [IPFS Alpha release](https://github.com/ipfs/ipfs/blob/master/README.md#alpha-distribution) in February 2015, the IPFS project has grown significantly - including releasing our [Data Model (IPLD)](http://ipld.io/) and [Networking Stack (libp2p)](https://libp2p.io/) as standalone projects, amongst many other [exciting updates recentrly](https://filecoin.io/blog/update-2018-q3-q4/#9-ipfs-update-for-filecoin). The past 4 years have brought huge improvements to the protocol, but were most excited about the path to come and all the awesome new capabilities described in our [working group roadmaps](https://github.com/ipfs/roadmap#2019-working-groups-roadmaps). We hope youll join us on that quest - whether its suggesting usability improvements, writing performance benchmarks, helping optimize our [new apt-on-ipfs experiment](https://github.com/ipfs/package-managers/issues/18) (or contribute your own!), or any other new endeavors you propose. Onwards! 🤝
+2 -2
View File
@@ -11,11 +11,11 @@ tags:
- 'libp2p'
---
![](/ipfs-devs-meeting-july-2018.png)
![](../assets/ipfs-devs-meeting-july-2018.png)
Last July we hosted the first ever IPFS and Libp2p developer meetings to bring together a small group of core developers and major users of the protocols. They were a huge success! We are incredibly thankful for everyone's participation, energy, enthusiasm - and for sharing their knowledge with the whole group.
![](/devs-meeting-july-2018-group.gif)
![](../assets/devs-meeting-july-2018-group.gif)
The week was great for core developers, contributors and researchers to spend time together diving deep on open design problems, demoing exciting new tools and products being built on or around IPFS and Libp2p, and exploring the path forward for the protocols and working groups. Check out the [jam-packed schedule](https://developersmeetingsberlin2018.sched.com/) to see what we discussed.
+8 -8
View File
@@ -20,7 +20,7 @@ If you aren't familiar with the [InterPlanetary Space Training Camp](https://cam
> Specialized and focused trainings on building for the DWeb.
![](/core-elective-courses.png)
![](../assets/core-elective-courses.png)
Catch up on all the recordings and materials at 📼 👩🏽‍🏫 [https://github.com/ipfs/camp#-core--elective-courses](https://github.com/ipfs/camp#-core--elective-courses)
@@ -28,7 +28,7 @@ Catch up on all the recordings and materials at 📼 👩🏽‍🏫 [https://gi
> Collaborate in Groups to understand, explain and present how multiple parts of the DWeb Stack work
![](/poster-projects.png)
![](../assets/poster-projects.png)
Catch up on all the recordings & notes at 📼 📒 [https://github.com/ipfs/camp#-poster-projects](https://github.com/ipfs/camp#-poster-projects)
@@ -36,13 +36,13 @@ Catch up on all the recordings & notes at 📼 📒 [https://github.com/ipfs/cam
> Form small teams to understand, research and come up with solutions to one of the many open problems
![](/deep-dives.png)
![](../assets/deep-dives.png)
Catch up on all the recordings & notes at 📼 📒 [https://github.com/ipfs/camp#-deep-dives](https://github.com/ipfs/camp#-deep-dives)
#### [**⚡️ Lightning Talks**](https://github.com/ipfs/camp#%EF%B8%8F-lightning-talks) - Learn what is the latest from multiple projects in the IPFS ecosystem
![](/lightning-talks.png)
![](../assets/lightning-talks.png)
Catch up on all the recordings at 📼 [https://github.com/ipfs/camp#%EF%B8%8F-lightning-talks](https://github.com/ipfs/camp#%EF%B8%8F-lightning-talks)
@@ -50,7 +50,7 @@ Catch up on all the recordings at 📼 [https://github.com/ipfs/camp#%EF%B8%8F-l
> Get blown away by huge Sci-Fi experiments, soon to be seen in a Network close to you
![](/sci-fi-fair.png)
![](../assets/sci-fi-fair.png)
Catch up on all the interviews at 📼 [https://github.com/ipfs/camp#-sci-fi-fair](https://github.com/ipfs/camp#-sci-fi-fair)
@@ -58,7 +58,7 @@ Catch up on all the interviews at 📼 [https://github.com/ipfs/camp#-sci-fi-fai
> Gather folks around shared topics of interest and discuss collaborations.
![](/unconf.png)
![](../assets/unconf.png)
Catch up on all the artefacts at 📒 [https://github.com/ipfs/camp#-unconf](https://github.com/ipfs/camp#-unconf)
@@ -66,7 +66,7 @@ Catch up on all the artefacts at 📒 [https://github.com/ipfs/camp#-unconf](htt
And it was a blast. Here is a quick video recap as a souvenir for everyone that was there, and a postcard for everyone that didn't get a chance this time around:
[![](/050-ipfs-camp-recap-youtube-preview.jpg)](https://youtu.be/kc_dxO-V8YM)
[![](../assets/050-ipfs-camp-recap-youtube-preview.jpg)](https://youtu.be/kc_dxO-V8YM)
However, the IPFS Camp spirit doesn't stop here, now it is all about continuing the dialog that got started and taking all the learnings and materials to local IPFS Communities, showing and teaching more folks how to build on the P2P Web. All the content produced can be found in the IPFS Camp Repo -- http://github.com/ipfs/camp. We will be posting all the recordings soon as well.
@@ -77,7 +77,7 @@ Last, but definitely not the least, a huge THANK YOU ❤️ to everyone that con
- An outstanding [Production Team](https://camp.ipfs.io/team) that created the phenomenal experience for everyone
- The over 4000 IPFS Community members that have been building this project with us since the beginning
![](/050-ipfs-camp-recap-gif.gif)
![](../assets/050-ipfs-camp-recap-gif.gif)
On behalf of the whole IPFS Project, thank you all for being part of this project and community, such an ambitious goal couldn't be achieved without all your energy, passion and dedication to make it happen. Onwards!
+1 -1
View File
@@ -11,7 +11,7 @@ tags:
**go-ipfs is introducing a new release cycle and process to ensure more reliable and frequent releases!**
![go-ipfs-release-process-illustration](/go-ipfs-release-process.png)
![go-ipfs-release-process-illustration](../assets/go-ipfs-release-process.png)
IPFS is growing and maturing. We're seeing many more users in our network and
have recognised the need to level up our release process to deliver a more
+1 -1
View File
@@ -11,7 +11,7 @@ tags:
IPFS is growing! This year we've grown immensely in network size, number of apps building with IPFS, number of end-users of IPFS-powered apps, and the number of developers contributing to the codebase.
![ecosystem diagram edited](/ecosystem-diagram.png)
![ecosystem diagram edited](../assets/ecosystem-diagram.png)
Along with that growth, we've also experienced some challenges:
+2 -2
View File
@@ -17,13 +17,13 @@ Theres also a brand new example application that you can play with showing ho
[github.com/ipfs/js-ipfs-http-client/examples/browser-pubsub](https://github.com/ipfs/js-ipfs-http-client/tree/master/examples/browser-pubsub)
![Screenshot of PubSub in the browser example app](/056-pubsub-in-the-browser-demo-screenshot.png)
![Screenshot of PubSub in the browser example app](../assets/056-pubsub-in-the-browser-demo-screenshot.png)
This was made possible by the experimentation done in a [“lite” http client](https://github.com/ipfs-shipyard/js-ipfs-http-client-lite) I was working on, which was originally meant to be just really really small (its currently ~13kb gzipped vs ~200kb for the regular client). To make it small we needed to switch to using the fetch API but I soon realized that this opened up a bunch of other opportunities, like enabling pubsub. We also get easily cancelable requests, request timeouts, custom fetch implementations and a switch to async/await and async iterators.
I originally demoed it in the lite client here:
[![Watch video](/056-pubsub-in-the-browser-video.jpg)](https://www.youtube.com/watch?v=NZb6ybkAYWs)
[![Watch video](../assets/056-pubsub-in-the-browser-video.jpg)](https://www.youtube.com/watch?v=NZb6ybkAYWs)
The lite client has been a great proving ground for ensuring the “hard parts” of the API are now possible using browser native APIs. Ill be applying more of the learnings from there to the regular http client in the near future, which should hopefully result in a smaller bundle size, as well as more cool new features like this one.
+2 -2
View File
@@ -31,7 +31,7 @@ This workshop introduced a few awesome visualization and learning tools that you
Watch the recording below or check out the [slides](https://github.com/ipfs/camp/blob/master/CORE_AND_ELECTIVE_COURSES/CORE_COURSE_A/IPFS_Camp_Core_Course_A_Slides.pdf)!
[![Video: Understanding How IPFS Deals with Files](/057-ipfs-camp-course-videos-core-a-thumbnail.png)](https://youtu.be/Z5zNPwMDYGg)
[![Video: Understanding How IPFS Deals with Files](../assets/057-ipfs-camp-course-videos-core-a-thumbnail.png)](https://youtu.be/Z5zNPwMDYGg)
_Video: [Understanding How IPFS Deals with Files](https://youtu.be/Z5zNPwMDYGg)_
@@ -41,7 +41,7 @@ This course covers all the stuff that happens _after_ you add a file to IPFS, hi
Watch the video below or check out the slides (available on [Google Slides with speaker notes](https://docs.google.com/presentation/d/1UOX-a1lCxi-LOyEOe9VEFRcxg_j93Xkywwa4Y95TJaw/edit?usp=sharing) or as a [PDF](https://github.com/ipfs/camp/blob/master/CORE_AND_ELECTIVE_COURSES/CORE_COURSE_D/IPFS_Camp_Core_Course_D_Slides.pdf))!
[![Video: The Lifecycle of Data in DWeb](/057-ipfs-camp-course-videos-core-d-thumbnail.png)](https://youtu.be/fLUq0RkiTBA)
[![Video: The Lifecycle of Data in DWeb](../assets/057-ipfs-camp-course-videos-core-d-thumbnail.png)](https://youtu.be/fLUq0RkiTBA)
_Video: [The Lifecycle of Data in DWeb](https://youtu.be/fLUq0RkiTBA)_
+4 -4
View File
@@ -14,7 +14,7 @@ IPFS Desktop has come a long way to reach its current form. We are here to celeb
Back in May 2015, Juan Benet pushed the first so-called "Initial Commit" to start a project at the time named "ipfs-electron". The purpose of the app was quite simple and that hasn't changed much with time: providing a long running daemon, alongside with a GUI for managing it.
![Evolution of IPFS Desktop](/058-ipfs-desktop-0-9-evolution.jpg)
![Evolution of IPFS Desktop](../assets/058-ipfs-desktop-0-9-evolution.jpg)
Regarding the application's name, it went from "ipfs-electron" to "IPFS Native Application", then to ["IPFS Station"](https://github.com/ipfs-shipyard/ipfs-desktop/commit/5a123c2c9ed0fe3ec86aad336417ddbefdea9243), it being a much fancier name. However, we [changed it again](https://github.com/ipfs-shipyard/ipfs-desktop/pull/574) to "IPFS Desktop" and that's where we are right now! It's a result of an uniformization between our applications names and the most self-explanatory option we had.
@@ -26,13 +26,13 @@ The newest version of IPFS Desktop, 0.9.2 - yes, we already released two patch v
With the [recent update to the Web UI](https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.5.0), we are now capable of navigating through the whole IPFS system. Previously, you could only access your 'Files' (the contents of the [Mutable File System](https://proto.school/#/mutable-file-system)). Now, you can navigate not only to any `/ipfs/` or `/ipns/` path, but also any content [pinned](https://docs.ipfs.io/guides/concepts/pinning/) to your IPFS node!
![Browsing /ipns/ipns.io](/058-ipfs-desktop-0-9-browse-wild.jpg)
![Browsing /ipns/ipns.io](../assets/058-ipfs-desktop-0-9-browse-wild.jpg)
### Use npm on ipfs
In addition, we are introducing a new experiments section on the 'Settings' page which will allow you to enable new experimental features as they come in. To celebrate this new section, we are adding [npm on ipfs](https://github.com/ipfs-shipyard/npm-on-ipfs) to it! This is a project that allows you to use the `ipfs-npm` and `npm-ipfs` commands to install your Node.js modules through the IPFS network!
![Experiments section](/058-ipfs-desktop-0-9-npm-ipfs.jpg)
![Experiments section](../assets/058-ipfs-desktop-0-9-npm-ipfs.jpg)
**Please note** that this feature is intended for those who have [Node.js](https://nodejs.org) installed on their system. Moreover, the activation will only work if your setup does not require additional permissions for executing `npm install -g`.
@@ -40,7 +40,7 @@ In addition, we are introducing a new experiments section on the 'Settings' page
Adding `ipfs` command line tools to your system was actually introduced in 0.8.0, but it's always worth noting that you are just a click away of having the `ipfs` command available from your command line! This way, you don't have to worry about configuring your `PATH` variable or doing other confusing stuff to start using all IPFS capabilities. Just go to Settings and enable "IPFS command line tools"!
![IPFS command line tools](/058-ipfs-desktop-0-9-ipfs-cmd.jpg)
![IPFS command line tools](../assets/058-ipfs-desktop-0-9-ipfs-cmd.jpg)
### And more...
@@ -41,7 +41,7 @@ _Hector explains the topology of the RPi cluster (feat. many blinkenlights)_
Hector and the rest of the [IPFS Cluster](https://cluster.ipfs.io) team came through with a project high in fun, fabric, and blinking lights: the Raspberry Pi IPFS Cluster. Six tiny but mighty (and lovingly upholstered) nodes tirelessly worked together to pin whatever CIDs were thrown at them and reported their pinset load through an ingenious hardware display. Not pictured: [@cluster-labs'](https://github.com/cluster-labs) [Horizon UI for IPFS Cluster](https://medium.com/towardsblockchain/we-made-a-dashboard-for-ipfs-clusters-and-now-we-want-you-to-check-it-out-a87234629908) giving fair attendees even more fine-grained insights into the pinset.
![@achingbrain's npm-in-a-box](/059-ipfs-camp-sci-fi-fair-videos-npm-in-box.jpg)
![@achingbrain's npm-in-a-box](../assets/059-ipfs-camp-sci-fi-fair-videos-npm-in-box.jpg)
_[Alex Potsidess](https://github.com/achingbrain) npm-in-a-box project_
**BONUS:** If you like big IPFS nodes running on small computers (and/or "The IT Crowd"), you may also enjoy Alex's ["npm in a box"](https://github.com/ipfs-shipyard/npm-on-ipfs), which packs the entire NPM package repository on a very portable (and pretty sleek looking) RPi based IPFS node with a BIG archival grade hard drive. Take this with you on your field trip and your team will never see an npm timeout ever again.
@@ -63,19 +63,19 @@ These are just some of the projects that made it to the Fair: head over to the [
Our tireless camera crew could only be in one place at a time (we're working on it), which has left some of our favorite projects sadly underdocumented in the video department. Here are some stills that fill in the gaps:
![@MarneeDear's FARS + @gorhgorh's minitel IPFS](/059-ipfs-camp-sci-fi-fair-videos-marnee-minitel.jpg)
![@MarneeDear's FARS + @gorhgorh's minitel IPFS](../assets/059-ipfs-camp-sci-fi-fair-videos-marnee-minitel.jpg)
_[Marnee Dearman](https://github.com/MarneeDear)'s IPFS-over-Ham Radio FARS project and Jérôme's IPFS Chat on a French Minitel terminal_
![@vasa-develop's 3D collaboration](/059-ipfs-camp-sci-fi-fair-videos-vasa.jpg)
![@vasa-develop's 3D collaboration](../assets/059-ipfs-camp-sci-fi-fair-videos-vasa.jpg)
_[Vasa](https://github.com/vasa-develop)'s CRDT-based collaborative 3D modeling interface_
![@gorhgorh's catbot](/059-ipfs-camp-sci-fi-fair-videos-catbot.jpg)
![@gorhgorh's catbot](../assets/059-ipfs-camp-sci-fi-fair-videos-catbot.jpg)
_[Jérôme Loï](https://github.com/goth goth)'s libp2p-powered Lazer Catbot (unfortunately no cats were on premises)_
![the elusive @rklaehn](/059-ipfs-camp-sci-fi-fair-videos-actyx.jpg)
![the elusive @rklaehn](../assets/059-ipfs-camp-sci-fi-fair-videos-actyx.jpg)
_Actyx's [Rüdiger](https://github.com/rklaehn) has somehow managed to avoid ALL photos at the fair, so here's a shot of him demoing their amazing industrial automation system from the lightning talks_
![@aschmahmann's Fast IPNS](/059-ipfs-camp-sci-fi-fair-videos-ipns.jpg)
![@aschmahmann's Fast IPNS](../assets/059-ipfs-camp-sci-fi-fair-videos-ipns.jpg)
_Last but not least, [Adin](https://github.com/aschmahmann)'s "Fast IPNS" demo (it was VERY FAST!)_
## Keep Exploring!
@@ -18,13 +18,13 @@ We kicked off our time together with a [Welcome from David Dias](https://www.you
### Why IPFS? -- Juan Benet
[![Screen Shot 2019-09-30 at 6 19 45 PM](/why-ipfs-juan-benet.png)](https://www.youtube.com/watch?v=zE_WSLbqqvo&feature=youtu.be)
[![Screen Shot 2019-09-30 at 6 19 45 PM](../assets/why-ipfs-juan-benet.png)](https://www.youtube.com/watch?v=zE_WSLbqqvo&feature=youtu.be)
Juan Benet, the original creator of IPFS, used [his keynote on "Why IPFS?"](https://www.youtube.com/watch?v=zE_WSLbqqvo&feature=youtu.be) to help attendees zoom out to the wider context around our moment in time, how technology is evolving, and how IPFS fits into the bigger picture. He described the history of the internet, some potential predictions about the future, and how IPFS can address some major problems in the web as it exists today (notably censorship, inefficiency, and poor offline usability). Persistence, innovation, and determination are required to ensure we continue making progress for the long haul!
### IPFS Ecosystem Progress Report - Molly Mackinlay
[![Screen Shot 2019-09-30 at 6 19 33 PM](/ipfs-ecosystem-molly-mackinlay.png)](https://www.youtube.com/watch?v=jpQnQbfhuBc&feature=youtu.be)
[![Screen Shot 2019-09-30 at 6 19 33 PM](../assets/ipfs-ecosystem-molly-mackinlay.png)](https://www.youtube.com/watch?v=jpQnQbfhuBc&feature=youtu.be)
Want to learn about how the IPFS Community and Ecosystem have been growing? [This video](https://www.youtube.com/watch?v=jpQnQbfhuBc&feature=youtu.be) from Molly Mackinlay, IPFS Project Lead, is a great overview of the scale, progress, and important milestones IPFS has achieved so far in 2019. IPFS-powered apps and tools now reach **millions of monthly end users**, and _hundreds of thousands of nodes_ participate in the public IPFS network daily!
@@ -36,7 +36,7 @@ To close, Juan set us back out through the airlock back toward Earth with his [I
### Recap
[![Screen Shot 2019-10-02 at 7 44 37 PM](/ipfs-camp-2019-recap.png)](https://youtu.be/cQJXnJDbXv4)
[![Screen Shot 2019-10-02 at 7 44 37 PM](../assets/ipfs-camp-2019-recap.png)](https://youtu.be/cQJXnJDbXv4)
Curious how everything fit together, or want to understand how the pieces of IPFS Camp became a greater whole? Check out [this overview from Molly](https://youtu.be/cQJXnJDbXv4) on how different components like the Poster Sessions & Deep Dives, SciFi Fair, Lightning Talks, and the Core & Elective Courses, wove together into a great community event. Many connections between different attendees and projects emerged from IPFS Camp too - spurring new collaborations and integrations. These great recaps from [Textile](https://medium.com/textileio/ipfs-camp-2019-the-highlights-and-takeaways-2b3cb4f42513), [Berty](https://berty.tech/blog/ipfs-camp/), and of course [the IPFS blog](https://blog.ipfs.io/2019-07-08-ipfs-camp-recap/) highlight a few!
@@ -46,13 +46,13 @@ IPFS Camp was all about sharing and forming connections between projects and ind
### Netflix Containers - Edgar Lee
[![Screen Shot 2019-09-30 at 5 23 20 PM](/netflix-containers-edgar-lee.png)](https://youtu.be/wNfk05D887M)
[![Screen Shot 2019-09-30 at 5 23 20 PM](../assets/netflix-containers-edgar-lee.png)](https://youtu.be/wNfk05D887M)
In [this interview](https://youtu.be/wNfk05D887M), we heard from Edgar about how he's exploring distributing container layers through IPFS, and how it's changing his workflow at Netflix. His work on [p2plab](https://github.com/Netflix/p2plab) is already helping benchmark (and improve!!) IPFS throughput in reproducible and quantifiable ways.
### Audius - Hareesh Nagaraj
[![Screen Shot 2019-09-30 at 5 32 15 PM](/audius-hareesh-nagaraj.png)](https://youtu.be/3pSV6ai6QUI)
[![Screen Shot 2019-09-30 at 5 32 15 PM](../assets/audius-hareesh-nagaraj.png)](https://youtu.be/3pSV6ai6QUI)
We [spoke](https://youtu.be/3pSV6ai6QUI) to Hareesh from [Audius](https://audius.co/), a decentralized music streaming platform, about how they're using IPFS as their primary file storing system. Check out their recent [launch blog post](https://techcrunch.com/2019/09/24/audius-music/) to learn more.
+4 -4
View File
@@ -15,7 +15,7 @@ But we're making headway. Today, we'd like to share some collaborations the IPFS
## Stages
![Stages of browser integration](/071-ipfs-in-web-browsers-stages-of-browser-integration.png)
![Stages of browser integration](../assets/071-ipfs-in-web-browsers-stages-of-browser-integration.png)
The path to a truly decentralized web is a long one. For over 30 years the browser has been a [_client_](<https://en.wikipedia.org/wiki/Client_(computing)>) but a foundational concept in P2P systems is that a participant is both a client _and a [server](<https://en.wikipedia.org/wiki/Server_(computing)>)\_. Web browser vendors and web standards bodies have not designed for this architectural shift, so we're breaking it down into steps.
@@ -31,7 +31,7 @@ Brave has tended to live up to its name since the beginning - riling up the brow
Today you can open [`brave://settings/extensions`](brave://settings/extensions) in Brave and see a toggle for enabling IPFS Companion.
![Enabling IPFS Companion in Brave](/071-ipfs-in-web-browsers-enabling-ipfs-companion-in-brave.gif)
![Enabling IPFS Companion in Brave](../assets/071-ipfs-in-web-browsers-enabling-ipfs-companion-in-brave.gif)
Removing this install step _really matters_ for adoption. While technical users are familiar with browser extensions, it's less comfortable for non-technical users, and Brave users have the additional overhead of going to the _Chrome_ web app store to find and install them.
@@ -49,7 +49,7 @@ These powerful APIs enable the js-ipfs node embedded in the browser to provide a
By default, our browser extension still expects [IPFS Desktop](https://github.com/ipfs-shipyard/ipfs-desktop#ipfs-desktop) to be installed, however you can select the experimental option shown below in order to run _a standalone IPFS node_ in Brave itself. Mind this is an _early preview_ of both a full JS IPFS node and a gateway running in a browser extension. Performance and features will improve over time.
![IPFS configuration option for embedded node using Chrome sockets API in Brave](/071-ipfs-in-web-browsers-enable-embedded-node-in-brave.png)
![IPFS configuration option for embedded node using Chrome sockets API in Brave](../assets/071-ipfs-in-web-browsers-enable-embedded-node-in-brave.png)
At IPFS Camp earlier this year, Brave engineer Jocelyn Liu demoed some of these features at the science fair, including one-click install of Companion, the embedded gateway, and also talks about what's to come: tackling the current connectivity limitations such as the lack of DHT support in js-ipfs, and also plans Brave has for the design of the address bar when loading IPFS content.
@@ -61,7 +61,7 @@ Opera is another [early leader](https://blogs.opera.com/mobile/2018/12/ofa-49-wi
Earlier this year [Opera announced they were working on support for IPFS](https://twitter.com/ensdomains/status/1102884419017297921)! We've been talking ever since, and are looking forward to the launch of IPFS support in their Android browser by the end of this year.
![Opera announcing ENS and IPFS at EthCC March 2019](/071-ipfs-in-web-browsers-opera-announcement.png)
![Opera announcing ENS and IPFS at EthCC March 2019](../assets/071-ipfs-in-web-browsers-opera-announcement.png)
## Firefox
+1 -1
View File
@@ -12,7 +12,7 @@ tags:
The title says it all. Learn how to use [go-ipfs as a library with the new tutorial](https://github.com/ipfs/go-ipfs/tree/master/docs/examples/go-ipfs-as-a-library) and take full advantage of the [go-ipfs Core API](https://godoc.org/github.com/ipfs/interface-go-ipfs-core).
![](/go-ipfs-as-a-library.gif)
![](../assets/go-ipfs-as-a-library.gif)
Let us know what you think by opening a topic with your questions and feedback at https://discuss.ipfs.io.
@@ -13,8 +13,8 @@ tags:
Today we're excited to announce the launch of a [brand new ProtoSchool tutorial exploring the **Regular Files API**](https://proto.school/#/regular-files-api), built by the awesome [Gil Domingues](https://github.com/dominguesgm). 🎉
![Tutorial Table of Contents](/074-explore-the-files-api-on-protoschool-toc_screenshot.png)
![Code Challenge](/074-explore-the-files-api-on-protoschool-challenge_screenshot.png)
![Tutorial Table of Contents](../assets/074-explore-the-files-api-on-protoschool-toc_screenshot.png)
![Code Challenge](../assets/074-explore-the-files-api-on-protoschool-challenge_screenshot.png)
This new tutorial explores the methods at the top-level of js-ipfs (`add`, `get`, `cat`, etc.) that are custom-built for working with files. We refer to these methods as the Regular Files API to distinguish them from the Mutable File System (MFS). MFS mimics a more traditional file system interface with methods like `files.cp` and `files.mkdir`, but it hides the complexity of immutable content addressing in IPFS. Check out the [first lesson](https://proto.school/#/regular-files-api/01) of the new tutorial for more on the differences between these two approaches, as well as some important distinctions between the Files API and the DAG API.
@@ -48,7 +48,7 @@ If you'd like to dig a little deeper, we recommend checking out the **Understand
Watch the recording below or check out the [slides](https://github.com/ipfs/camp/blob/master/CORE_AND_ELECTIVE_COURSES/CORE_COURSE_A/IPFS_Camp_Core_Course_A_Slides.pdf)!
[![Video: Understanding How IPFS Deals with Files](/core-a-thumbnail.png)](https://youtu.be/Z5zNPwMDYGg)
[![Video: Understanding How IPFS Deals with Files](../assets/core-a-thumbnail.png)](https://youtu.be/Z5zNPwMDYGg)
_Video: [Understanding How IPFS Deals with Files](https://youtu.be/Z5zNPwMDYGg)_
+1 -1
View File
@@ -16,7 +16,7 @@ tags:
<br/>
_New year, new look._
![Mind map of docs beta nav](/076-ipfs-docs-beta-site-mindmap.png)
![Mind map of docs beta nav](../assets/076-ipfs-docs-beta-site-mindmap.png)
<br/>
_Heres a mind map of how the docs betas navigation works._
+2 -2
View File
@@ -8,7 +8,7 @@ tags:
- 'project planning'
---
> If you're considering a refactor that'll touch **~70** interdependent repos, you've come to the right place for some perspective! This is the sister post to [The Async Await Refactor](/2020-02-01-async-await-refactor/) and covers some of the learnings of completing a big code refactor with a distributed team.
> If you're considering a refactor that'll touch **~70** interdependent repos, you've come to the right place for some perspective! This is the sister post to [The Async Await Refactor](../assets/2020-02-01-async-await-refactor/) and covers some of the learnings of completing a big code refactor with a distributed team.
If you think you'd like to take on a challenge like this, do the math. If each repo takes a day to refactor and if you work on it 5 days a week then you've automatically used 14 of your 52 weeks in a year. That's like, 4 months, and that's the absolute best case scenario.
@@ -30,4 +30,4 @@ This helps when you want to publish a refactored module but don't want it to act
**Keep track of what's been done, who is owning what, and where the PR is**. For you own sanity, keep on top of it and celebrate your progress with the team every step of the way. It's a long road and you and your team will need all the encouragement you can get. Update the team and your community regularly with percentages of how done you are so you can all stay informed of progress and allow yourself to make better estimates for completion.
It's taken us 1 year and 3 months so far, but we're nearly there. Read all about our big refactor: [The Async Await Refactor](/2020-02-01-async-await-refactor/).
It's taken us 1 year and 3 months so far, but we're nearly there. Read all about our big refactor: [The Async Await Refactor](../assets/2020-02-01-async-await-refactor/).
+1 -1
View File
@@ -13,7 +13,7 @@ tags:
- 'breaking change'
---
It's heeeeere! After a very long road, and a lot of [lessons learned](/2020-02-06-big-refactors/), the Async Await refactor of js-libp2p has landed in the **0.27** release. If you're not familiar with the refactor you can read up more about the reasons and history in a recent blog post by the wonderful Alan Shaw, [The Async Await Refactor](/2020-02-01-async-await-refactor/). In addition to the efforts mentioned there, the refactor to js-libp2p includes a slew of additional improvements, the highlights of which you can read about below.
It's heeeeere! After a very long road, and a lot of [lessons learned](../assets/2020-02-06-big-refactors/), the Async Await refactor of js-libp2p has landed in the **0.27** release. If you're not familiar with the refactor you can read up more about the reasons and history in a recent blog post by the wonderful Alan Shaw, [The Async Await Refactor](../assets/2020-02-01-async-await-refactor/). In addition to the efforts mentioned there, the refactor to js-libp2p includes a slew of additional improvements, the highlights of which you can read about below.
In addition to these highlights, we've consolidated many of the core modules of js-libp2p into js-libp2p itself in an effort to make it easier for community members to contribute. We've also consolidated our interface repositories into [libp2p/js-interfaces](https://github.com/libp2p/js-interfaces) and improved the documentation and test suites there.
+1 -1
View File
@@ -10,7 +10,7 @@ tags:
- 'community'
---
![IPFS at ETHDenver 2020](/ipfs-ethdenver-2020.png)
![IPFS at ETHDenver 2020](../assets/ipfs-ethdenver-2020.png)
Next week, the IPFS team will be heading to Denver, Colorado for [ETHDenver](https://www.ethdenver.com/), one of the biggest Ethereum and decentralized web developer-focused events in the US. Were very excited to connect with the dweb community during a week full of presentations, workshops, [#BUIDLathon](https://www.ethdenver.com/buidlweek/)-ing, and community gathering.
+6 -6
View File
@@ -24,7 +24,7 @@ Its a new year, and with it time to update the [IPFS Project Roadmap](https:/
- **Millions of users** access the IPFS HTTP Gateway every week 🎉
- There are **hundreds of dapps, tools, & projects** in the wider IPFS Ecosystem including newcomers like [Anytype](https://anytype.io/), [Microsoft ION](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/toward-scalable-decentralized-identifier-systems/ba-p/560168), [Haven](https://gethaven.app/) by OB1, [Brave](https://brave.com/), [3box](https://3box.io/), [EthDNS](https://medium.com/the-ethereum-name-service/ethdns-9d56298fa38a) and more!! 🙌
![IPFS Ecosystem Diagram](/ipfs-ecosystem-diagram.png)
![IPFS Ecosystem Diagram](../assets/ipfs-ecosystem-diagram.png)
See our [Ecosystem Update from IPFS Camp](https://www.youtube.com/watch?v=jpQnQbfhuBc&feature=youtu.be) to learn more about 2019 adoption!
This growth caused us to shift some of our attention midyear to support new usage and demand - re-focusing some of our working groups on improving documentation, gateway performance, and testing tools to validate large-scale network upgrades (see our [Operation Task-Force blog post](https://blog.ipfs.io/2019-07-31-operation-task-force/) for details). We still made progress on our Package Managers goal, but less than we hoped given **also** investing heavily in other critical areas to support the ecosystem. 🤞
@@ -49,10 +49,10 @@ Focusing on a representative use case like package managers brought focus and st
Our Package Managers goal also helped focus our user research, quarterly objectives, and collaborations. In Q1&2, our Package Managers team surveyed the space and identified core needs documented in our [Package Managers repo](https://github.com/ipfs/package-managers). These insights informed our [quarterly OKR planning](https://github.com/ipfs/team-mgmt/blob/master/OKR/PACKAGE-MANAGERS.md), driving features to make it easier to mirror file system package managers on IPFS. One particular addition was adding metadata on “last updated” time to our unixfs data model to support smarter/faster package updates (humbly named “unixfsv1.5” and already implemented in js-ipfs; coming soon to go). A number of these package-manager-focused improvements are all slated to roll out in our next feature release, go-ipfs 0.5.0 - [feel free to follow along here](https://github.com/ipfs/go-ipfs/issues/6776) or grab the latest master to try them out!
We also formed collaborations with IPFS users to partner on improving IPFS for package management use cases. One of our main collaborations was with [Netflix](https://netflix.com) to optimize the speed of fetching large container images with [Bitswap](https://github.com/ipfs/go-bitswap), our peer-to-peer data transfer algorithm. You can read more about that specific collaboration—and the resulting improvements in Bitswap performance!—in our [new blog post](/2020-02-14-improved-bitswap-for-container-distribution/)!
We also formed collaborations with IPFS users to partner on improving IPFS for package management use cases. One of our main collaborations was with [Netflix](https://netflix.com) to optimize the speed of fetching large container images with [Bitswap](https://github.com/ipfs/go-bitswap), our peer-to-peer data transfer algorithm. You can read more about that specific collaboration—and the resulting improvements in Bitswap performance!—in our [new blog post](../assets/2020-02-14-improved-bitswap-for-container-distribution/)!
![5ms-1024mb](/5ms-1024MB.png =400x)
![5ms-40mb](/5ms-40MB.png =400x)
![5ms-1024mb](../assets/5ms-1024MB.png =400x)
![5ms-40mb](../assets/5ms-40MB.png =400x)
IPFS Cluster also released _[collaborative clusters](https://blog.ipfs.io/2020-01-09-collaborative-clusters/)_, a new feature to enable package manager maintainers and mirrors to add and replicate repositories across a community of IPFS nodes. With collaborative clusters, any maintainer can push new updates to the pinset of data to mirror, which is then sharded and syncd across all mirroring nodes. Weve already seen package managers like Pac-Man added to collaborative clusters along with many “data package managers” like Wikipedia and Project Gutenberg, [follow these instructions to add your own!](https://collab.ipfscluster.io/)
@@ -74,7 +74,7 @@ We got [**11** awesome proposals](https://github.com/ipfs/roadmap/issues), with
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Blown away by all the great <a href="https://twitter.com/IPFSbot?ref_src=twsrc%5Etfw">@IPFSbot</a> 2020 Theme suggestions! I love this community so much 🥰 - extra inspired today looking at all the amazing paths ahead of us to make humanitys knowledge &amp; tools more accessible, resilient, and empowering! 🤩 🚀<a href="https://t.co/MbNS0q8mlC">https://t.co/MbNS0q8mlC</a> <a href="https://t.co/WTg03R5iPa">pic.twitter.com/WTg03R5iPa</a></p>&mdash; Molly (@momack28) <a href="https://twitter.com/momack28/status/1193400070625824768?ref_src=twsrc%5Etfw">November 10, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</p>
During our IPFS Planning “Spike”, we took stock of our wider ecosystem and project health. We synthesized feedback from [top IPFS users](/top-ipfs-users.png), sourcing many ideas and needs from the core needs & gaps section of each 2020 Theme Proposal. We also reflected on the biggest pain points and risks to the IPFS Projects long term goals and mission to refocus on our north star. Looking at the skills and capacity of our core working groups, we created a set of [decision-making criteria](https://github.com/ipfs/roadmap#2020-h1-priority-selection-criteria) to identify where to allocate this subset of IPFS contributors for maximum impact, expanded on a set of top candidates (sourced both from the 2020 theme proposals and the exploration of wider project pain points), and ultimately made a decision.
During our IPFS Planning “Spike”, we took stock of our wider ecosystem and project health. We synthesized feedback from [top IPFS users](../assets/top-ipfs-users.png), sourcing many ideas and needs from the core needs & gaps section of each 2020 Theme Proposal. We also reflected on the biggest pain points and risks to the IPFS Projects long term goals and mission to refocus on our north star. Looking at the skills and capacity of our core working groups, we created a set of [decision-making criteria](https://github.com/ipfs/roadmap#2020-h1-priority-selection-criteria) to identify where to allocate this subset of IPFS contributors for maximum impact, expanded on a set of top candidates (sourced both from the 2020 theme proposals and the exploration of wider project pain points), and ultimately made a decision.
### 2020 Focus: Improving Content Routing
@@ -84,7 +84,7 @@ During our IPFS Planning “Spike”, we took stock of our wider ecosystem and p
To achieve this goal, weve formed a Content Routing team (and spun down our Package Managers working group) to focus our main engineering effort on this problem for the next 6 months. Improving content routing performance requires making improvements and bugfixes to the go-libp2p DHT _at scale_, and changing how we form, query, and resolve content in the IPFS network to be faster and more resilient. This involves a combination of research, design, implementation, and testing. Making changes to the _configuration of the entire network_ is non-trivial, which is why weve been investing in the [InterPlanetary Testground](https://github.com/ipfs/testground/), a new set of tools for testing next generation P2P applications, to help us diagnose issues and evaluate improvements prior to rolling out upgrades to the entire public network. You can follow along with the team's work in the [Content Routing ZenHub Roadmap](https://app.zenhub.com/workspaces/content-routing-2020-5e29be25ab9d8da0b032cfcc/roadmap):
[![2020-roadmap](/2020-roadmap.png)](https://app.zenhub.com/workspaces/content-routing-2020-5e29be25ab9d8da0b032cfcc/roadmap)
[![2020-roadmap](../assets/2020-roadmap.png)](https://app.zenhub.com/workspaces/content-routing-2020-5e29be25ab9d8da0b032cfcc/roadmap)
We considered a number of other potential goals—especially all the great [2020 Theme Proposals](https://github.com/ipfs/roadmap/issues/)—before selecting this priority. However, we decided it was more important to focus core working group development time on the main blockers and pain points to enable the entire ecosystem to grow and succeed. Many of our theme proposals are actually very well suited for community ownership via [DevGrants](https://github.com/ipfs/devgrants) and collaborations. Some of them, like [“IPFS in Rust”](https://github.com/ipfs/roadmap/issues/54) and [“Examples and Tutorials”](https://github.com/ipfs/roadmap/issues/50), already have grants or bounties associated with them, and community teams actively pushing forward! 🙌
@@ -15,13 +15,13 @@ Web 2.0 services increasingly depend on large scale computing infrastructure to
After [IPFS Camp 2019](https://camp.ipfs.io/), Netflix and IPFS began collaborating on ways to incorporate peer-to-peer services into Netflix's developer tooling. Together, we figured out a way to leverage IPFS to speed up cloud builds, designing and testing solutions for faster Continuous Integration (CI) pipelines powered by efficient p2p container image distribution.
[![](/netflix-containers-edgar-lee.png =700x)](https://youtu.be/wNfk05D887M)
[![](../assets/netflix-containers-edgar-lee.png =700x)](https://youtu.be/wNfk05D887M)
As part of this collaboration, we made big improvements over the last two quarters to [Bitswap](https://github.com/ipfs/go-bitswap), the mechanism IPFS uses to transfer pieces of a file between two or more peers. A key factor enabling this improvement was [p2plab](https://github.com/Netflix/p2plab) - a performance benchmarking tool created by Netflix to run reproducible tests - allowing us to target and measure improvements. Our specific focus was a container distribution challenge Netflix wanted to address: how to efficiently pull container images in a large scale, multi-region environment. Image layers often reside in different regions. Leveraging IPFS as a peer-to-peer CDN lets nodes inside Netflixs infrastructure collaborate and seed common pieces to neighboring nodes, helping make container distribution faster.
To speed this up even more, we added some useful new capabilities to the Bitswap protocol which cut transfer time **in half** for benchmarked use cases around container distribution. In the previous version of Bitswap, it took on average 9.08 seconds to pull a 300 MiB image to 32 leeching peers. The optimized branch brought this down to 3.16 seconds -- 20% faster than DockerHub (3.93 seconds)! When the number of leeching peers exceed the seeders, we observed that pieces downloaded by leechers are reseeded, reducing the contention on the seeding peers.
![container_image_benchmark](/container-image-benchmark.png)
![container_image_benchmark](../assets/container-image-benchmark.png)
## How Bitswap works
@@ -37,7 +37,7 @@ In order to improve Bitswap performance and efficiency, the IPFS team made some
Initially a node wants to know which of its peers have the root block, but doesnt actually want to receive the block itself (because it sends this “discovery” want to many peers). So one new change is that when Bitswap sends a want it can ask for a HAVE message in response (instead of getting back the whole block).
[![](/p2p-image-distribution.png =600x)](https://docs.google.com/presentation/d/1mbFFGIIKNvboHyLn-k26egOSWkt9nXjlNbxpmCEQfqQ/edit#slide=id.g41cabeb941_0_1376)
[![](../assets/p2p-image-distribution.png =600x)](https://docs.google.com/presentation/d/1mbFFGIIKNvboHyLn-k26egOSWkt9nXjlNbxpmCEQfqQ/edit#slide=id.g41cabeb941_0_1376)
Once a node has added peers to the session, it can also use these HAVE messages to figure out which of the session peers have the rest of the blocks it needs relatively cheaply, because it doesnt have to worry about duplicate blocks. At this stage the node also wants the peer to say if it doesnt have the block. So we added a DONT_HAVE response.
@@ -47,10 +47,10 @@ The node can also quickly recognize when all the peers in a session dont have
For more details on how Bitswap worked before ("master"), and the changes weve made ("poc"), check out [these slides](https://docs.google.com/presentation/d/1mbFFGIIKNvboHyLn-k26egOSWkt9nXjlNbxpmCEQfqQ), this [presentation at the IPFS Weekly Call](https://www.youtube.com/watch?v=G_Q7iTpwYQU), and [this recent performance comparison](https://github.com/ipfs/go-ipfs/issues/6782#issuecomment-579973116).
![5ms-1024MB](/5ms-1024MB.png =400x)
![5ms-160MB](/5ms-160MB.png =400x)
![5ms-40MB](/5ms-40MB.png =400x)
![5ms-20MB](/5ms-20MB.png =400x)
![5ms-1024MB](../assets/5ms-1024MB.png =400x)
![5ms-160MB](../assets/5ms-160MB.png =400x)
![5ms-40MB](../assets/5ms-40MB.png =400x)
![5ms-20MB](../assets/5ms-20MB.png =400x)
## Container distribution at Netflix
@@ -60,7 +60,7 @@ The docker registry is designed to decouple the notion of what an image referenc
## p2plab
[![image](/p2plab.png)](https://github.com/Netflix/p2plab)
[![image](../assets/p2plab.png)](https://github.com/Netflix/p2plab)
Netflix infrastructure is deployed on Amazon Web Services (AWS) across multiple availability zones and regions around the world. In order to emulate that kind of environment, [p2plab](https://github.com/Netflix/p2plab) was created to measure the throughput of data transfer on the IPFS network in multi-region clusters. Using p2plab, we can reliably determine whether a change in IPFS will improve performance. An operator is able to provision live clusters with cluster definitions and benchmark a data transfer scenario with scenario definitions. Nodes in a p2plab cluster can also hot swap the IPFS binary under test, allowing Protocol Labs and Netflix engineers to quickly test a branch of an IPFS component like bitswap.
@@ -13,8 +13,8 @@ tags:
The [ProtoSchool](https://proto.school/#/) team is pleased to announce the launch of a shiny new multiple-choice tutorial on the **[Anatomy of a CID](https://proto.school/#/anatomy-of-a-cid)**, built by the fabulous [José Bateira](https://github.com/zebateira)! Its our first multiple-choice content and the first to explore Multiformats. 🎉
![Table of Contents](/084-explore-the-anatomy-of-a-cid-on-protoschool-table-of-contents.png)
![Sample Lesson](/084-explore-the-anatomy-of-a-cid-on-protoschool-sample-lesson.png)
![Table of Contents](../assets/084-explore-the-anatomy-of-a-cid-on-protoschool-table-of-contents.png)
![Sample Lesson](../assets/084-explore-the-anatomy-of-a-cid-on-protoschool-sample-lesson.png)
Content identifiers (CIDs) and cryptographic hashing make content addressing possible, allowing us to securely locate and identify data on the decentralized web. The string representations of CIDs used by IPFS look like random characters strung together, but theres a lot more going on under the hood. In this new tutorial we explore all of the data revealed by these self-describing content-addressed identifiers, digging deep into multihash, multicodec, multibase, and version prefixes.
@@ -26,7 +26,7 @@ We also take a look at the evolution of the [CID specification](https://github.c
Did you know you can paste any IPFS CID into the [**CID Inspector**](https://cid.ipfs.io/) for a human-friendly breakdown of its multihash format and length, multicodec, multibase, and version? It can even convert CIDv0 to CIDv1! The awesome [Oli Evans](https://github.com/olizilla) built this super-useful visualization tool that we explore in this new tutorial and which you can now access from our coding challenges.
![CID Inspector](/084-explore-the-anatomy-of-a-cid-on-protoschool-cid-inspector.png)
![CID Inspector](../assets/084-explore-the-anatomy-of-a-cid-on-protoschool-cid-inspector.png)
### IPFS Camp Course: Understanding How IPFS Deals with Files
@@ -34,7 +34,7 @@ If youd like to dig a little deeper into CIDs via video, we recommend checkin
Watch the recording below or check out the [slides](https://github.com/ipfs/camp/blob/master/CORE_AND_ELECTIVE_COURSES/CORE_COURSE_A/IPFS_Camp_Core_Course_A_Slides.pdf)!
[![Video: Understanding How IPFS Deals with Files](/core-a-thumbnail.png)](https://youtu.be/Z5zNPwMDYGg)
[![Video: Understanding How IPFS Deals with Files](../assets/core-a-thumbnail.png)](https://youtu.be/Z5zNPwMDYGg)
_Video: [Understanding How IPFS Deals with Files](https://youtu.be/Z5zNPwMDYGg)_
@@ -44,7 +44,7 @@ _Video: [Understanding How IPFS Deals with Files](https://youtu.be/Z5zNPwMDYGg)_
The new [Anatomy of a CID](https://proto.school/#/anatomy-of-a-cid) tutorial is our first to include **multiple-choice quizzes** to keep you sharp on the concepts introduced in each lesson. 😉
![Multiple-Choice Quiz](/084-explore-the-anatomy-of-a-cid-on-protoschool-quiz.png)
![Multiple-Choice Quiz](../assets/084-explore-the-anatomy-of-a-cid-on-protoschool-quiz.png)
Kudos to [Teri Chadbourne](https://github.com/terichadbourne) and [Diogo Silva](https://github.com/fsdiogo), who laid the groundwork for our multiple choice lessons.
@@ -56,11 +56,11 @@ We also offer a **text-based** tutorial on [Decentralized Data Structures](https
Were excited to create beginner-friendly content suitable for a variety of learners, regardless of their coding experience. To that end, we recently added **spiffy new icons** throughout the site to represent our coding challenges, multiple-choice quizzes, and text-only lessons, making it easy to identify lesson formats before you get started.
![Lesson Type Icons](/084-explore-the-anatomy-of-a-cid-on-protoschool-type-icons.png)
![Lesson Type Icons](../assets/084-explore-the-anatomy-of-a-cid-on-protoschool-type-icons.png)
We also updated our [tutorial listings](https://proto.school/#/tutorials) with a **handy toggle to help you hide coding challenges** if youd like to stick to text-based and multiple-choice content. 👏
![Toggle Coding Challenges](/084-explore-the-anatomy-of-a-cid-on-protoschool-toggle-coding-challenges.png)
![Toggle Coding Challenges](../assets/084-explore-the-anatomy-of-a-cid-on-protoschool-toggle-coding-challenges.png)
A shoutout to [Teri Chadbourne](https://github.com/terichadbourne) for taking the lead on these improvements, and to [Agata Krych](https://github.com/akrych) for the aforementioned spiffy new icons.
+1 -1
View File
@@ -43,7 +43,7 @@ Instead of forking and/or starting fresh, this project aims to support and build
## What can be expected, and when?
![Rust IPFS Timeline](/rust-ipfs-timeline.png)
![Rust IPFS Timeline](../assets/rust-ipfs-timeline.png)
As you can see in the [Rust-IPFS DevGrant Roadmap](https://github.com/ipfs/devgrants/tree/master/open-grants/ipfs-rust) implementation work
takes place mostly over early Q2 2020 and covers the use case of **IPLD applications**,
+5 -5
View File
@@ -10,13 +10,13 @@ tags:
- 'mobile'
---
![IPFS built-in to Opera for Android](/086-ipfs-in-opera-for-android-banner.png)
![IPFS built-in to Opera for Android](../assets/086-ipfs-in-opera-for-android-banner.png)
As we hinted in our previous post about [IPFS in web browsers](https://blog.ipfs.io/2019-10-08-ipfs-browsers-update/), IPFS support in the Opera web browser has been in development for some time.
Today, **Opera for Android 57** is live in the Google Play Store with default support for IPFS with a native handler for `ipfs://` addresses that redirects to the HTTP gateway of your choosing! [Install Opera Android with IPFS now](https://play.google.com/store/apps/details?id=com.opera.browser).
[![Screenshot of Opera for Android in the Google Play Store, linked to the URL of that page](/086-ipfs-in-opera-for-android-play-store.png)](https://play.google.com/store/apps/details?id=com.opera.browser)
[![Screenshot of Opera for Android in the Google Play Store, linked to the URL of that page](../assets/086-ipfs-in-opera-for-android-play-store.png)](https://play.google.com/store/apps/details?id=com.opera.browser)
This release is a huge leap forward for the IPFS project, with a couple of important milestones:
@@ -34,7 +34,7 @@ IPFS and other peer-to-peer protocols are a paradigmatic change to the network a
IPFS support is enabled by default, so as a user you dont need to do anything to turn it on.
![Screenshots of entering an ipfs:// address in Opera for Android, and loading it.](/086-ipfs-in-opera-for-android-protocol-demo.png)
![Screenshots of entering an ipfs:// address in Opera for Android, and loading it.](../assets/086-ipfs-in-opera-for-android-protocol-demo.png)
You can load an IPFS content address such as:
@@ -82,7 +82,7 @@ You can easily check compatibility and level of implementation using the [IPFS p
Heres what it looks like in a browser that doesn't support IPFS addresses. In Opera for Android, the image loads the same in both cases.
![Screenshot of a failed image test in the IPFS protocol handler smoketests.](/086-ipfs-in-opera-for-android-test-page.png)
![Screenshot of a failed image test in the IPFS protocol handler smoketests.](../assets/086-ipfs-in-opera-for-android-test-page.png)
## HTTP Gateways
@@ -90,7 +90,7 @@ Opera for Android 57 adds IPFS support by navigating native IPFS addresses to an
The default gateway in this release of Opera for Android is `dweb.link`, but you can also easily configure the gateway in the Crypto Wallet settings, as shown here:
![IPFS HTTP gateway configuration in the Crypto Wallet settings in Opera for Android](/086-ipfs-in-opera-for-android-settings.gif)
![IPFS HTTP gateway configuration in the Crypto Wallet settings in Opera for Android](../assets/086-ipfs-in-opera-for-android-settings.gif)
The setting has several choices of gateway built in, and also allows you to set a _custom_ gateway. Perhaps you run your own gateway, are running an IPFS node on your device with a local gateway, or want to use one of the many [public gateways provided by the community](https://ipfs.github.io/public-gateway-checker/).
+1 -1
View File
@@ -13,7 +13,7 @@ The focus of development of IPFS to date has been primarily on desktop and serve
This growth at the furthest edge of the network requires solutions at the edge. While the IPFS network continues to grow on mobile (for instance, IPFS now has default support on Opera for Android), more research is needed for the value of the network to be fully realized. IPFS should be directly available and accessible to end users in all their devices - and the design of IPFS integrations should make this clear and easy to use. To create that level of clarity, developers need good guidelines that align with user needs while unlocking all the power of the mobile dweb.
![Graph of global internet device sales showing devices explosively growing from 2005 to 2016.](/087-ipfs-mobile-design-research-device-sales-2005-2016.jpg)
![Graph of global internet device sales showing devices explosively growing from 2005 to 2016.](../assets/087-ipfs-mobile-design-research-device-sales-2005-2016.jpg)
In emerging markets and for under-served audiences and marginalized or oppressed peoples the need for data sovereignty, offline-first applications and trustable computing is especially dire, so IPFS should function optimally on the devices used by them in order to serve their use-cases.
@@ -20,13 +20,13 @@ A short summary of the findings is below. You can read the full findings and det
We surveyed the two most used mobile browsers, Androids Chrome and iOSs Safari. Neither of these browsers has native P2P capabilities, but we surveyed them to understand mobile users first stop on the internet and how they may think about sharing to and from there.
![Google Android sharing photo interaction](/android-chrome-share.png)
![Google Android sharing photo interaction](../assets/android-chrome-share.png)
Mobile sharing of files is a very common activity for all ranges of users, but the type of file shared varies from the desktop. We chose sharing photos as an interaction to study on both Android and iOS. This was to understand clearly how mobile users experience getting a file from their phone to another device.
We then tested a variety of publicly released mobile P2P apps. This was to understand previous approaches to designing and developing mobile P2P applications. The applications explored in the survey were spread across three main areas of use: messaging, posting and community boards. From this we learned which features, interface components, and design patterns are currently used in designing for P2P on mobile, to inform future designs for IPFS.
![Status.im's key recovery process](/status-recover.png)
![Status.im's key recovery process](../assets/status-recover.png)
After in-depth review, we found many intriguing approaches to several shared core areas:
+5 -5
View File
@@ -9,7 +9,7 @@ tags:
- 'go-ipfs'
---
![Announcing IPFS 0.5](/090-go-ipfs-0-5-0-header-image.png)
![Announcing IPFS 0.5](../assets/090-go-ipfs-0-5-0-header-image.png)
_go-ipfs 0.5.0 is a major step forward on our journey toward a more efficient, secure, and resilient web to preserve and grow humanitys knowledge._
@@ -40,7 +40,7 @@ Our performance work centered around **content routing**, the process of finding
Here are a few of the improvements made in IPFS 0.5.0:
![Improvements to go-ipfs 0.5.0](/090-go-ipfs-0-5-0-Infographic.png)
![Improvements to go-ipfs 0.5.0](../assets/090-go-ipfs-0-5-0-Infographic.png)
- **Faster content discovery:** IPFS 0.5.0 makes finding and sharing data in the network much faster, thanks to large improvements to our [DHT logic](https://docs.ipfs.io/concepts/dht/). More efficient routing and providing—already 2-3x faster—lowers bandwidth usage and background traffic. Weve also updated our experimental QUIC transport to reduce connection latency and round-trips—with the aim to make this the default next release!
- **Speedy files transfers:** We sped up our file transfer mechanism, [Bitswap](https://docs.ipfs.io/concepts/bitswap/), to make sharing data between many nodes much faster. [Read more](https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/) about how we worked with Netflix to benchmark and stress-test these improvements!
@@ -67,7 +67,7 @@ With our new testing and release process, IPFS 0.5.0 has already been put to use
**_Matt Ober, Pinata:_** “IPFS 0.5 makes big improvements to Bitswap, which de-dupes data transfer between nodes. This means data providers like Pinata who are transferring a lot of data all around the world every day, can send each block only once and it gets to its destination. That cuts our bandwidth costs down significantly. And, its also faster.”
![Improved container image performance](/090-go-ipfs-0-5-0-container-image.png)
![Improved container image performance](../assets/090-go-ipfs-0-5-0-container-image.png)
**_Michael Godsey, Infura:_** “Our collaboration with Protocol Labs and the latest go-ipfs v0.5 release are essential to our upcoming premium IPFS product release later this year. The upgraded subdomain gateway support greatly improves the security of our offering while helping us support some great new features. The improvements to the DHT and stability of peering allow us to provide an even more reliable product and continue to get IPFS into the hands of decentralized application developers.”
@@ -92,13 +92,13 @@ There is no way IPFS 0.5.0 could have been our biggest update yet without the he
Also, a huge thank you to [everyone who contributed](https://github.com/ipfs/go-ipfs/blob/master/CHANGELOG.md#contributors) patches and improvements in this release, all **98** of you! We couldnt have made this happen without your help and feedback. ❤
[![IPFS Contributors](/090-go-ipfs-0-5-0-ipfs-contributors.png)](https://github.com/ipfs/go-ipfs/blob/master/CHANGELOG.md#contributors)
[![IPFS Contributors](../assets/090-go-ipfs-0-5-0-ipfs-contributors.png)](https://github.com/ipfs/go-ipfs/blob/master/CHANGELOG.md#contributors)
.
## Want to learn more...or even, better get involved?
Wed like to know what you think and help answer any questions you may have. [Please join us for a virtual meetup](https://www.meetup.com/San-Francisco-IPFS/events/270212268/) on **Friday, May 1st**, to deep-dive on the improvements in this release and field questions and feedback.
[![IPFS 0.5 Launch Meetup](/090-go-ipfs-0-5-0-launch-Meetup.png)](https://www.meetup.com/San-Francisco-IPFS/events/270212268/)
[![IPFS 0.5 Launch Meetup](../assets/090-go-ipfs-0-5-0-launch-meetup.png)](https://www.meetup.com/San-Francisco-IPFS/events/270212268/)
In the meantime, get started by [installing go-ipfs](https://dist.ipfs.io/#go-ipfs) or [upgrading to go-ipfs 0.5](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/update-procedure) to see the improvements yourself!
+2 -2
View File
@@ -28,7 +28,7 @@ After discussion with active IPFS contributors and research into other OSS commu
- New contributors to repositories will now receive automated responses on their first submission, giving context on the process outlined above and reminders for needed information. This will help reduce the number of round trips for contributors and reviewers/maintainers.
- A [major review of the documentation](https://docs.ipfs.io/) site is already underway to provide better developer documentation for our major implementations and products. [Watch this space!](https://github.com/ipfs/docs/milestones)
![IPFS Autoresponder and labels](/091-dev-exp-labels-autoresponder.png)
![IPFS Autoresponder and labels](../assets/091-dev-exp-labels-autoresponder.png)
At the same time, there are some things that are NOT changing:
@@ -39,4 +39,4 @@ We want to empower the developer community to build amazing things with IPFS, an
We hope these measures help everyone build a happy and growing IPFS developer community!
![IPFS Contributors](/090-go-ipfs-0-5-0/ipfs-contributors.png)
![IPFS Contributors](../assets/090-go-ipfs-0-5-0-ipfs-contributors.png)
+3 -3
View File
@@ -9,7 +9,7 @@ tags:
- 'Testground'
---
![Launching Testground](/092-launching-testground-header-image.png)
![Launching Testground](../assets/092-launching-testground-header-image.png)
Testing peer-to-peer (p2p) systems is hard. Doing so reliably and reproducibly is even harder. Today, **were releasing [Testground v0.5](https://github.com/testground/testground/releases/tag/v0.5.0) to the world**. This is a huge milestone for us, and for the wider p2p ecosystem. In this post, well walk you through what Testground is, how to get started, whats coming next, and the backstory behind Testground itself.
@@ -44,7 +44,7 @@ To illustrate the above, consider a 200-instance test run. With Kubernetes, it c
The cherry on the top of all this is the **observation pipeline (experimental)**. Test plans can record raw data points or aggregate metrics (histograms, [EWMA](https://en.wikipedia.org/wiki/EWMA_chart), counters, etc.) about the system under test, as well as emit arbitrary output assets. **The Testground platform will harvest them and make them available for one-stop collection.**
![Testground Architecture](/092-launching-testground-architecture.png)
![Testground Architecture](../assets/092-launching-testground-architecture.png)
<p style="text-align:center;font-size:75%;"> Architecture diagram, focused on a test plans inputs and outputs, highlighting the circuitry of the observability pipeline</p>
@@ -75,7 +75,7 @@ At the tail end of that sprint, we will produce v0.7 of the Testground Core, whi
<br/>
Needless to say, youre welcome to pitch in at any point in time! Continue reading to learn how.
![Testground flowchart](/092-launching-testground-flowchart.png)
![Testground flowchart](../assets/092-launching-testground-flowchart.png)
## Getting involved
+1 -1
View File
@@ -14,7 +14,7 @@ tags:
- 'project planning'
---
![](/093-ipfs-pinning-summit-recap-header-image.png)
![](../assets/093-ipfs-pinning-summit-recap-header-image.png)
The first-ever [IPFS Pinning Summit](https://ipfspinningsummit.com/) brought together [IPFS pinning services](https://docs.ipfs.io/guides/concepts/pinning/), infra providers, and users for 2 days of presentations & meetings to discuss the current state of IPFS infrastructure, services, and tools - and the future opportunities in this space.
+3 -3
View File
@@ -11,7 +11,7 @@ tags:
- 'Gossipsub'
---
![](/094-gossipsub-v1.1-header-image+grid.jpeg =780x)
![](../assets/094-gossipsub-v1.1-header-image+grid.jpeg =780x)
The gossip youve heard on the streets is correct, Gossipsub v1.1 is here and it packs several security hardening extensions along with new testing, documentation, and an updated specification.
@@ -47,7 +47,7 @@ Additionally, with the new release, the [reference implementation of Gossipsub](
Weve prepared a brand new example for you to give the latest Gossipsub a try. In this example, you get to experiment with a chat application powered by libp2p. It will enable you to join different channels by subscribing to PubSub topics and see other peers joining the room as they subscribe to the topic.
![](/chat-example.gif =780x)
![](../assets/chat-example.gif =780x)
You can find the code for this example at https://github.com/libp2p/go-libp2p-examples/tree/master/pubsub/chat
@@ -55,7 +55,7 @@ You can find the code for this example at https://github.com/libp2p/go-libp2p-ex
We are also releasing a brand new libp2p Test Plan that uses [Testground](https://github.com/testground/testground) to benchmark Gossipsub v1.1.
![](/gossipsubv1.1-jupyter.gif =780x)
![](../assets/gossipsubv1.1-jupyter.gif =780x)
With this Test Plan, you can run an emulation (yes, it will run real Gossipsub nodes!) of a Gossipsub Network in which you can adjust:
+3 -3
View File
@@ -11,7 +11,7 @@ tags:
- 'Testground'
---
![](/095-road-to-dht-header-image.png =1000x)
![](../assets/095-road-to-dht-header-image.png =1000x)
At the end of April, we released our largest update to go-ipfs to date: [IPFS 0.5.0](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/). This upgrade brings major performance and reliability improvements to IPFS — especially on the content discovery and routing front. These gains are brought to you largely by our rework of the Distributed Hash Table (DHT) which powers most peer and content discovery in the IPFS Public Network.
@@ -20,7 +20,7 @@ Wed like to take you through our journey to _re-write_ the DHT - from identif
**If you want to make use of these new improvements, please [upgrade IPFS now](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/update-procedure/#use-ipfs-update)!**
<br />
![](/095-road-to-dht-brendan-quote.png =1000x)
![](../assets/095-road-to-dht-brendan-quote.png =1000x)
## First a refresher: Whats the DHT?
@@ -57,7 +57,7 @@ With this analysis and the feedback synthesized from our core users and communit
This meant some hard calls on prioritization: focusing our working groups on a targeted set of improvements to the DHT and routing logic to ensure we resolved these underlying performance and reliability concerns. In turn, we adjusted our product roadmap and stood up new core working groups, including one focused strictly on content routing and another on a new test infrastructure: [Testground](https://docs.testground.ai/).
![](/092-launching-testground-hero-image.png =1000x)
![](../assets/092-launching-testground-header-image.png =1000x)
## Test, test, test
+1 -1
View File
@@ -25,7 +25,7 @@ See [ipfs/js-ipfs-bitswap#204](https://github.com/ipfs/js-ipfs-bitswap/pull/204)
The Bitswap module has had a bit of an overhaul and is now much faster at pulling blocks from other nodes across the network. Before, we waited a little while before sending our wantlist to newly connected peers—weve reduced that window and seen a massive speedup (smaller bars are better):
![Graphs showing Bitswap speedups](/097-js-ipfs-0.46-bitswap-speedup.png)
![Graphs showing Bitswap speedups](../assets/097-js-ipfs-0.46-bitswap-speedup.png)
As you can see, the new js-IPFS is about 3x faster at pulling large files from other nodes on the network than the previous release, and that increases to about 5x as the files get smaller.
+4 -4
View File
@@ -20,7 +20,7 @@ The past year has seen amazing improvements to libp2p with the protocol quickly
Probably the most significant news on that front is the official adoption of libp2p as the networking layer for the [Ethereum 2.0 Network Specification](https://github.com/ethereum/eth2.0-specs/pull/1328). Ethereum 2.0 is the next generation of Ethereum, with a large and thriving network of clients, dapps, and developers. A big focus for libp2p in 2019 was leveling up stability, scalability, and ease of use to meet the requirements of such a large scale blockchain.
![libp2p at DevConV](/098-devcon.png)
![libp2p at DevConV](../assets/098-devcon.png)
libp2p now has 7 language implementations:
@@ -84,13 +84,13 @@ Throughout the first half of the year, our top focus was supporting the needs of
To support IPFS and all our other dapp users out there, weve improved libp2ps content routing and connectivity to make finding and sharing content in distributed networks fast and reliable. This meant we needed to dive deep into major systems like the libp2p DHT, providing subsystem, NAT traversal, and more to optimize and refactor for performance. Weve been collaborating closely with Protocol Labs IPFS and Testground teams to make this a reality. Read more about our progress in the [IPFS 0.5 launch](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/) post, and our path to get there in the [Road to the New DHT](https://blog.ipfs.io/2020-05-19-road-to-dht/) post!
![Content Routing Speed](/098-libp2p-in-2020-find-perf.png)
![Content Routing Speed](../assets/098-libp2p-in-2020-find-perf.png)
### Launching Testground to the world
What is [Testground](https://blog.ipfs.io/2020-05-06-launching-testground/) you ask? Only the coolest new testing tool for large-scale p2p networks! When starting our network upgrade plans, it was clear that the scope and complexity of changes wed need to make to core IPFS network functions would be impossible to optimize without powerful testing tools to simulate each change to network performance at scale. We couldnt find a tool with the scale and configurability we needed, so we built the testing tool we needed, and made it modular and system agnostic just like libp2p so other p2p networks can take advantage of this new OSS infrastructure too!
![Launching Testground](/092-launching-testground-header-image.png)
![Launching Testground](../assets/092-launching-testground-header-image.png)
### Gossipsub security enhancements
@@ -100,7 +100,7 @@ This work is of extreme importance as our adopters (e.g., Filecoin and Ethereum
You can find the [specification](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub) and [implementation](https://github.com/libp2p/go-libp2p-pubsub/) on GitHub. We will be releasing a report that fully describes how we identified the attack vectors, developed the motivations and went through implementing, testing, evaluating under multiple network conditions and got it audited. Stay tuned.
![Gossipsub v1.1](/094-gossipsub-v1.1-header-image+grid.jpeg)
![Gossipsub v1.1](../assets/094-gossipsub-v1.1-header-image+grid.jpeg)
### Going forward
+3 -3
View File
@@ -10,7 +10,7 @@ tags:
- 'community'
---
![IPFS logo and ION logo](/099-identity-ipfs-ion-header.png)
![IPFS logo and ION logo](../assets/099-identity-ipfs-ion-header.png)
Identity is a key part of how we all interact with each other on the internet every day—sometimes every moment of every day. And sometimes each raging moment as we do the “forgot your password?” dance yet again. Regardless, forging a path forward for user-controlled online identity is a table-stakes requirement for the dweb to succeed.
@@ -22,13 +22,13 @@ However, today were celebrating the launch of a decentralized identity protoc
Microsoft has been increasingly present in open-source tools and services in the past few years, and has now [launched a standards-based decentralized identity service called ION](https://techcommunity.microsoft.com/t5/identity-standards-blog/ion-booting-up-the-network/ba-p/1441552).
![ION logo](/099-identity-ipfs-ion-logo.png)
![ION logo](../assets/099-identity-ipfs-ion-logo.png)
ION has been under development for over a year, and is an instance implementation of [Sidetree (a blockchain-agnostic distributed PKI protocol)](https://github.com/decentralized-identity/sidetree) that runs on the Bitcoin blockchain.
And it stores transaction data on IPFS.
![ION architecture diagram](/099-identity-ipfs-ion-architecture.png)
![ION architecture diagram](../assets/099-identity-ipfs-ion-architecture.png)
Like HTTP, IPFS does not have user identity built into the protocol. However, IPFS provides resiliency, validation, and future-proofing features that HTTP cannot:
@@ -67,7 +67,7 @@ From the research, we developed an initial set of principles to address issues a
Weve also created a handy cheat sheet for the design principles which you can download below.
![Design principles cheat sheet](/100-IPFS-mobile-design-guidelines-cheat-sheet-preview.png)
![Design principles cheat sheet](../assets/100-IPFS-mobile-design-guidelines-cheat-sheet-preview.png)
_Download full size in [PDF](/100-IPFS-mobile-design-guidelines-cheat-sheet.pdf) or [PNG](/100-IPFS-mobile-design-guidelines-cheat-sheet.png)_
@@ -81,7 +81,7 @@ With the design principles developed, we then created use case scenarios to illu
- IPFSs unique ability to transfer files without centralised servers can help offline users in particular.
- A safe means for helping users connect with and contact one another.
![Illustrations of the Scenarios](/100-IPFS-mobile-design-guidelines-scenarios.png)
![Illustrations of the Scenarios](../assets/100-IPFS-mobile-design-guidelines-scenarios.png)
_Illustrations of the Scenarios_
@@ -97,7 +97,7 @@ Read the full conclusion of [these findings](https://protocol-labs.gitbook.io/ip
While we refined our understanding of IPFS and P2P mobile design with this project, we need more research to realise the full value of the network to users. This is especially true for emerging markets and under-served and marginalised users. Their need for data privacy, portability, and stability is as great, if not greater, than for those where the internet works most of the time. These users also serve as a way to understand not only under-explored markets, but also more resilient methods of computing that helps everyone.
![Illustrations of the design principles](/100-IPFS-mobile-design-guidelines-principles.png)
![Illustrations of the design principles](../assets/100-IPFS-mobile-design-guidelines-principles.png)
_Illustrations of the design principles_
+1 -1
View File
@@ -11,7 +11,7 @@ tags:
- 'streaming'
---
![IPFS Case Study Seriew - Audius](/102-case-study-audius-header-image.jpg)
![IPFS Case Study Seriew - Audius](../assets/102-case-study-audius-header-image.png)
## You asked, we delivered!
+4 -4
View File
@@ -11,7 +11,7 @@ tags:
- 'pubsub'
---
![Gossipsub logo](/Gossipsub_fullcolor.png =400x)
![Gossipsub logo](../assets/Gossipsub_fullcolor.png =400x)
We are back with a direct follow up on the [Gossipsub v1.1 release from May](https://blog.ipfs.io/2020-05-20-gossipsub-v1.1) with the much awaited Evaluation Report and three other presents we have for you.
@@ -23,7 +23,7 @@ You can find all the [logo assets here](https://ipfs.io/ipfs/QmVSk8VvxWExnYCjqg7
## 📊 Evaluation Report
[![](/report-eval.png =600x)](https://gateway.ipfs.io/ipfs/QmRAFP5DBnvNjdYSbWhEhVRJJDFCLpPyvew5GwCCB4VxM4)
[![](../assets/report-eval.png =600x)](https://gateway.ipfs.io/ipfs/QmRAFP5DBnvNjdYSbWhEhVRJJDFCLpPyvew5GwCCB4VxM4)
We are sharing with you a comprehensive, 61-page evaluation report, in which you can learn how we approached the testing of Gossipsub v1.1, the setting in which tests were run, and detailed descriptions of the conclusions we were able to take from such evaluation. With this evaluation, we demonstrate that GossipSub is resilient against all of the attacks studied, capable of recovering the mesh and meeting the message delivery deadline requirements of the Filecoin and the ETH2.0 blockchains.
@@ -43,7 +43,7 @@ These are all very challenging attacks, which we wanted to test GossipSub agains
## 🔏 Security Audit by Least Authority
![](/report-la.png =600x)
![](../assets/report-la.png =600x)
Additionally, we are delighted to release Least Authoritys audit report for GossipSub. Least Authority has carried out an extensive audit on GossipSub v1.1 hardening extensions, both in theory and in implementation.
@@ -53,7 +53,7 @@ Least Authority produced a report detailing all of the tests they have carried o
## 📜 Gossipsub Paper
[![](/paper.png =600x)](https://arxiv.org/abs/2007.02754)
[![](../assets/paper.png =600x)](https://arxiv.org/abs/2007.02754)
Finally, we are proud to share with you a preprint of a 16-page paper that puts everything together, justifies our design choices, and outlines the most important results we have gathered throughout. With this paper we want to put everything in one place, from the spec, to the details of the test setup, and the insights we have gathered from the most challenging of attacks, in a concise manner. The paper benchmarks performance of GossipSub with Bitcoins broadcast/flooding protocol, ETH1.0s pubsub protocol and the vanilla version of GossipSup (the one without mitigation strategies and the scoring function integrated). The performance improvements brought by GossipSub v1.1 are really impressive and certainly rewarding of the effort that has gone into the design and testing of the protocol.
+5 -5
View File
@@ -12,7 +12,7 @@ tags:
- 'Kademlia'
---
![](/104-dht-deep-dive-header-image.png =1000x)
![](../assets/104-dht-deep-dive-header-image.png =1000x)
At the end of April, we released our largest update to go-ipfs to date: [IPFS 0.5](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/). While there have been many improvements, the changes to IPFSs Distributed Hash Table (DHT) were especially critical to improving the performance and stability of finding data in IPFS. For some background on how we arrived at the most recent set of DHT changes, take a look at [The Road to the New DHT](https://blog.ipfs.io/2020-05-19-road-to-dht/), or try them out yourself in the [latest version of go-ipfs](https://dist.ipfs.io/#go-ipfs).
@@ -118,9 +118,9 @@ While the lookup algorithm is what allows us to put and get records into the DHT
- Get: Do a lookup for the `K` closest peers to `X=SHA256(H)`, but instead of just asking each peer in the lookup “who are the `K` closest peers to `X` you know about?” also ask “please send me the record corresponding to `X` if you have it”.
- The peer adds all new providers it has learned about and continues until the lookup terminates. Depending on which API is used, the lookup can also be forced to abort after receiving a certain number of provider records.
- IPNS Records (For an IPNS key where the multihash of the public key is `H`)
- Put: Do a standard lookup for the `K` closest peers to `SHA256(/ipns/H)`
- Put: Do a standard lookup for the `K` closest peers to `SHA256(../assets/ipns/H)`
- Put the IPNS record at those `K` closest peers (and also store it ourselves)
- Get: Do a lookup for the `K` closest peers to `X=SHA256(/ipns/H)`, but instead of just asking each peer in the lookup “who are the `K` closest peers to `X` you know about?” also ask “please send me the record corresponding to `X` if you have it”.
- Get: Do a lookup for the `K` closest peers to `X=SHA256(../assets/ipns/H)`, but instead of just asking each peer in the lookup “who are the `K` closest peers to `X` you know about?” also ask “please send me the record corresponding to `X` if you have it”.
- If a user receives a newer record (i.e., a record that has a higher IPNS sequence number), it updates its existing one and continues until the lookup terminates. This is needed in order to make sure that the user gets the latest record. Recall that IPNS records are mutable and therefore, we need to make sure that we point a request to the latest version of the content.
- The default in go-ipfs will abort early after receiving 16 records, but it can be set to go until the query terminates
- Once the lookup is done, if any of the `K` closest peers to `X` did not have the newest IPNS record, send them the newest record
@@ -137,8 +137,8 @@ Throughout the development process we ran many Testground tests to get an unders
As can be seen in the graphs, the most drastic changes are to 95th percentile lookup times and to the operations that spent more time doing their lookups and could not terminate as early. This meant IPFS Provide and IPNS Put, which require actually completing a search through the network, got a very large boost (for Provide 24x speedup on average and 33x speedup for the 95th percentile). This was followed by IPNS Get which needs to find many records, then Find Peer which is looking for one very specific record, and finally the time to find just one IPFS Provider record was sped up by 2.2x on average and 6.4x for the 95th percentile.
![](/104-dht-deep-dive-find-time-dht.png =1000x)
![](/104-dht-deep-dive-ipns-time-dht.png =1000x)
![](../assets/104-dht-deep-dive-find-time-dht.png =1000x)
![](../assets/104-dht-deep-dive-ipns-time-dht.png =1000x)
## Parting Thoughts
+1 -1
View File
@@ -47,7 +47,7 @@ As you add and remove pins, this DAG grows and shrinks. [CID]s of intermediate n
`js-ipfs@0.50.0` has changed the default storage of pins to use the datastore instead of a [DAG] and has seen a corresponding speedup as the number of pinned blocks in your repo increases:
![](/108-js-ipfs-0.50.0-pinning-performance.png =1000x)
![](../assets/108-js-ipfs-0.50.0-pinning-performance.png =1000x)
In the diagram above you can see that as the number of pinned items increases, so does the time it takes to add the next pin. There's a steep increase at 8,192 pins, which is when the first bucket is considered full and multiple buckets are created which then involves more operations to add the next pin.
@@ -16,7 +16,7 @@ The [ProtoSchool](https://proto.school) team is pleased to announce the launch o
This new content is inspired by feedback on our Decentralized Data Structures tutorial, which originally explored both content addressing and data structures. Based on learner feedback, weve split the content in two! Youll now find the majority of our original content in our rebranded tutorial, [Content Addressing on the Decentralized Web](https://proto.school/content-addressing), which highlights the key differences in how data is shared and retrieved on the centralized web and decentralized web. Meanwhile, our brand new tutorial, [Merkle DAGs: Structuring Data for the Distributed Web](https://proto.school/merkle-dags), is chock full of new content exploring the intricacies of the magical data structure that much of the decentralized web relies on.
![Merkle DAG diagram](/dag-deduplication.png)
![Merkle DAG diagram](../assets/dag-deduplication.png)
In IPFS, as across the decentralized web, content addressing enables us to securely locate and identify data stored by peers. The Content Identifiers (CIDs) we often use to link to individual files, or pieces of data, can also be used to express complex webs of data in their entirety, when we structure that data as content-addressable Merkle DAGs. Merkle DAGs, structured using schemas provided by IPLD, are key to the interoperability of IPFS, libp2p, Filecoin, and other distributed protocols. In this new code-free ProtoSchool tutorial, we take a deep dive into the properties that make Merkle DAGs the backbone of the distributed web, and explore the many benefits that the data structure unlocks, from verifiability to distributability to deduplication. [Check it out!](https://proto.school/merkle-dags)
@@ -50,7 +50,7 @@ Prefer your learning in video format? Check out these presentations on the super
ProtoSchool is a team effort, and we depend on folks in the IPFS and dweb community to outline new content, add new features, fix bugs, catch typos, and test-drive new tutorials like this one. There are many ways to [contribute to the project](https://proto.school/contribute), no matter your background, and our new multiple-choice format makes it super easy to [create new tutorials](https://proto.school/build) without any coding experience. In fact, the awesome Mitch Wagner, who created our latest tutorial, built it with the help of our user-friendly ProtoWizard CLI!
![Screenshot of ProtoWizard CLI](/protowizard.png)
![Screenshot of ProtoWizard CLI](../assets/protowizard.png)
One of the easiest ways to help is by sharing your feedback as you explore our tutorials. Youll find a link at the bottom of every lesson to help you submit your suggestions.
@@ -30,7 +30,7 @@ This feature is a redesign of how we're thinking about pinning and includes some
Command-line users benefit from `ipfs pin remote` commands, simplifying remote pinning operations. The built-in pinning service API client also executes all necessary remote calls under the hood:
![go-ipfs 0.8.0 + pinning service flow diagram](/blog-125-go-ipfs-0-8-0-diagram.png)
![go-ipfs 0.8.0 + pinning service flow diagram](../assets/blog-125-go-ipfs-0-8-0-diagram.png)
As long as a pinning service supports the vendor-agnostic [IPFS Pinning Service API](https://ipfs.github.io/pinning-services-api-spec/), it can be used directly in go-ipfs. (If you're a Pinata user, you can already [check out their docs](https://pinata.cloud/documentation#PinningServicesAPI) for how to set everything up.)
+3 -3
View File
@@ -19,19 +19,19 @@ You may have heard the news: as of [release 1.19.86](https://github.com/brave/br
Both Brave and IPFS have a long history of successful partnerships with other projects and vendors. Brave now ships with built-in wallets for cryptocurrencies, private windows that leverage Tor, and a highly integrated VPN option. IPFS, meanwhile, has collaborated with such names as Microsoft (developing a [decentralized identity stack](https://blog.ipfs.io/2020-06-11-identity-ipfs-ion/)), Netflix (experimenting [fetching Docker images via IPFS](https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/)), and NixOS (decentralizing [source code and build products](https://blog.ipfs.io/2020-09-08-nix-ipfs-milestone-1/)).
_![Early experiment showcasing IPFS URI resolution in Brave](/2021-01-21-ipfs-early.png)
_![Early experiment showcasing IPFS URI resolution in Brave](../assets/2021-01-21-ipfs-early.png)
Early experiment showcasing IPFS URI resolution in Brave_
This integration between IPFS and Brave is itself the product of a long-running experimental collaboration that began in [2017](https://github.com/brave/browser-laptop/issues/9556#issuecomment-352453877), back in the days when the Brave UI was still powered by Muon (a fork of Electron). In fact, this initiative got as far as a [proof of concept implementation](https://github.com/brave/browser-laptop/issues/9556#issuecomment-369757871) that provided for the resolution of the IPFS URIs in Braves address bar!
_![An initial attempt at streaming IPFS files in Brave via IPFS Companion](/2021-01-21-ipfs-streaming.jpg)
_![An initial attempt at streaming IPFS files in Brave via IPFS Companion](../assets/2021-01-21-ipfs-streaming.jpg)
An initial attempt at streaming IPFS files in Brave via IPFS Companion_
Shortly after this initial success, however, Brave switched to Chromium for its engine. While this was a set-back for IPFS integration in the short-term, this early work laid the foundation for recent efforts at combining the two projects. The switch also gave Brave full compatibility with Chromium browser extensions to Brave, allowing users to take full advantage of the [IPFS Companion extension](https://chrome.google.com/webstore/detail/ipfs-companion/nibjojkomfdiaoajekhjakgkdhaomnch?hl=en) while we developed a native solution.
Over the next two years, the teams behind Brave and IPFS would continue to come together to work toward full IPFS compatibility within the browser. [New plans](https://github.com/brave/brave-browser/issues/819#issuecomment-415792868) were made, and contributors from both teams and [the broader community](https://github.com/brave/brave-core-crx-packager/pull/21) began to chart the path toward this vision. In the interim, control over the browser source code allowed the teams to more tightly integrate the IPFS Companion extension into Brave: the Chrome sockets API (not normally exposed to Chrome Apps) made it possible to [embed a js-ipfs node with true TCP transport](https://github.com/brave/brave-browser/issues/819#issuecomment-456039555) within the extension, and Brave updated their settings menu to include a [one-click install](https://github.com/brave/brave-browser/issues/819#issuecomment-552444341) of the Companion.
![One-click install of the IPFS Companion in the Brave settings menu](/2021-01-21-ipfs-install.png)
![One-click install of the IPFS Companion in the Brave settings menu](../assets/2021-01-21-ipfs-install.png)
_One-click install of the IPFS Companion in the Brave settings menu_
Eventually, a confluence of factors, including the [deprecation of the Chrome sockets API](https://9to5google.com/2020/01/15/google-killing-chrome-apps/), generated [a push](https://github.com/brave/brave-browser/issues/10220) to get a full IPFS node running, fully managed, within Brave. After six months of work, we have finally realized this long-term goal!
+3 -3
View File
@@ -16,7 +16,7 @@ header_image: '/2021-03-01-cardheader-ipfs-at-ethdenver.png'
The annual premier hackathon event for the North American Ethereum community, ETHDenver and ColoradoJam, has come to a close. The 2021 event was 100% virtual, utilizing the gaming platform Gamerjibe as a virtual event venue, creating a unique and refreshing way for the dweb community to gather together.
![ETHDenver & ColoradoJam 2021 Bounty, Track & Quadratic Funding Winners](/2021-02-26-blog-ethdenver-winners.png)
![ETHDenver & ColoradoJam 2021 Bounty, Track & Quadratic Funding Winners](../assets/2021-02-26-blog-ethdenver-winners.png)
## Event highlights
@@ -29,7 +29,7 @@ When it came to building with IPFS, we saw NFT marketplaces, decentralized and o
See all of the [ETHDenver submissions here](https://ethdenver2021.devfolio.co/submissions) and read [about the winners](https://medium.com/ethdenver/ethdenver-coloradojam-2021-bounty-track-quadratic-funding-winners-805cf5f2de76), too!
![Folks from Slate and Textile chill in the bean bag area of the Shill Zone](/2021-02-26-blog-virtual-castle.jpeg)
![Folks from Slate and Textile chill in the bean bag area of the Shill Zone](../assets/2021-02-26-blog-virtual-castle.jpeg)
## The Virtual Castle
@@ -37,7 +37,7 @@ Alongside the event Discord, the livestream, and the hacks, ETHDenver also creat
In lieu of a sponsor booth, the IPFS Help Desk returned! Folks from IPFS, Slate, Fleek, Pinata, Opera, and Foundation all took turns hosting as their digital avatars, even occasionally running into a rainbow Pegabufficorn.
![The IPFS Help Desk at ETHDenver 2021](/2021-02-26-blog-help-desk.png)
![The IPFS Help Desk at ETHDenver 2021](../assets/2021-02-26-blog-help-desk.png)
## On the main stage
+1 -1
View File
@@ -27,7 +27,7 @@ We want to hear from you in the form of public Github issues. Issues should cont
Aside from new theme proposals, wed also very much appreciate comments on theme proposals, especially if there are additional important workstreams youd like to see as part of that theme. Existing proposals for themes can be found [here](https://github.com/ipfs/roadmap/issues?q=is%3Aissue+is%3Aopen+label%3A%222021+Theme+Proposal%22).
[![Proposals Screenshot](/screenshot.png)](https://github.com/ipfs/roadmap/issues?q=is%3Aissue+is%3Aopen+label%3A%222021+Theme+Proposal%22)
[![Proposals Screenshot](../assets/screenshot.png)](https://github.com/ipfs/roadmap/issues?q=is%3Aissue+is%3Aopen+label%3A%222021+Theme+Proposal%22)
To suggest a theme proposal, please create a [new 2021 Proposal issue](https://github.com/ipfs/roadmap/issues/new/choose) in this repo. The hope with using github issues is to allow for clarifying conversation in comments, help others build on your great ideas, and also be inspired to propose their own thoughts. You are welcome to submit more than one proposal!
@@ -24,7 +24,7 @@ While the IPFS protocol is still in development, making it more easily available
Brave has integrated IPFS into its desktop web browser for Windows, macOS, and Linux. When Brave detects an address which is an HTTP gateway URL to IPFS content, or a native IPFS address such as <code>ipfs://</code> or <code>ipns://</code> it will prompt the user to install and enable the native IPFS node, or to use an HTTP gateway. The default gateway used is dweb.link, which is run by Protocol Labs. Users can also specify a gateway of their choice in the browser settings. You can access the IPFS administrative UI at <code>brave://ipfs,</code>, or enable IPFS Companion and select “My Node” button in the main menu.
![Screencast gif showing how an IPFS address triggers the infobar in Brave for enabling a full IPFS node.](/2021-01-19-brave-enable-ipfs.gif)
![Screencast gif showing how an IPFS address triggers the infobar in Brave for enabling a full IPFS node.](../assets/2021-01-19-brave-enable-ipfs.gif)
## Why Web Browsers?
+2 -2
View File
@@ -17,7 +17,7 @@ In 2020 we announced a big moment for IPFS: The first official support of IPFS p
First, Opera has now added support for IPFS addressing to Opera Touch, their iOS browser.
![A screenshot of Wikipedia on IPFS in Opera Touch](/opera-ios-wikipedia-short.png 'Wikipedia on IPFS in Opera Touch')
![A screenshot of Wikipedia on IPFS in Opera Touch](../assets/opera-ios-wikipedia-short.png 'Wikipedia on IPFS in Opera Touch')
Second, support for IPFS addressing in Opera desktop browser for Windows, macOS and Linux will be coming in their next release, currently planned for March 2021.
@@ -27,7 +27,7 @@ With these releases, Opera will not support ipfs:// and ipns:// addressing acros
First, install Opera Touch on your iOS device. If youre reading this on an iOS device, [click to install now](https://apps.apple.com/us/app/opera-touch-web-browser/id1411869974)
![](/opera-ios-app-store-short.png)
![](../assets/opera-ios-app-store-short.png)
## How Does it Work?
@@ -14,13 +14,13 @@ tags:
author: Jenn Turner
---
![Join us at ETHDenver, where Flying Bufficorns and Spork Marmots reign free](/2021-02-02-ipfs-at-ethdenver-flyingspork.png)
![Join us at ETHDenver, where Flying Bufficorns and Spork Marmots reign free](../assets/2021-02-02-ipfs-at-ethdenver-flyingspork.png)
Its hard to explain what [ETHDenver](https://www.ethdenver.com/) is, exactly. Is it a conference? Yes. Is it a hackathon? Is it a week of technical workshops directed by industry leaders? Yes. Is it an art exhibition? Also, yes. Is it a live dj set? Again, yes. But even those labels dont do justice to the magic that happens when all of those things combine and settle on the Denver tech scene.
That is why were so excited to be part of this years ETHDenver, which is 100% virtual so everyone around the globe can experience the magic for themselves! In this, the year of the Spork Marmot, attendees worldwide will be able to participate in one of North Americas largest Ethereum gatherings: an innovation festival and #BUIDLathon, including a virtual replication of the famed Sports Castle, with a built-in game experience for IRL swag, and more.
![A wild Bufficorn appears at the IPFS Help Desk in 2020](/2021-02-02-ipfs-at-ethdenver-helpdesk2020.jpg)
![A wild Bufficorn appears at the IPFS Help Desk in 2020](../assets/2021-02-02-ipfs-at-ethdenver-helpdesk2020.jpg)
In years past, the IPFS community has had a large presence at ETHDenver, partially due to the incredibly welcoming and encouraging decentralization community built locally in Denver. [Last year](https://blog.ipfs.io/2020-02-07-ethdenver-2020/), we were truly blown away by how much we saw the ETHDenver community embrace IPFS. After all was said and done:
@@ -31,7 +31,7 @@ In years past, the IPFS community has had a large presence at ETHDenver, partial
Not only that, last year [Cryptorado](https://cryptorado.org/#/) organized the [Decentralized Network Summit](https://dnsummit.cryptorado.org/), inviting the IPFS community to a day full of speakers and workshops from the folks at 3Box, NEAR, Unstoppable Domains, Pinata, Tupelo, Textile, Kauri, The Graph and more, drawing 100+ attendees. It was a wonderful day full of meeting and making new friends, enjoying the company of old ones, and most importantly, intriguing conversations.
![](/2021-02-02-ipfs-at-ethdenver-ethdenver2019-1.jpeg)
![](../assets/2021-02-02-ipfs-at-ethdenver-ethdenver2019-1.jpeg)
So in that spirit of ETHDenvers past, the IPFS Help Desk, spearheaded by [Pinata back in 2019](https://twitter.com/IPFSPinata/status/1096806565116399616), will be back this year, helmed by your favorite IPFS community folks, so be sure to come visit us in the **Spork Shill Zone**, right next to the 🥰 Textile booth 🥰, every day that the Virtual Castle is open and ask all of your questions, from hacking to hoping, and everything in between.
@@ -47,4 +47,4 @@ We are so excited to be a part of this amazing experience once again, and stay t
Join us! [Register to attend ETHDenver 2021](https://www.ethdenver.com/).
![Join us at the Virtual Sports Castle for the year of the Spork Marmot](/2021-02-02-ipfs-at-ethdenver-sportscastle.png)
![Join us at the Virtual Sports Castle for the year of the Spork Marmot](../assets/2021-02-02-ipfs-at-ethdenver-sportscastle.png)
@@ -27,7 +27,7 @@ With `js-IPFS@0.51.0` types are now a first-class citizen within the codebase. T
Going forward all new code will be required to have types so to help contributors with that [aegir](https://github.com/ipfs/aegir) recently added stricter linting for JSDoc comments and we also [added a typecheck github action](https://github.com/ipfs/js-ipfs/pull/3327) to `js-IPFS` so any errors or missing types should be easy to spot in a PR.
![](/types.png =600x)
![](../assets/types.png =600x)
## SECIO Removal
+3 -3
View File
@@ -16,11 +16,11 @@ author: Teri Chadbourne
The [ProtoSchool](https://proto.school) team is pleased to announce the launch of a shiny new multiple-choice tutorial [introducing libp2p](https://proto.school/introduction-to-libp2p), the modular peer-to-peer networking stack that spun out of IPFS into its own first-class project and a dependency of IPFS itself. Today, IPFS focuses on _content addressing_ (i.e., finding, fetching and authenticating any piece of content in the web) while libp2p focuses on _process addressing_ (i.e., finding, connecting and authenticating any data transfer processes in the network).
![libp2p animation representing libp2p being extracted out of ipfs](/2021-02-17-libp2p-ipfs-animation.gif)
![libp2p animation representing libp2p being extracted out of ipfs](../assets/2021-02-17-libp2p-ipfs-animation.gif)
Historically, companies that produced peer-to-peer applications like Skype or BitTorrent created their own protocols to support them. Those protocols made a lot of assumptions about the environments theyd run in and the needs theyd meet, making them incredibly hard to upgrade or adapt to new environments. libp2p, however, has been extracted from its original implementation as the networking stack of IPFS, and can now serve a broad variety of use cases. While everyone building on IPFS or Filecoin is using libp2p as a dependency, many folks are using libp2p independently or embedded in other projects such as Ethereum 2.0, Polkadot, and Status.im.
![libp2p animation representing libp2p modularity. Each block of the libp2p logo represents a component of the libp2p network stack.](/2021-02-17-libp2p-logo-animation.gif)
![libp2p animation representing libp2p modularity. Each block of the libp2p logo represents a component of the libp2p network stack.](../assets/2021-02-17-libp2p-logo-animation.gif)
libp2p takes a modular approach to addressing the many components that can make up a network stack, from transports to multiplexing and beyond. A user can choose the specific pieces they need and compose their own configuration, tailored for their use cases. All of those pieces have very well defined interfaces that enable interoperability and easy upgrades, creating a future-proof networking stack. This ecosystem of interoperable modules is key to libp2ps versatility across multiple environments.
@@ -34,7 +34,7 @@ Were excited to bring more libp2p content to ProtoSchool in the near future!
ProtoSchool is a team effort, and we depend on folks in the IPFS and dweb community to outline new content, add new features, fix bugs, catch typos, and test-drive new tutorials like this one. There are many ways to [contribute to the project](https://proto.school/contribute), no matter your background, and our new multiple-choice format makes it super easy to [create new tutorials](https://proto.school/build) without any coding experience. In fact, the awesome José Bateira, who created our latest tutorial, built it with the help of our user-friendly ProtoWizard CLI!
![Screenshot of ProtoWizard CLI](/2021-02-17-protowizard.png)
![Screenshot of ProtoWizard CLI](../assets/2021-02-17-protowizard.png)
One of the easiest ways to help is by sharing your feedback as you explore our tutorials. Youll find a link at the bottom of every lesson to help you submit your suggestions.
@@ -17,7 +17,7 @@ tags:
## Meet the Community: Alan Shaw, Core Developer of the IPFS Protocol @ IPFS / Protocol Labs
![](/alan-shaw.jpg)
![](../assets/alan-shaw.jpg)
### Tell us a bit about yourself and your background. How did you get involved with IPFS and end up joining the team at Protocol Labs?
@@ -17,7 +17,7 @@ tags:
## Meet the Community: Carson Farmet, Core Developer @ Textile.io
![](/carson-farmer.jpg)
![](../assets/carson-farmer.jpg)
### Tell us a bit about yourself and your background. How did you get involved with IPFS and whats your relationship with Protocol Labs?
@@ -17,7 +17,7 @@ tags:
# Meet the Community: Edgar Lee, Software Developer @ Netflix
![](/edgar-lee.jpg)
![](../assets/edgar-lee.jpg)
### Tell us a bit about yourself and your background. How did you get involved with IPFS?
+8 -7
View File
@@ -1,16 +1,17 @@
---
tags:
- identity
- identity
title: Own Your Identity with ION
description: The new decentralized identity network launches with all transaction
description:
The new decentralized identity network launches with all transaction
data distributed with IPFS.
author: Dietrich Ayala
date: 2021-03-24
permalink: "/2021-03-24-own-your-identity-with-ion/"
permalink: '/2021-03-24-own-your-identity-with-ion/'
translationKey: ''
header_image: "/2021-03-26-cardheader-127-ion-header.png"
header_image: '/2021-03-26-cardheader-127-ion-header.png'
---
**We are many people!** Whether on Twitter, Zoom or paying the electricity bill, we assume identities to interact with others online. How much of that identity is you? How much of “you” is decided by those services? Why cant the bag of bits that is “you” stick around while hopping from online service to online service?
Well now it can! Decentralized identity services have matured to a point where usage is simple, theyre backed by public networks firmly rooted into the global business firmament, and now were seeing those businesses deploy them in earnest.
@@ -25,7 +26,7 @@ Weve been working with them to support their use of IPFS since 2019. IPFS com
Additionally, ION has a network explorer at [identity.foundation/ion/explorer/](https://identity.foundation/ion/explorer/).
![ION network explorer](/ion-explorer.png)
![ION network explorer](../assets/ion-explorer.png)
## Using and Contributing to ION
@@ -33,4 +34,4 @@ Today Microsoft launched v1.0 of ION, and in [the launch post](https://techcommu
As ION is a public network, running a node of your own will contribute to the overall health, resilience and performance of the system. Instructions for building and installing a node are detailed in the [ION Github repository](https://github.com/decentralized-identity/ion).
Try ION today for an identity solution which gives your users more control and let us know how it goes! Share your feedback in the ION repo or let [@IPFS](https://twitter.com/ipfs) know on Twitter.
Try ION today for an identity solution which gives your users more control and let us know how it goes! Share your feedback in the ION repo or let [@IPFS](https://twitter.com/ipfs) know on Twitter.
+3 -3
View File
@@ -19,7 +19,7 @@ Here are some of the highlights for the [first week of March](https://github.com
#### [**station**](https://github.com/ipfs/station)
![Station](/station.png)
![Station](../assets/station.png)
The new version of [station](https://github.com/ipfs/station) is ready for developer preview! `station` is one of the easiest ways to get an IPFS daemon running on your machine. It acts as a service and you get many convenient features, such as the ability to turn an IPFS node on through a GUI and drag and drop to share through IPFS. To try it out, you need Node.js 4 ([installation instructions here](https://nodejs.org/en/)) and npm 3 (which comes with Node) installed. Then, do the following:
@@ -98,7 +98,7 @@ central server for message exchange between peers.
#### [**fc00**](https://github.com/fc00/spec)
![lgierth in Paris](/lgierth-in-paris.jpeg)
![lgierth in Paris](../assets/lgierth-in-paris.jpeg)
[@lgierth](https://github.com/lgierth) spent a productive week in Paris, and chatted with [@cjdelisle](https://github.com/cjdelisle) and [@ansuz](https://github.com/ansuz) at [@xwiki](https://twitter.com/xwiki) about the state and future of cjdns/fc00, layed out ideas for routing improvements, and drafted spec documents for the switch and cryptoauth layers. You can find those specs [here](https://github.com/fc00/spec/pulls) (they'll be updated soon). Work will continue on these for the rest of March. The switch and routing layers of fc00 might be the foundation of a smarter swarm for IPFS/libp2p, so this is all very exciting.
@@ -118,7 +118,7 @@ central server for message exchange between peers.
#### [IPFS Dead drop](https://github.com/c-base/ipfs-deaddrop)
![cbase deadrop](/ipfs-dead-drop.ppeg 'Photo taken and cropped from https://www.flickr.com/photos/bergie/24769765569/in/datetaken-public/')
![cbase deadrop](../assets/ipfs-dead-drop.jpeg 'Photo taken and cropped from https://www.flickr.com/photos/bergie/24769765569/in/datetaken-public/')
Some members of [c-base](http://www.c-base.org/) have written a dead drop-like system that automatically uploads files from a USB memory stick to IPFS. When you plug a USB memory into the device, it will automatically access the memory stick and publish all the files on the web. Thanks to IPFS the files are instantly available to the whole world. Check out [deaddrops.com](https://deaddrops.com/) for more information about dead drops.
+10 -10
View File
@@ -1,15 +1,15 @@
---
date: 2016-05-08
permalink: "/16-ipfs-weekly-10/"
permalink: '/16-ipfs-weekly-10/'
title: IPFS Weekly 10
description:
description:
author: Richard Littauer
tags:
- weekly
- AEgir
header_image: "/header-image-weekly-newsletter.png"
- weekly
- AEgir
header_image: '/header-image-weekly-newsletter.png'
---
[IPFS](https://ipfs.io/) is a new hypermedia distribution protocol, addressed by content and identities, aiming to make the web faster, safer, and more open. In these posts, we highlight some of the development that has happened in the past week. For anyone looking to get involved, follow the embedded hyperlinks, search the wealth of information on [GitHub](https://github.com/ipfs) or join us on [IRC](https://webchat.freenode.net/?channels=ipfs) (#ipfs on the Freenode network).
If you would like to get this update as an email, sign up for our [weekly newsletter](http://eepurl.com/gL2Pi5)!
@@ -28,7 +28,7 @@ See the [blog](http://blog.ipfs.io/14-ipfs-0-4-0-released/) for more details.
[@haadcode](https://github.com/haadcode) upgraded all of his projects to use 0.4.0, got [orbit-db](https://github.com/haadcode/orbit-db) and [ipfs-log](https://github.com/haadcode/ipfs-log) working in the browser, and improved Orbit's UX. As a result, Orbit is much faster and more stable than it was under 0.3! We now have working distributables for [orbit-db](https://github.com/haadcode/orbit-db) and [ipfs-log](https://github.com/haadcode/ipfs-log) in the browser. They still require a local daemon to run to work but this will change when js-ipfs ships. [@haadcode](https://github.com/haadcode) added some new features to Orbit: preview files directly in the chat with code highlighting, players for audio and video, and improved the files browsing functionality in general. You can now also copy the hash of a file to clipboard. It looks like this:
![Orbit](/weekly-010-orbit.png)
![Orbit](../assets/weekly-010-orbit.png)
Finally, [@haadcode](https://github.com/haadcode) also created a simple JavaScript logging module called [logplease](https://github.com/haadcode/logplease), which works in Node.js and browsers. logplease does two simple things: output log messages to the console and/or to a file (Node.js only) and display the log messages with nice colors. It was inspired by [log4js](https://github.com/stritti/log4js) and [debug](https://github.com/visionmedia/debug).
@@ -46,7 +46,7 @@ As part of this, [@whyrusleeping](https://github.com/whyrusleeping) removed over
### js-ipld
![libp2p-cli](/weekly-010-js-libp2p.png)
![libp2p-cli](../assets/weekly-010-js-libp2p.png)
[@dignifiedquire](https://github.com/dignifiedquire) shipped an updated version of [js-ipld](https://npmjs.org/ipld) which now conforms to the [latest spec of IPLD](https://github.com/ipfs/specs/tree/master/ipld). In addition [js-ipfs-ipld](https://npmjs.org/ipfs-ipld) was created, which implements the building blocks to use IPLD in js-ipfs. The third package that was published is [js-ipfs-cli](https://npmjs.org/ipld-cli) which gives you a cli tool to interact and experiment with IPLD.
@@ -90,7 +90,7 @@ go-ipfs has support for restricting peer connections to certain IP address range
### MIT Meetup
![IPFS Meeting in Cambridge](/weekly-010-ipfs-boston.jpg)
![IPFS Meeting in Cambridge](../assets/weekly-010-ipfs-boston.jpg)
We had the first ever IPFS meetup in Cambridge, at MIT. It was sponsored by [Consensys](https://consensys.net), and hosted by the [MIT Bitcoin Club](http://bitcoin.mit.edu/). [@jbenet](https://github.com/jbenet), [@nicola](https://github.com/nicola), and [@CReckhow](https://twitter.com/CReckhow) each gave talks. A full writeup will appear on the blog as soon as we have edited the videos and posted them on the IPFS YouTube channel. We'll let you know when that happens, here.
@@ -205,4 +205,4 @@ Thanks, and see you next week!
- Richard Littauer
_Submit feedback about this issue [here](https://github.com/ipfs/weekly/issues/35), or send us [feedback about the IPFS Weekly in general](https://github.com/ipfs/weekly/issues/7)._
_Submit feedback about this issue [here](https://github.com/ipfs/weekly/issues/35), or send us [feedback about the IPFS Weekly in general](https://github.com/ipfs/weekly/issues/7)._
+1 -1
View File
@@ -21,7 +21,7 @@ Here are some of the highlights since the last IPFS Weekly.
<br/>
[![](/ipfs-camp-2019.png)](https://camp.ipfs.io)
[![](../assets/ipfs-camp-2019.png)](https://camp.ipfs.io)
<br/>
+1 -1
View File
@@ -59,7 +59,7 @@ _[Awesome IPFS](https://awesome.ipfs.io/) is a community maintained and updated
- [Almonit](almonit.eth): A decentralized website made with ENS + IPFS
- Deploy DNSLink TXT Records To AWS Route53 Domains with [dnslink-route53](https://github.com/RTradeLtd/dnslink-route53)
![](/ipfs-camp-2019.png)
![](../assets/ipfs-camp-2019.png)
## Join us at the first ever IPFS Camp
+1 -1
View File
@@ -68,7 +68,7 @@ _[Awesome IPFS](https://awesome.ipfs.io/) is a community maintained and updated
- [IPFS-Lite is an embeddable, lightweight IPFS-network peer for IPLD applications](https://github.com/hsanjuan/ipfs-lite)
- [Happy 5th birthday, 18F!](https://18f.gsa.gov/2019/03/19/18F-5-Anniversary-achieve/)
![](/ipfs-camp-2019.png)
![](../assets/ipfs-camp-2019.png)
## Join us at the first ever IPFS Camp
+1 -1
View File
@@ -67,7 +67,7 @@ _[Awesome IPFS](https://awesome.ipfs.io/) is a community maintained and updated
- The [AKASHA Foundation](https://akasha.org/about/), a non-profit born at the intersection of blockchain and collective intelligence, is currently hiring!
- Check out this web app to check [a public IPFS gateway state](https://ipfs.fooock.com/)
![](/ipfs-camp-2019.png)
![](../assets/ipfs-camp-2019.png)
## Join us at the first ever IPFS Camp
+1 -1
View File
@@ -73,7 +73,7 @@ _[Awesome IPFS](https://awesome.ipfs.io/) is a community maintained and updated
- [Genobank DNA Wallet](https://coinlist.co/build/nucypher/projects/a9f305f4-d0ff-4501-840e-4566608303ab) A Decentralised and anonymous DNA wallet. Enables users to extract DNA, establish ownership, share (P2P) & control using Nucypher and Blockchain.
- [deima](https://boramalper.github.io/deima/) is a decentralised image host that allows you to upload your images to IPFS distributed network.
![](/ipfs-camp-2019.png)
![](../assets/ipfs-camp-2019.png)
## Join us at the first ever IPFS Camp
+1 -1
View File
@@ -58,7 +58,7 @@ _See the latest releases of IPFS tools and projects across the ecosystem._
- qri (“query”) is versioned, scriptable, exportable, collaborative datasets and [version 0.7.1](https://github.com/qri-io/frontend/releases/tag/v0.7.1) is out now.
- The [Textile team](https://www.textile.photos/) recently shipped the latest [Textile Update | March 2019](https://medium.com/textileio/textile-update-march-2019-5da0c1581d3e).
![](/ipfs-camp-2019.png)
![](../assets/ipfs-camp-2019.png)
## Join us at the first ever IPFS Camp
+1 -1
View File
@@ -46,7 +46,7 @@ _[Awesome IPFS](https://awesome.ipfs.io/) is a community maintained and updated
- [Matters.news](https://matters.news/faq) is a news publishing site hosted on IPFS with approximately 10K+ active users!
- [galacteek](https://github.com/eversum/galacteek) is an experimental multi-platform Qt5-based browser/toolbox for the IPFS peer-to-peer network.
![](/ipfs-camp-2019.png)
![](../assets/ipfs-camp-2019.png)
## Join us at the first ever IPFS Camp
+1 -1
View File
@@ -16,7 +16,7 @@ Thanks for being part of our community, we truly couldnt make IPFS what it is
# Milestones
![](/050-ipfs-camp-recap-gif.gif)
![](../assets/050-ipfs-camp-recap-gif.gif)
## The first IPFS Camp was a blast
+1 -1
View File
@@ -14,7 +14,7 @@ tags:
Heres whats happening lately in the [InterPlanetary File System](https://ipfs.io/) galaxy and beyond! 🚀
![IPFS built-in to Opera for Android](/opera-android-banner.png)
![IPFS built-in to Opera for Android](../assets/opera-android-banner.png)
## IPFS in Opera for Android
+1 -1
View File
@@ -14,7 +14,7 @@ tags:
Heres whats happening lately in the [InterPlanetary File System](https://ipfs.io/) galaxy and beyond! 🚀
![Announcing IPFS 0.5](/090-go-ipfs-0-5-0-header-image.png)
![Announcing IPFS 0.5](../assets/090-go-ipfs-0-5-0-header-image.png)
## go-ipfs 0.5.0 is officially here 🚀
+3 -3
View File
@@ -27,7 +27,7 @@ We introduced the [IPFS Grants Platform](https://blog.ipfs.io/2020-04-20-ipfs-gr
The [IPFS Distributions website](https://dist.ipfs.io/) got a fun IPFS rebrand.
![New updates to go-ipfs](/090-go-ipfs-0-5-0-header-image.png)
![New updates to go-ipfs](../assets/090-go-ipfs-0-5-0-header-image.png)
Our largest upgrade to IPFS yet happened with [go-ipfs 0.5](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/)! And, we hosted [a launch meetup](https://www.youtube.com/watch?list=PLuhRWgmPaHtQ26F2MIuogvo0so9QUgH1r&v=RxJSUBeqOKU&feature=emb_log) with community members to share our many updates!
@@ -53,7 +53,7 @@ We take some significant steps to improve the [IPFS Developer experience](https:
[OrbitDB releases v0.24](https://github.com/orbitdb/orbit-db/issues/772#issuecomment-632357888) with support for both go-ipfs 0.5 and js-ipfs 0.44.
![Launching Testground](/092-launching-testground-header-image.png)
![Launching Testground](../assets/092-launching-testground-header-image.png)
We launched [Testground v0.5](https://blog.ipfs.io/2020-05-06-launching-testground/), a platform for testing, benchmarking, and simulating distributed and p2p systems at scale. Designed to be multilingual and runtime-agnostic, scaling from 2 to 10k instances.
@@ -83,7 +83,7 @@ Textile released the [Buckets JS library](https://textileio.github.io/js-hub/doc
Jim Kosem shares the new [IPFS Mobile Design Guidelines](https://blog.ipfs.io/2020-06-25-ipfs-mobile-design-guidelines/), based on research conducted earlier in the quarter. Go download the pdf!
![IPFS and ION](/099-identity-ipfs-ion-header.png)
![IPFS and ION](../assets/099-identity-ipfs-ion-header.png)
[ION](https://blog.ipfs.io/2020-06-11-identity-ipfs-ion/), launched by Microsoft, has been under development for over a year, and is an instance implementation of Sidetree that runs on the Bitcoin blockchain. And it stores transaction data on IPFS.
+2 -2
View File
@@ -12,7 +12,7 @@ author: Jenn Turner
Heres whats happening in the [InterPlanetary File System](https://ipfs.io/) galaxy!
![IPFS in Brave - Native Access to the Distributed Web](/2021-01-19-ipfs-in-brave.png)
![IPFS in Brave - Native Access to the Distributed Web](../assets/2021-01-19-ipfs-in-brave.png)
## IPFS now natively supported in Brave web browser
@@ -26,7 +26,7 @@ Join us on January 22, as we kick off 2021 with some very big plans! Our feature
[Register to attend](https://www.meetup.com/San-Francisco-IPFS/events/275755941/)
![IPFS in Browsers](/ipfs-and-igalia-collaborate-on-dweb-in-browsers-header-image.png)
![IPFS in Browsers](../assets/ipfs-and-igalia-collaborate-on-dweb-in-browsers-header-image.png)
## Igalia and IPFS join forces to empower the dweb

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Before

Width:  |  Height:  |  Size: 670 KiB

After

Width:  |  Height:  |  Size: 670 KiB

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

Before

Width:  |  Height:  |  Size: 429 KiB

After

Width:  |  Height:  |  Size: 429 KiB

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Before

Width:  |  Height:  |  Size: 626 KiB

After

Width:  |  Height:  |  Size: 626 KiB

Some files were not shown because too many files have changed in this diff Show More