Made some relatively minor changes for syntax, flow, and clarity. Also tweaked the title of the post due to length (it was overflowing in the preview), and adjusted some of the headers.
* feat: add ipld blog post
* Optimised images with calibre/image-actions
* fix: add canonical link and note about republish
* Edits and updated cover image
* Apply suggestions from code review
Co-authored-by: dame.eth <110121581+damedoteth@users.noreply.github.com>
* add clarifications
* update publish date
---------
Co-authored-by: Daniel N <2color@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dame.eth <110121581+damedoteth@users.noreply.github.com>
* first draft of calendar blog post
* fix: typo
* Apply suggestions from code review
Co-authored-by: Mosh <1306020+mishmosh@users.noreply.github.com>
* address feedback
* Update blog post date
* Refine wording about events
* refine this month in IPFS
* refine wording about new year
* update date
* Add CTA button to subscribe to the calendar
Co-authored-by: Daniel N <2color@users.noreply.github.com>
Co-authored-by: Mosh <1306020+mishmosh@users.noreply.github.com>
* Update from Forestry.io
emily.vaughan@protocol.ai created src/_blog/welcome-to-ipfs-news-188.md
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Waring <106938+cwaring@users.noreply.github.com>
* add bacalhau beta v1 blog post
* add blog info and image
* add author
* add tag
* update date and add tag
* fix typo
* update with suggestions
* Update bacalhau-beta-v1.md
* Update bacalhau-beta-v1.md
* fix error in title
* Add header image
* add header image
* add more context about bacalhau
* delete file
* change date and add more suggested edit
* fix links
* remove caltech case study
* add bacalhau beta v1 blog post
* add blog info and image
* add author
* add tag
* update date and add tag
* fix typo
* update with suggestions
* Update bacalhau-beta-v1.md
* Update bacalhau-beta-v1.md
* fix error in title
* Add header image
* add header image
* add more context about bacalhau
* delete file
* change date and add more suggested edit
* Update from Forestry.io
emily.vaughan@protocol.ai created src/_blog/welcome-to-ipfs-news-188.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/welcome-to-ipfs-news-188.md
* Update from Forestry.io
emily.vaughan@protocol.ai created src/assets/ipfs-blog-header_-ipfs-camp-recap.png
* Update from Forestry.io
emily.vaughan@protocol.ai created src/assets/ipfs-camp-stats-summary.png
* Update from Forestry.io
emily.vaughan@protocol.ai created src/assets/mollyipfscamp2.jpg
emily.vaughan@protocol.ai created src/assets/ipfsfunding.jpeg
* Update from Forestry.io
emily.vaughan@protocol.ai created src/assets/chooseyouradventure.jpeg
* Update from Forestry.io
emily.vaughan@protocol.ai created src/assets/ipfsgroup.jpeg
emily.vaughan@protocol.ai created src/_blog/ipfs-camp-2022-recap.md
* Update from Forestry.io
emily.vaughan@protocol.ai created src/assets/screenshot-2022-11-22-at-2-25-22-pm.png
emily.vaughan@protocol.ai updated src/_blog/ipfs-camp-2022-recap.md
* Optimised images with calibre/image-actions
* Update from Forestry.io
emily.vaughan@protocol.ai created src/assets/voice-gems.jpeg
emily.vaughan@protocol.ai updated src/_blog/ipfs-camp-2022-recap.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/ipfs-camp-2022-recap.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/ipfs-camp-2022-recap.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/ipfs-camp-2022-recap.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/ipfs-camp-2022-recap.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/ipfs-camp-2022-recap.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/ipfs-camp-2022-recap.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/releasenotes.md
* Optimised images with calibre/image-actions
* fix: add kubo tag to forestry
* fix: add kubo tag to releasenotes
* Update from Forestry.io
emily.vaughan@protocol.ai created src/_blog/welcome-to-ipfs-news-189.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/welcome-to-ipfs-news-189.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/welcome-to-ipfs-news-189.md
* Update from Forestry.io
emily.vaughan@protocol.ai created src/assets/ipfs-blog-header-cod-track-at-ipfs-camp.png
* Update from Forestry.io
emily.vaughan@protocol.ai created src/_blog/content-addressed-computing-at-ipfs-camp-2022.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/content-addressed-computing-at-ipfs-camp-2022.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/content-addressed-computing-at-ipfs-camp-2022.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/content-addressed-computing-at-ipfs-camp-2022.md
* Update from Forestry.io
emily.vaughan@protocol.ai updated src/_blog/content-addressed-computing-at-ipfs-camp-2022.md
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Waring <106938+cwaring@users.noreply.github.com>
* Initial commit moving the blog post from Notion
Fixes#445
* Second pass
* Add final section
* Apply suggestions from code review
Co-authored-by: Steve Loeppky <biglep@protocol.ai>
* Address comments and add point
Added pro point about browser-to-browser communication
* Update headers to be consistently AP cased
* Refine point about sdp exchange
* Optimise image
* update header for consistency
Co-authored-by: Daniel N <2color@users.noreply.github.com>
Co-authored-by: Steve Loeppky <biglep@protocol.ai>
* Remove non functioning canonical plugin
* Add custom plugin to add the canonical tag to blog posts
* refactor: simplify canonical plugin for all cases
* pass in CANONICAL_BASE as option to plugin
* Remove empty page
* Add a trailing slash to canonical url if not present
* match zero or more trailing slashes
* up comment
Co-authored-by: Daniel N <2color@users.noreply.github.com>
Co-authored-by: Chris Waring <106938+cwaring@users.noreply.github.com>
Without this local npm run build fails.
Staging build sets it to https://ipfs-blog-staging.on.fleek.co
so fine to use production value here – easier to spot bugs.
emily.vaughan@protocol.ai created src/assets/180673629-deccc8fc-35d9-49ba-964c-b16d281d05fa.jpg
emily.vaughan@protocol.ai created src/_blog/cargox-s-ipfs-based-nft-solution-is-trusted-in-international-trade.md
* origin/main:
Update from Forestry.io emily.vaughan@protocol.ai updated src/_blog/welcome-to-ipfs-news-180.md
Update from Forestry.io emily.vaughan@protocol.ai created src/_blog/welcome-to-ipfs-news-180.md
Update .github/workflows/stale.yml
Update libp2p-paris-p2p-festival-2022-recap.md
Update web3-browsers-for-decentralized-storage.md
Fix markdown to render links
Update from Forestry.io emily.vaughan@protocol.ai updated src/_blog/introducing-probelab.md
Optimised images with calibre/image-actions
Update from Forestry.io emily.vaughan@protocol.ai created src/_blog/introducing-probelab.md
Update from Forestry.io emily.vaughan@protocol.ai created src/assets/172855109-3abff5c1-0b13-43d9-b2bb-8560a6b3b616.jpg
Add blog post describing:
- The problem of public and non-public computers in today's Internet.
- The idea behind hole punching.
- How libp2p does hole punching via Project Flare.
Eric Ronne created src/assets/ipfs-chat-tute-04.jpg
Eric Ronne created src/assets/ipfs-chat-tute-05.jpg
Eric Ronne created src/assets/ipfs-chat-tute-06.jpg
Eric Ronne created src/assets/ipfs-chat-tute-07.jpg
Eric Ronne created src/assets/ipfs-chat-tute-01.jpg
Eric Ronne created src/assets/ipfs-chat-tute-02.jpg
Eric Ronne created src/assets/ipfs-chat-tute-03.jpg
Stan Yee created src/assets/asia-hackathon-season-ipfs.jpeg
Stan Yee created src/_blog/about-500-000-in-prizes-and-grants-for-asia-hackathon-season-2021.md
emily.vaughan@protocol.ai created src/_blog/welcome-to-ipfs-weekly-150-celebrating-the-150th-ipfs-newsletter-with-another-set-of-nfts-stored-on-ipfs-and-more-in-the-ipfs-ecosystem.md
emily.vaughan@protocol.ai created src/_blog/welcome-to-ipfs-weekly-149-huge-news-out-of-audius-249k-distributed-to-dorahacks-winners-a-preview-of-sxsw-2021-and-more.md

This repository contains code and content for the [IPFS Blog & News](https://blog.ipfs.io) website. To contribute to the site, please follow the instructions below for _post authors/editors_ and _site developers_.
This repository contains code and content for the [IPFS Blog & News](https://blog.ipfs.tech) website. To contribute to the site, please follow the instructions below for _post authors/editors_ and _site developers_.
**If you just want to submit a link (event, academic paper, tutorial, video or news coverage) to add to the site, [use this easy form](https://airtable.com/shrNH8YWole1xc70I)!**
## For post authors/editors
### Creating a new blog post via Github pull request
While it's possible to manually PR a new blog post from a local build, **you are strongly encouraged to [use this site's Forestry integration](https://forestry.io) for drafting and editing new content.** Using Forestry offers you WYSIWYG editing (in addition to raw markdown mode), easy image upload/crop tools, and instant previews. If you're an IPFS coreteam member and don't have Forestry access, contact Jessica Schilling.
Each blog post is a markdown file in the [`src/_blog`](./src/_blog) folder, with a little metadata at the top (known as YAML frontmatter) to help us create the post index page.
Forestry uses the `staging` branch as a work-in-progress scratchpad for blog content. Once content in `staging` is approved, it can be merged into `main`, which is the branch that feeds the production site at blog.ipfs.io. Merges into `main` are _automatically deployed_ to the production site using [Fleek](https://fleek.co/).
A blog post looks like this:
### Forestry authoring/editing tips
```markdown
---
title: Announcing the New IPFS Community Calendar
description: 'Check out the new IPFS community calendar where you can participate and contribute to one of the many working groups advancing IPFS.'
- Use the "Content Types" section of Forestry's left-hand menu to drill down to the type of item (blog post, video, news coverage, event) you want to create/edit.
- For card and blog post header images, **be sure to use the [image crop/scale tool](https://blog.ipfs.io/image-crop/)** to resize and save images so they're the correct dimensions. (Don't have an image? Don't worry, there are generic fallback images.)
- Want to embed a YouTube video in a blog post? Switch to raw markdown view and use `@[youtube](videoID)`, substituting the video's unique ID from the URL (e.g. `https://www.youtube.com/watch?v=eFbKKsEoQNg`) for `videoID`.
- To switch between WYSIWYG and raw markdown while writing a blog post, choose "Raw Editor" or "WYSIWYG Editor" from the dots menu at the top right of the page:<br/>
## The IPFS community is growing
### Forestry build preview tips
...
```
While WYSIWYG mode usually gives you a good enough idea of what a blog post will look like, you can also load Forestry's own _build preview_ in a new tab by clicking the eye icon at the top right of the page:<br/>
**To create your new post** create a new markdown `md` file in `src/_blog` prefixed with the year and month (as a convention) and change the name to be relevant for your post. e.g.
This build preview lets you preview changes to any content type (not just blog posts), and _does not_ require you to save your changes in order to see them.
```console
$cd src/_blog
$ touch 2022-12-community-calendar.md
```
A few tips:
Now edit the metadata at the top of the file.
-Click the eye icon to _regenerate_ a build preview at any time from a Forestry edit page. You may need to reload the build preview tab if you don't see changes come through immediately.
-Occasionally, a build preview page gets stuck at a URL ending in `forestry/pending` or simply won't load. In this case, try the following:
-Remove `forestry/pending` from the URL and try again.
-Check the Previews section of Forestry's [`Site > Settings` page](https://app.forestry.io/sites/lg5t7mxcqbr-da/#/settings/previews) to see the preview server's current status, start/stop/restart the server, or examine the logs for errors. Simply restarting the preview server can fix many problems.
-If all else fails, save your changes, wait a few minutes, and take a look at [Fleek's build of the latest version of the `staging` branch](https://ipfs-blog-staging.on.fleek.co/). It's a considerably slower build/deploy time, but does reflect the latest changes once it finishes deploying.
-`title` - used as the `h1` and `title` tag on the post-page, and the name of the post on the index page. **required**
-`description` - used as the meta description tag on the post-page. **required**
-`date` - the "_published at_" date, shown on the [blog index page](https://blog.ipfs.io), please update at posting time to reflect current date - **required** (posts will not be displayed until this date on the live blog, but you will see them locally when using `make dev`)
-`author` - used to give you credit for your words - **required**
-`tags` - used to categorize the blog post
-`permalink` - can be used to override the post URL if needed. Please start and end URLs with a `/` (`/my/url/`).
-`header_image` - name of the image displayed on the [blog homepage](https://blog.ipfs.tech/). See [Custom header image](#custom-header-image) for more details.
### To deploy to the live site
#### Custom header image
Changes you _save_ in Forestry are written directly to the `staging` branch and automatically generate a staging preview at https://ipfs-blog-staging.on.fleek.co/.
Each post can have a custom image that is shown on the [blog homepage](https://blog.ipfs.tech/). To set an image:
**Once a staged post is ready to go live, please PR `staging` to `main` using [this handy shortcut](https://github.com/ipfs/ipfs-blog/compare/main...staging?expand=1).** Give your PR a title explaining what changes are inside (the default just says "Staging", which isn't helpful.) _Note that if multiple posts are in-flight in staging and only one is approved to go live, your PR may need some massaging by a reviewer._
1. Add the image into `assets\header_images`. Typically the image is `2048×1152px` in jpg/png.
1. Rename the image to match the file name of your post. For example, the `2022-12-community-calendar.md` post uses `2022-12-community-calendar.png` as the header.
1. In the post markdown, edit the front-matter to include the `header_image` variable:
_Note for PR reviewers: While we continue to dogfood Forestry, please leave your edits in comments rather than making additional commits._ As our overall workflow continues to solidify, this direction may change.
```markdown
header_image: 2022-12-community-calendar.png
```
#### Creating a pull request
To create a pull request, you will need to fork this repository. See the GitHub docs on [how to create a pull request from a fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). If you have the [GitHub CLI](https://cli.github.com/) installed, you can use the [`gh pr create` command](https://cli.github.com/manual/gh_pr_create) from the terminal to conveniently create a pull request.
Once you create the pull request, await review. If you have permissions to merge, always preview the post first to ensure everything looks right. You can do this by clicking on the "Details" link next to the **fleek/build** check that runs automatically. Clicking this link will take you to a staging site where you will then need to click on the intended post in the feed to see it.
### To add a URL redirect for a blog post
@@ -70,7 +95,7 @@ To build a local copy, run the following:
1. Move into the `ipfs-blog` folder and install the npm dependencies:
[go-ipfs 0.4.0](http://dist.ipfs.io/#go-ipfs) has been released! Among the many changes are a revamped implementation of the IPFS communication protocols, increased performance, improvements to IPNS (the Interplanetary Naming System), many bugfixes, and lots of new features to make IPFS even more powerful.
[go-ipfs 0.4.0](http://dist.ipfs.tech/#go-ipfs) has been released! Among the many changes are a revamped implementation of the IPFS communication protocols, increased performance, improvements to IPNS (the Interplanetary Naming System), many bugfixes, and lots of new features to make IPFS even more powerful.
@@ -92,7 +92,7 @@ This release also includes performance and usability improvements to IPNS, which
## How to upgrade
Depending on how you initially installed IPFS, there are several ways to upgrade. If you installed IPFS with a pre-built binary, you can either head over to [dist.ipfs.io](http://dist.ipfs.io/#go-ipfs) and grab the latest version from there. Or alternatively, from the same page you can grab the `ipfs-update` binary, and use it to perform the upgrade for you. If you installed from source, you can simply update your git repo to the `v0.4.0` tag, run `make toolkit_upgrade && make install`.
Depending on how you initially installed IPFS, there are several ways to upgrade. If you installed IPFS with a pre-built binary, you can either head over to [dist.ipfs.tech](http://dist.ipfs.tech/#go-ipfs) and grab the latest version from there. Or alternatively, from the same page you can grab the `ipfs-update` binary, and use it to perform the upgrade for you. If you installed from source, you can simply update your git repo to the `v0.4.0` tag, run `make toolkit_upgrade && make install`.
Please upgrade your IPFS nodes as soon as you can, so you can take advantage of the improvements!
[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.
[dist.ipfs.tech](https://dist.ipfs.tech/) 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.
## The IPFS Distributions Website
The distributions website itself is served by, hosted, and distributed through IPFS. The website assets and all of the binaries form one large IPFS content graph. This means that you can view and use this website through any IPFS node, even your own local ipfs node. All you need to do is to run an IPFS daemon and direct your browser to http://localhost:8080/ipns/dist.ipfs.io. Of course, you'll need to be online and connected to the internet, so you can find other ipfs nodes that have this website.
The distributions website itself is served by, hosted, and distributed through IPFS. The website assets and all of the binaries form one large IPFS content graph. This means that you can view and use this website through any IPFS node, even your own local ipfs node. All you need to do is to run an IPFS daemon and direct your browser to http://localhost:8080/ipns/dist.ipfs.tech. Of course, you'll need to be online and connected to the internet, so you can find other ipfs nodes that have this website.
### Download Deduplication
If you download files from dist.ipfs.io using your local IPFS node, future downloads **may be** much faster. When you click to download a file, your browser will ask to download it from your local IPFS node. In turn, your IPFS node will fetch the relevant content from other nodes in the network, and return it to your browser. Your browser will place the file in your Downloads folder, or wherever you directed it to.
If you download files from dist.ipfs.tech using your local IPFS node, future downloads **may be** much faster. When you click to download a file, your browser will ask to download it from your local IPFS node. In turn, your IPFS node will fetch the relevant content from other nodes in the network, and return it to your browser. Your browser will place the file in your Downloads folder, or wherever you directed it to.
However, once your local IPFS node has fetched the content, it will cache it locally for some time. This makes subsequent downloads of the exact same content instantaneous! Your browser asks the IPFS node for the content; the node already has it and simply returns it, without ever having to connect to other nodes. This also means that if other IPFS nodes in your local area network try to download the file, they may be able to fetch it from your node. Once you have the content locally, this can even work while disconnected from the internet!
@@ -34,9 +34,9 @@ Every distribution has a section, which includes:
- A `Changelog`, a link to a summary of all version changes;
- An `All Versions`, a link to view and download previous versions.
The `All Versions` link on each distribution shows directory listings for all the available versions, and a `versions` file ([example](https://dist.ipfs.io/go-ipfs/versions)). This file can be used by tools, such as [ipfs-update](https://dist.ipfs.io/#ipfs-update), to find all the available versions and download the latest.
The `All Versions` link on each distribution shows directory listings for all the available versions, and a `versions` file ([example](https://dist.ipfs.tech/go-ipfs/versions)). This file can be used by tools, such as [ipfs-update](https://dist.ipfs.tech/#ipfs-update), to find all the available versions and download the latest.
The directory listing of each version ([example](https://dist.ipfs.io/go-ipfs/v0.3.11)) has all the platform archives (`.zip` or `.tar.gz`), a `README.md` and a `dist.json` which describe the release for humans and machines. It is meant to be easily consumed and used by tools.
The directory listing of each version ([example](https://dist.ipfs.tech/go-ipfs/v0.3.11)) has all the platform archives (`.zip` or `.tar.gz`), a `README.md` and a `dist.json` which describe the release for humans and machines. It is meant to be easily consumed and used by tools.
The site is also used directly by [`ipfs-update`](https://github.com/ipfs/ipfs-update) to update IPFS.
@@ -21,9 +21,9 @@ We'll be **shutting down** the v03x bootstrappers and gateways on **Thursday, Ju
- The bootstrap nodes configured by default will no longer allow you to connect.
- The public HTTP-to-IPFS gateway at [ipfs.io][gw] will no longer be able to access data from v03x networks.
We ask you to update to the latest 0.4.x version, available through [dist.ipfs.io][dist]. If you can't update just yet, you can still connect your v03x nodes to each other by using the `ipfs bootstrap` or `ipfs swarm connect` commands.
We ask you to update to the latest 0.4.x version, available through [dist.ipfs.tech][dist]. If you can't update just yet, you can still connect your v03x nodes to each other by using the `ipfs bootstrap` or `ipfs swarm connect` commands.
[go-ipfs 0.4.4](https://dist.ipfs.io/#go-ipfs) has been released today, including an important hotfix for a bug we discovered in how _pinning_ works. If you had a large number of pins, new pins would overwrite existing pins. Apart from the hotfix, this release is equal to the previous release 0.4.3.
[go-ipfs 0.4.4](https://dist.ipfs.tech/#go-ipfs) has been released today, including an important hotfix for a bug we discovered in how _pinning_ works. If you had a large number of pins, new pins would overwrite existing pins. Apart from the hotfix, this release is equal to the previous release 0.4.3.
- [How pinning works](#how-pinning-works)
- [The bug](#the-bug)
@@ -44,8 +44,8 @@ For now, don't run `ipfs repo gc` on sensitive data that is not otherwise backed
## Find out if you're affected
If you think you have experienced this issue and have _not_ run a garbage collection, you can still find the 'lost' pins. We have written a new tool called 'ipfs-see-all' that allows you to try and recover any old pins that are still in your local repo. The tool is available on [our distributions page](https://dist.ipfs.io), or, if you prefer building from source, head over to [the GitHub repo](https://github.com/whyrusleeping/ipfs-see-all). Once you have the tool, invoke it as `ipfs-see-all lost-pins` and it will scan for and print out every pin object that is not actually pinned in your pinset. Note that this may contain anything you have manually unpinned.
If you think you have experienced this issue and have _not_ run a garbage collection, you can still find the 'lost' pins. We have written a new tool called 'ipfs-see-all' that allows you to try and recover any old pins that are still in your local repo. The tool is available on [our distributions page](https://dist.ipfs.tech), or, if you prefer building from source, head over to [the GitHub repo](https://github.com/whyrusleeping/ipfs-see-all). Once you have the tool, invoke it as `ipfs-see-all lost-pins` and it will scan for and print out every pin object that is not actually pinned in your pinset. Note that this may contain anything you have manually unpinned.
## How to upgrade
Depending on how you initially installed IPFS, there are several ways to upgrade. If you installed IPFS with a pre-built binary, you can head over to [dist.ipfs.io](https://dist.ipfs.io/#go-ipfs) and grab the latest version from there. Or alternatively, from the same page you can grab the `ipfs-update` binary, and use it to perform the upgrade for you. If you installed from source, you can simply run `git checkout v0.4.4`, then run `make install`.
Depending on how you initially installed IPFS, there are several ways to upgrade. If you installed IPFS with a pre-built binary, you can head over to [dist.ipfs.tech](https://dist.ipfs.tech/#go-ipfs) and grab the latest version from there. Or alternatively, from the same page you can grab the `ipfs-update` binary, and use it to perform the upgrade for you. If you installed from source, you can simply run `git checkout v0.4.4`, then run `make install`.
@@ -52,7 +52,7 @@ This took us more time than what we had initially expected, however, now it is a
If you would like to know more about the issue we faced, you can find more info here: ["Stream Muxing issues between go-ipfs and js-ipfs are a thing of the past"](https://github.com/ipfs/js-ipfs/issues/721)
**Note:** Interop is only fully available with go-ipfs 0.4.7 and onwards, if you haven't updated yet, please do so by visiting http://dist.ipfs.io/.
**Note:** Interop is only fully available with go-ipfs 0.4.7 and onwards, if you haven't updated yet, please do so by visiting http://dist.ipfs.tech/.
### 🌍 js-ipfs will now also bootstrap with bootstrap nodes as well
@@ -101,7 +101,7 @@ This link points to a specific snapshot. It will always point to that specific d
For your convenience we have set up a domain name and DNS entry at [tr.wikipedia-on-ipfs.org](http://tr.wikipedia-on-ipfs.org) that will resolve to the current IPFS snapshot.
If you are not able to access `ipfs.io`, or `wikipedia-on-ipfs.org`, you can use this [dnslink](https://docs.ipfs.io/concepts/dnslink/) URL to access the content -- simply replace `ipfs.io` with the address of any [IPFS gateway](https://ipfs.github.io/public-gateway-checker/):
If you are not able to access `ipfs.io`, or `wikipedia-on-ipfs.org`, you can use this [dnslink](https://docs.ipfs.tech/concepts/dnslink/) URL to access the content -- simply replace `ipfs.io` with the address of any [IPFS gateway](https://ipfs.github.io/public-gateway-checker/):
@@ -119,7 +119,7 @@ Your main options for accessing the snapshot of Wikipedia are: _(depending on yo
* **Option**: Use any gateway to access the latest DNSLink version: https://ipfs.io/ipns/tr.wikipedia-on-ipfs.org/wiki/
* **Option**: Connect to gateway over Tor (this is experimental). Read [this tutorial on Tor gateways](https://dweb-primer.ipfs.io/avenues-for-access/lessons/tor-gateways.html).
* **Option**: Install an IPFS node on your computer and access Wikipedia through that node (requires [using the command line](http://lifehacker.com/5633909/who-needs-a-mouse-learn-to-use-the-command-line-for-almost-anything). _This is the most reliable method because it retrieves the content directly from the IPFS peer-to-peer network)_
1. Install IPFS [following these instructions](https://docs.ipfs.io/install/command-line/). Use the most recent verison of IPFS: 0.4.9-rc2 or higher if possible.
1. Install IPFS [following these instructions](https://docs.ipfs.tech/install/command-line/). Use the most recent verison of IPFS: 0.4.9-rc2 or higher if possible.
2. Start your IPFS node by running `ipfs daemon` so it can connect to the network.
3. Read the content through your IPFS node's local HTTP gateway by visiting:
* 30 April 2017 snapshot: http://localhost:8080/ipfs/QmT5NvUtoM5nWFfrQdVrFtvGfKFmG7AHE8P34isapyhCxX/wiki/
@@ -144,7 +144,7 @@ If you don't have enough storage space to hold full copies of the snapshot(s), y
**Steps**:
1. Install IPFS [following these instructions](https://docs.ipfs.io/install/command-line/). Use the most recent verison of IPFS -- 0.4.9-rc2 or higher if possible.
1. Install IPFS [following these instructions](https://docs.ipfs.tech/install/command-line/). Use the most recent verison of IPFS -- 0.4.9-rc2 or higher if possible.
2. Start your IPFS node by running `ipfs daemon` so it can connect to the network.
@@ -76,4 +76,4 @@ Please note that this is a simple first-blush implementation of the technology.
## Enjoy!
All that said, we hope you give `ipfs pubsub` a try. You can head over to the [Discussion Forum](https://discuss.ipfs.io/categories) to ask questions, get help, or simply let us know how it goes.
All that said, we hope you give `ipfs pubsub` a try. You can head over to the [Discussion Forum](https://discuss.ipfs.tech/categories) to ask questions, get help, or simply let us know how it goes.
@@ -55,4 +55,4 @@ A few other subcommands and flags were added around the API, as well as many oth
- Expose port 8081 in docker container for /ws listener ([ipfs/go-ipfs#3954](https://github.com/ipfs/go-ipfs/pull/3954))
If you have questions or run into any issues, please post in the IPFS Discussion and Support Forum's [go-ipfs 0.4.10 release thread](https://discuss.ipfs.io/t/ipfs-0-4-10-release/687). For bugs, please open an issue in [ipfs/go-ipfs/issues](https://github.com/ipfs/go-ipfs/issues).
If you have questions or run into any issues, please post in the IPFS Discussion and Support Forum's [go-ipfs 0.4.10 release thread](https://discuss.ipfs.tech/t/ipfs-0-4-10-release/687). For bugs, please open an issue in [ipfs/go-ipfs/issues](https://github.com/ipfs/go-ipfs/issues).
IPFS pubsub was first introduced in September 2016 behind an experimental flag. This initial implementation allowed [orbit](https://orbit.chat/), a chat application built on top of IPFS, to become fully distributed. [@haadcode](https://github.com/haadcode) presented that work at [DEVCON2](https://www.youtube.com/watch?v=vQrbxyDPSXg). Later, [the IPFS team announced that pubsub ](https://ipfs.io/blog/25-pubsub) was ready for the whole community to use.
IPFS pubsub was first introduced in September 2016 behind an experimental flag. This initial implementation allowed [orbit](https://orbit.chat/), a chat application built on top of IPFS, to become fully distributed. [@haadcode](https://github.com/haadcode) presented that work at [DEVCON2](https://www.youtube.com/watch?v=vQrbxyDPSXg). Later, [the IPFS team announced that pubsub ](https://blog.ipfs.tech/25-pubsub) was ready for the whole community to use.
In this post I'll show you how to use pubsub with the [JavaScript implementation of IPFS](https://github.com/ipfs/js-ipfs). I start by using the pubsub primitives available in `js-ipfs` and end with a new module [plus video tutorial](https://youtu.be/Nv_Teb--1zg) of how to use it. Make sure to read to the end!
With the introduction of [IPFS PubSub](https://ipfs.io/blog/25-pubsub/), it became possible for IPFS nodes to declare shared _pubsub_ topics, broadcasting updates in real-time to other nodes in the network that have subscribed to the topic. The pubsub pattern is a powerful construct but it does not guarantee delivery of messages and does not guarantee message order. Enter [CRDTs, Conflict-Free Replicated Data Types](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type), a higher level data structure that allows us to overcome these shortcomings.
With the introduction of [IPFS PubSub](https://blog.ipfs.tech/25-pubsub/), it became possible for IPFS nodes to declare shared _pubsub_ topics, broadcasting updates in real-time to other nodes in the network that have subscribed to the topic. The pubsub pattern is a powerful construct but it does not guarantee delivery of messages and does not guarantee message order. Enter [CRDTs, Conflict-Free Replicated Data Types](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type), a higher level data structure that allows us to overcome these shortcomings.
## Enter CRDTs, Conflict-Free Replicated Data Types
@@ -60,7 +60,7 @@ There is an [open issue on the Node.js project to expose the RSA key generation
### PubSub tutorial published
@pgte published an amazing tutorial on how to use PubSub with js-ipfs and in the browser! Read it on the [IPFS Blog https://ipfs.io/blog/29-js-ipfs-pubsub/](https://ipfs.io/blog/29-js-ipfs-pubsub/).
@pgte published an amazing tutorial on how to use PubSub with js-ipfs and in the browser! Read it on the [IPFS Blog https://blog.ipfs.tech/29-js-ipfs-pubsub/](https://blog.ipfs.tech/29-js-ipfs-pubsub/).
@@ -80,10 +80,10 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
That is all for this post. Thank you for being part of the community. I bid you a good day!
@@ -73,11 +73,11 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- **NEW** Join the [ⒿⓈ⚡️ js-ipfs Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/js-ipfs/issues/1179) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
That is all for this post. Thank you for being part of the community. I bid you a good day!
[go-ipfs 0.4.14](https://dist.ipfs.io/#go-ipfs) has been released today. Not only have we improved memory and CPU usage but we also managed to fix a lot of bugs, ship a major improvement to IPNS performance and lots of refactoring! \o/
[go-ipfs 0.4.14](https://dist.ipfs.tech/#go-ipfs) has been released today. Not only have we improved memory and CPU usage but we also managed to fix a lot of bugs, ship a major improvement to IPNS performance and lots of refactoring! \o/
@@ -84,8 +84,8 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - <https://waffle.io/ipfs/go-ipfs?label=help%20wanted>
- Join an IPFS All Hands call, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- The All Hands call is also the perfect venue for demos, join in and show us what you built!
- Join the discussion at <http://discuss.ipfs.io/>
- Join the discussion at <http://discuss.ipfs.tech/>
# Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the [#ipfs](irc://freenode.net/ipfs) channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the [#ipfs](irc://freenode.net/ipfs) channel on Freenode.
@@ -82,11 +82,11 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [ⒿⓈ⚡️ js-ipfs Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/js-ipfs/issues/1179) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
That is all for this post. Thank you for being part of the community. I bid you a good day!
@@ -61,11 +61,11 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
That is all for this post. Thank you for being part of the community. I bid you a good day!
@@ -64,12 +64,12 @@ Would you like to contribute to the libp2p project and don't know how? Well, the
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/libp2p/js-libp2p?label=help%20wanted
- Join an IPFS/libp2p All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with libp2p and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 ](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #libp2p channel on Freenode.
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #libp2p channel on Freenode.
That is all for this post. Thank you for being part of the community.
@@ -49,9 +49,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
@@ -51,9 +51,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
@@ -56,9 +56,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
@@ -58,9 +58,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
[go-ipfs 0.4.18](https://dist.ipfs.io/#go-ipfs) has been released! This is one of largest go-ipfs releases to date; 3 months in the making. _Thanks to all our contributors for your awesome work!_
[go-ipfs 0.4.18](https://dist.ipfs.tech/#go-ipfs) has been released! This is one of largest go-ipfs releases to date; 3 months in the making. _Thanks to all our contributors for your awesome work!_
## ✨ Highlights
@@ -207,11 +207,11 @@ Would you like to help contribute to the go-ipfs project?
* Join us on Github at https://github.com/ipfs/go-ipfs where you can find out more about the project.
* Check the issues with the help wanted label at the Ready column in our waffle board - https://waffle.io/ipfs/go-ipfs?label=help%20wanted
* Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute or any cool demos of what you've built - https://github.com/ipfs/pm/#all-hands-call
* Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
* Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
* Join the [Go Core Dev Team Weekly Sync](https://github.com/ipfs/pm/issues/674) 🙌🏽 and be part of the Sprint action!
## ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it, is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it, is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
@@ -38,11 +38,11 @@ Would you like to contribute to the libp2p project and don't know how? Well, the
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/libp2p/js-libp2p?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 ](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #libp2p channel on Freenode.
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #libp2p channel on Freenode.
Reading Protobuf DAG nodes just got a serious speed boost as well as a memory reduction. Previously Protobuf DAG nodes (dag-pb nodes for short) carried a multihash property (a [CIDv0](https://docs.ipfs.io/guides/concepts/cid/#version-0)) with them. This used up loads of CPU time calculating the hash for a given node as it was retrieved from storage and with the advent of [CIDv1](https://docs.ipfs.io/guides/concepts/cid/#version-1) there was no guarantee the hashing algorithm and length were correct.
Reading Protobuf DAG nodes just got a serious speed boost as well as a memory reduction. Previously Protobuf DAG nodes (dag-pb nodes for short) carried a multihash property (a [CIDv0](https://docs.ipfs.tech/guides/concepts/cid/#version-0)) with them. This used up loads of CPU time calculating the hash for a given node as it was retrieved from storage and with the advent of [CIDv1](https://docs.ipfs.tech/guides/concepts/cid/#version-1) there was no guarantee the hashing algorithm and length were correct.
So, we removed it! 🦖 ...but that had the unfortunate consequence of making the object API a whole lot less useful when writing data - the DAG nodes you got back were basically the data you put in. Hence the object API was refactored to return CIDs instead of DAG nodes for write operations...and we all lived happily ever after.
@@ -30,13 +30,13 @@ Read all about it in [the pull request notes](https://github.com/ipfs/js-ipfs-un
## 🎄 HAMT support added to MFS
We're putting the whole of npm on IPFS! These days npm is like 5.3 terabytes of data and it's all going in [MFS](https://docs.ipfs.io/guides/concepts/mfs/). This is super rad, but we needed a good sharding strategy because 5TB is a lorra lorra files.
We're putting the whole of npm on IPFS! These days npm is like 5.3 terabytes of data and it's all going in [MFS](https://docs.ipfs.tech/guides/concepts/mfs/). This is super rad, but we needed a good sharding strategy because 5TB is a lorra lorra files.
If you're curious about npm on IPFS, check out the [project here](https://github.com/ipfs-shipyard/npm-on-ipfs).
## 📣 IPNS over pubsub and DHT
Get informed of [IPNS](https://docs.ipfs.io/guides/concepts/ipns/) record updates and read and publish your IPNS records to the DHT. It's all there and it's all awesome. For those of you new to IPNS, let me give you the lowdown - IPNS puts the mutable in immutable 🤣 It's an age old problem, content addressing is rad and all that, but if I change something the hash changes - 👎 boo...but wait, IPNS solves this, you get a permenant address for changeable content - hooray \o/.
Get informed of [IPNS](https://docs.ipfs.tech/guides/concepts/ipns/) record updates and read and publish your IPNS records to the DHT. It's all there and it's all awesome. For those of you new to IPNS, let me give you the lowdown - IPNS puts the mutable in immutable 🤣 It's an age old problem, content addressing is rad and all that, but if I change something the hash changes - 👎 boo...but wait, IPNS solves this, you get a permenant address for changeable content - hooray \o/.
IPNS over pubsub gets the word out quicker to peers that are interested when an IPNS record changes. IPNS over DHT allows peers to find and resolve your IPNS address to some content in the first place! In the next JS IPFS release (0.35) the DHT will be enabled by default and it's going to be epic.
This is all work to smooth out the eventual transition to base32 CIDv1 by default - a move to allow CIDs to be used as valid URL origins. Have a [read of this for more](https://blog.ipfs.io/53-go-ipfs-0-4-18/#cidv1-base32-migration).
This is all work to smooth out the eventual transition to base32 CIDv1 by default - a move to allow CIDs to be used as valid URL origins. Have a [read of this for more](https://blog.ipfs.tech/53-go-ipfs-0-4-18/#cidv1-base32-migration).
To help you craft your artisanal CIDs we've introduced a `--cid-base` option to a bunch of CLI commands (and `?cid-base` option to a bunch of HTTP API endpoints). Check it out:
We got you covered with [WebUI 2.3](https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.2.0) (quic support, responsive navbar, and a language selector), [libp2p 0.24](https://blog.ipfs.io/55-js-libp2p-0-24/) and many other upgrades giving you a faster and smaller JS IPFS.
We got you covered with [WebUI 2.3](https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.2.0) (quic support, responsive navbar, and a language selector), [libp2p 0.24](https://blog.ipfs.tech/55-js-libp2p-0-24/) and many other upgrades giving you a faster and smaller JS IPFS.
# 🏗 API Changes
@@ -306,9 +306,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
@@ -15,7 +15,7 @@ In the week of May 21, 2018, we hosted one more Hack Week in the sunny city of L
The week was great for core developers, contributors and researchers to spend quality time together and work in a fast paced synchronous format towards solving concrete problems. It was incredible to see ideas and solutions flourishing for open problems we've been thinking for a while. The hacker spirit was strong throughout the entire week, culminating in a "Show Me What You Got" presentation to report back on decisions and demos.
The majority of discussions and collaborations were around IPFS, libp2p and applications built on top of them, but we also hosted a [CRDT Research meetup](https://blog.ipfs.io/67-crdt-research-meetup) on the second day - check out the video playlist [here](https://www.youtube.com/playlist?list=PLuhRWgmPaHtTVkko1ZTn-qcGb-n6EqHff).
The majority of discussions and collaborations were around IPFS, libp2p and applications built on top of them, but we also hosted a [CRDT Research meetup](https://blog.ipfs.tech/67-crdt-research-meetup) on the second day - check out the video playlist [here](https://www.youtube.com/playlist?list=PLuhRWgmPaHtTVkko1ZTn-qcGb-n6EqHff).
Didn't have a chance to attend? No worries, we got your back. Many of the report-back presentations were recorded so that you can learn about what got developed, designed and decided. We have compiled them into a [YouTube playlist](https://www.youtube.com/playlist?list=PLuhRWgmPaHtR1hDEAKYXtUguNBkg2qceQ) for your viewing pleasure. You can see them all here:
@@ -246,9 +246,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
@@ -120,7 +120,7 @@ Would you like to contribute to the libp2p project and don't know how? Well, the
- Check the issues with the `help wanted` label in the [libp2p repo](https://github.com/libp2p/js-libp2p/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 ](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
- See CHANGELOGs for each IPLD format for it's respective changes, you can read more about the [`dag-pb` changes in the CHANGELOG](https://github.com/ipld/js-ipld-dag-pb/blob/master/CHANGELOG.md#0160-2019-05-08)
1. Commands `refs` and `refs local` have been added to core, the CLI and the HTTP API
- [Core API docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/REFS.md)
- [HTTP API docs](https://docs.ipfs.io/reference/api/http/#api-v0-refs)
- [CLI API docs](https://docs.ipfs.io/reference/api/cli/#ipfs-refs)
- [HTTP API docs](https://docs.ipfs.tech/reference/api/http/#api-v0-refs)
- [CLI API docs](https://docs.ipfs.tech/reference/api/cli/#ipfs-refs)
1. Support for DOM [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects has been added to [`ipfs.add`](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#add)
# ❤️ Huge thank you to everyone that made this release possible
@@ -175,9 +175,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
@@ -348,9 +348,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [go-ipfs repo](https://github.com/ipfs/go-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [Go Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/team-mgmt/issues/674) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
If you are interested in receiving an update when the next calls are out, you can do this in one of the following ways:
- Watch and Star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content will live ad-eternum.
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you are interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you are interested in IPFS events.
@@ -36,7 +36,7 @@ Your feedback is a large part of identifying these challenges, evaluating how we
These new working groups meet regularly, and you can join them to help us achieve these goals! Check the [IPFS community calendar](https://github.com/ipfs/community/blob/master/README.md#calendar) for times and connection information, or watch the meetings at your leisure on the [IPFS Youtube channel](https://www.youtube.com/channel/UCdjsUXJ3QawK4O5L1kqqsew).
The work these teams are doing will require a number of different skillsets, and could use your help! If you're interested and have bandwidth to help out - jump on a community call or Github issue and share your time and expertise! Looking for fulltime roles to help out on these and other IPFS challenges? Check the IPFS Weekly Newsletter for [IPFS-focused job opportunities](https://blog.ipfs.io/weekly-51/#open-positions-working-on-ipfs)!
The work these teams are doing will require a number of different skillsets, and could use your help! If you're interested and have bandwidth to help out - jump on a community call or Github issue and share your time and expertise! Looking for fulltime roles to help out on these and other IPFS challenges? Check the IPFS Weekly Newsletter for [IPFS-focused job opportunities](https://blog.ipfs.tech/weekly-51/#open-positions-working-on-ipfs)!
@@ -215,9 +215,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
@@ -40,9 +40,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [go-ipfs repo](https://github.com/ipfs/go-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at [discuss.ipfs.io](https://discuss.ipfs.io/) and help users finding their answers.
- Join the discussion at [discuss.ipfs.tech](https://discuss.ipfs.tech/) and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
@@ -70,6 +70,6 @@ More content from IPFS Camp is being salvaged and transcoded.
If you are interested in receiving an update when the next batch of videos are available, you can do this in one of the following ways:
- Watch and Star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content will live, in addition to other other locations (IPFS 😄) shielded from the Global Electromagnetic Fire Disaster of 2027
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you are interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you are interested in IPFS events.
> EXCELLENT NEWS! You can now pubsub with the JS IPFS HTTP API client in the BROWSER!
Due to [boring technical reasons](https://github.com/ipfs/js-ipfs-http-client/issues/518) it’s previously not been possible to support [pubsub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) over the [HTTP API](https://docs.ipfs.io/reference/api/http/) in the browser. Now that the [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) supports cancelation, and has done so for a while, pubsub support has arrived! Hooray \o/
Due to [boring technical reasons](https://github.com/ipfs/js-ipfs-http-client/issues/518) it’s previously not been possible to support [pubsub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) over the [HTTP API](https://docs.ipfs.tech/reference/api/http/) in the browser. Now that the [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) supports cancelation, and has done so for a while, pubsub support has arrived! Hooray \o/
There’s also a brand new example application that you can play with showing how to use pubsub in the browser:
@@ -26,7 +26,7 @@ This core course covers the basics of how IPFS deals with files, including key c
This workshop introduced a few awesome visualization and learning tools that you can try out at home:
- Explore the [**ProtoSchool tutorial on the Mutable File System (MFS)**](https://proto.school/#/mutable-file-system) for coding challenges designed to familiarize you with its API
- Paste a Content Identifier (CID) into the [**CID Inspector**](https://cid.ipfs.io/) to break down its anatomy
- Paste a Content Identifier (CID) into the [**CID Inspector**](https://cid.ipfs.tech/) to break down its anatomy
- Drag a file into the [**DAG Builder**](https://dag.ipfs.io/) and adjust chunk size, DAG layouts, etc. to see how it affects the Merkle DAG
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)!
@@ -79,6 +79,6 @@ The ProtoSchool curriculum is growing, and we're excited to explore all of the f
There's even more great content from IPFS Camp content coming your way, including recordings of keynotes and interviews. If you're interested in receiving an update when the next batch of videos are available, try out one of these strategies:
- Watch and star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content will live.
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you're interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you're interested in IPFS events.
@@ -24,7 +24,7 @@ The newest version of IPFS Desktop, 0.9.2 - yes, we already released two patch v
### Browse the wild...
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!
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.tech/guides/concepts/pinning/) to your IPFS node!
@@ -39,7 +39,7 @@ Long-time IPFS community members [Textile](https://textile.io) brought their cro
</div>
_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.
Hector and the rest of the [IPFS Cluster](https://ipfscluster.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.
@@ -85,6 +85,6 @@ Huge thanks to our SciFi Fair participants for making IPFS Camp so out-of-this-w
There's still more great content from IPFS Camp content coming your way, including recordings of keynotes and interviews. If you're interested in receiving an update when the next batch of videos are available, try out one of these routes:
- Watch and star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content will live.
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you're interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you're interested in IPFS events.
@@ -38,7 +38,7 @@ To close, Juan set us back out through the airlock back toward Earth with his [I
[](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!
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.tech/2019-07-08-ipfs-camp-recap/) highlight a few!
## Community Interviews
@@ -75,6 +75,6 @@ And on top of all that, Steven joined us from Shanghai City to discuss his work
This concludes our series of updates from IPFS Camp recap-ing the amazing presentations, demos, courses, and learnings we had together. We're so grateful to everyone for making this event so vibrant and creative - and are already looking forward to the **next** IPFS Camp. If you want more IPFS updates in the meantime, try these channels:
- Watch and star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content (and follow-ups) live.
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you're interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you're interested in IPFS events.
@@ -50,7 +50,7 @@ Read more about the design at [`libp2p/specs/pubsub/gossipsub`](https://github.c
## 📛 IPNS support for `ipfs resolve`
You can now resolve [IPNS](https://docs.ipfs.io/guides/concepts/ipns/) names via `ipfs resolve`, what's more the recursive option is now on by default.
You can now resolve [IPNS](https://docs.ipfs.tech/guides/concepts/ipns/) names via `ipfs resolve`, what's more the recursive option is now on by default.
```bash
$ jsipfs resolve /ipns/Qmqux
@@ -125,9 +125,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
@@ -132,9 +132,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode and [Matrix](https://matrix.to/#/#ipfs:matrix.org)
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode and [Matrix](https://matrix.to/#/#ipfs:matrix.org)
...but wait, [Peer IDs _ARE_ CIDs](https://github.com/libp2p/specs/blob/master/RFC/0001-text-peerid-cid.md)! I know, weird, but also rad because in theory we should be able to re-encode them as `base32`. Right now though, everything expects a `base58` encoded string (a v0 CID) because they're actually just a multihash.
In this js-ipfs release we've made a small change to allow you to take your Peer ID (a v0 CID), convert it to a base32 encoded v1 CID and use it in an IPNS path like `/ipns/bafybeidta3hkxk3ihxfsk765oswgsjhmvcnkeestyuov6r2t5tyts4xuoe`. You can take advantage of [cid.ipfs.io](https://cid.ipfs.io) (base32 version is provided for your convenience at the very bottom of the page) or do the conversion with the command line tools:
In this js-ipfs release we've made a small change to allow you to take your Peer ID (a v0 CID), convert it to a base32 encoded v1 CID and use it in an IPNS path like `/ipns/bafybeidta3hkxk3ihxfsk765oswgsjhmvcnkeestyuov6r2t5tyts4xuoe`. You can take advantage of [cid.ipfs.tech](https://cid.ipfs.tech) (base32 version is provided for your convenience at the very bottom of the page) or do the conversion with the command line tools:
```sh
jsipfs id | json id | jsipfs cid base32
@@ -223,9 +223,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
**We’re excited to announce [the new IPFS documentation site is live in beta](https://docs.ipfs.io/)!** The doors are open, and just like any housewarming, you’re cordially invited to stop by, have a look around, and let us know what you think.
**We’re excited to announce [the new IPFS documentation site is live in beta](https://docs.ipfs.tech/)!** The doors are open, and just like any housewarming, you’re cordially invited to stop by, have a look around, and let us know what you think.
<a href="https://docs.ipfs.io/" target="_blank"><img src="../assets/076-ipfs-docs-beta-screenshot.png" alt="Screenshot of docs beta"></a>
<a href="https://docs.ipfs.tech/" target="_blank"><img src="../assets/076-ipfs-docs-beta-screenshot.png" alt="Screenshot of docs beta"></a>
@@ -14,7 +14,7 @@ We are very excited to announce the first set of public _collaborative clusters_
_Collaborative clusters_ are an easy way to join and help improving distribution and data availability of specific datasets in the IPFS Network.
Using IPFS Cluster's [latest release (0.12.1)](https://cluster.ipfs.io/news/0.12.0_release/) we have set up the first of those archives:
Using IPFS Cluster's [latest release (0.12.1)](https://ipfscluster.io/news/0.12.0_release/) we have set up the first of those archives:
* Filecoin cluster: which will be used to pin Filecoin parameters and Filecoin objects.
* Spanish books from the Gutenberg Project: a collection of Spanish literature from the [Gutenberg Project](http://www.gutenberg.org/).
@@ -33,10 +33,10 @@ We hope that collaborative clusters will allow the community to participate in t
Collaborative clusters are no different from normal IPFS Clusters, with the exception that they include a list of _trusted peers_ (peers that can modify the cluster pinset).
The process of setting up one of these and letting other peers easily join as followers is documented at [https://cluster.ipfs.io/documentation/collaborative/](https://cluster.ipfs.io/documentation/collaborative/).
The process of setting up one of these and letting other peers easily join as followers is documented at [https://ipfscluster.io/documentation/collaborative/](https://ipfscluster.io/documentation/collaborative/).
## About the IPFS Cluster project
The [IPFS Cluster project](https://cluster.ipfs.io) provides data orchestration across a swarm of IPFS daemons by allocating, replicating and tracking a global pinset distributed among multiple peers.
The [IPFS Cluster project](https://ipfscluster.io) provides data orchestration across a swarm of IPFS daemons by allocating, replicating and tracking a global pinset distributed among multiple peers.
For full documentation on how to setup and operate clusters, see [https://cluster.ipfs.io/documentation](https://cluster.ipfs.io/documentation).
For full documentation on how to setup and operate clusters, see [https://ipfscluster.io/documentation](https://ipfscluster.io/documentation).
@@ -96,9 +96,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [go-ipfs repo](https://github.com/ipfs/go-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at [discuss.ipfs.io](https://discuss.ipfs.io/) and help users finding their answers.
- Join the discussion at [discuss.ipfs.tech](https://discuss.ipfs.tech/) and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
## ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
@@ -18,7 +18,7 @@ On Thursday, February 13, the IPFS Community is hosting the [Distributed Network
## Did we mention we have bounties?
We’ll have bounties for using and improving IPFS, and building IPFS or our community’s libraries and services into your dapps—all managed through the ETHDenver DAO. ETHDenver will announce the bounties on February 10th, so until then take a look at [awesome.ipfs.io](https://awesome.ipfs.io/) to get your mental propellers spinning!
We’ll have bounties for using and improving IPFS, and building IPFS or our community’s libraries and services into your dapps—all managed through the ETHDenver DAO. ETHDenver will announce the bounties on February 10th, so until then take a look at [awesome.ipfs.tech](https://awesome.ipfs.tech/) to get your mental propellers spinning!
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. 🤞
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.tech/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. 🤞
### 5 Notable Wins
1. We held the first [IPFS Camp](https://www.youtube.com/watch?v=cQJXnJDbXv4&feature=youtu.be), a gathering for developers and builders in the wider InterPlanetary community to [learn](https://blog.ipfs.io/2019-09-18-ipfs-camp-course-videos/), [share](https://www.youtube.com/playlist?list=PLuhRWgmPaHtQVNQcBaCKg5kKhfOBv45Jb), and [demo](https://blog.ipfs.io/2019-10-03-ipfs-camp-sci-fi-fair-videos/) their work (see [this recap](https://blog.ipfs.io/2019-07-08-ipfs-camp-recap/) for more)! 🏕
2. We made significant progress on our Package Managers goal (read on for awesome new features like [collaborative clusters](https://blog.ipfs.io/2020-01-09-collaborative-clusters/)!) 🎯
1. We held the first [IPFS Camp](https://www.youtube.com/watch?v=cQJXnJDbXv4&feature=youtu.be), a gathering for developers and builders in the wider InterPlanetary community to [learn](https://blog.ipfs.tech/2019-09-18-ipfs-camp-course-videos/), [share](https://www.youtube.com/playlist?list=PLuhRWgmPaHtQVNQcBaCKg5kKhfOBv45Jb), and [demo](https://blog.ipfs.tech/2019-10-03-ipfs-camp-sci-fi-fair-videos/) their work (see [this recap](https://blog.ipfs.tech/2019-07-08-ipfs-camp-recap/) for more)! 🏕
2. We made significant progress on our Package Managers goal (read on for awesome new features like [collaborative clusters](https://blog.ipfs.tech/2020-01-09-collaborative-clusters/)!) 🎯
3. We developed and launched [TestGround v0.1](https://github.com/ipfs/testground/releases/tag/v0.1.0) in collaboration with the libp2p team, a platform for testing distributed systems and networks at various scales ⚖️
4. We launched [ProtoSchool](https://proto.school/#/), a new portal for interactive tutorials to learn about decentralized web concepts, protocols, and tools, with 23 chapters across 4 continents! 🌏
5. We built a [new IPFS docs site](https://blog.ipfs.io/2020-01-07-ipfs-docs-beta/) with improved search, information architecture, and explainers on InterPlanetary concepts 📖
5. We built a [new IPFS docs site](https://blog.ipfs.tech/2020-01-07-ipfs-docs-beta/) with improved search, information architecture, and explainers on InterPlanetary concepts 📖
## Our 2019 Roadmap
To chart our path for the year, we did a large 2019 Roadmapping effort to write down our [mission](https://github.com/ipfs/roadmap#ipfs-mission-statement), define some of the many [long-term goals for the IPFS Project](https://github.com/ipfs/roadmap#future-goals), and [prioritize](https://github.com/ipfs/roadmap#sorting-function) where to focus our energy first. We had a lot of “planning” debt, so going from 0 to 1 on a project roadmap was a large endeavor. Our process involved each working group generating a roadmap around a shared goal, and then merging important work streams into “epics” for the whole project that highlighted our major objectives. You can see how we did against these objectives in our [2019 Project Roadmap](https://github.com/ipfs/roadmap/blob/master/2019-IPFS-Project-Roadmap.md), or dive more into how we chose those goals in our [2019 Roadmap blog post](https://blog.ipfs.io/78-ipfs-2019-roadmap).
To chart our path for the year, we did a large 2019 Roadmapping effort to write down our [mission](https://github.com/ipfs/roadmap#ipfs-mission-statement), define some of the many [long-term goals for the IPFS Project](https://github.com/ipfs/roadmap#future-goals), and [prioritize](https://github.com/ipfs/roadmap#sorting-function) where to focus our energy first. We had a lot of “planning” debt, so going from 0 to 1 on a project roadmap was a large endeavor. Our process involved each working group generating a roadmap around a shared goal, and then merging important work streams into “epics” for the whole project that highlighted our major objectives. You can see how we did against these objectives in our [2019 Project Roadmap](https://github.com/ipfs/roadmap/blob/master/2019-IPFS-Project-Roadmap.md), or dive more into how we chose those goals in our [2019 Roadmap blog post](https://blog.ipfs.tech/78-ipfs-2019-roadmap).
### Our Focus on Package Managers
@@ -54,7 +54,7 @@ We also formed collaborations with IPFS users to partner on improving IPFS for p


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 sync’d across all mirroring nodes. We’ve 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/)
IPFS Cluster also released _[collaborative clusters](https://blog.ipfs.tech/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 sync’d across all mirroring nodes. We’ve 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/)
### How We Did Against Our Package Managers Goal
@@ -80,7 +80,7 @@ During our IPFS Planning “Spike”, we took stock of our wider ecosystem and p
> Based on our decision-making criteria, we chose **improving the performance and reliability of Content Routing in the IPFS network** as our main priority for the next 6 months (through mid-year 2020).
‘Content routing’ is the process of finding a node hosting the content you’re looking for, such that you can fetch the desired data and quickly load your website, dapp, video, or data. As the IPFS public network scaled this past year (over 30x!), it ran into new problems in our distributed routing algorithms: struggling to find content spread across many unreliable nodes. This was especially painful for [IPNS](https://docs.ipfs.io/guides/concepts/ipns/), which relied on _multiple_ of these slow/unreliable queries to find the latest version of a file. These performance gaps caused IPFS to lag and stall while searching for the needed content, hurting the end user experience and making IPFS feel broken. Searching the network to find desired content (a.k.a., using IPFS as a decentralized CDN) is one of the most common actions for new IPFS users and is required by most ipfs-powered dapp use cases—therefore, it’s the **number 1 pain point** we need to mitigate in order to unlock increased adoption and scalability of the network! Our goal for midyear: **95th percentile content routing speed is less than 5 seconds.**
‘Content routing’ is the process of finding a node hosting the content you’re looking for, such that you can fetch the desired data and quickly load your website, dapp, video, or data. As the IPFS public network scaled this past year (over 30x!), it ran into new problems in our distributed routing algorithms: struggling to find content spread across many unreliable nodes. This was especially painful for [IPNS](https://docs.ipfs.tech/guides/concepts/ipns/), which relied on _multiple_ of these slow/unreliable queries to find the latest version of a file. These performance gaps caused IPFS to lag and stall while searching for the needed content, hurting the end user experience and making IPFS feel broken. Searching the network to find desired content (a.k.a., using IPFS as a decentralized CDN) is one of the most common actions for new IPFS users and is required by most ipfs-powered dapp use cases—therefore, it’s the **number 1 pain point** we need to mitigate in order to unlock increased adoption and scalability of the network! Our goal for midyear: **95th percentile content routing speed is less than 5 seconds.**
To achieve this goal, we’ve 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 we’ve 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):
@@ -27,7 +27,7 @@ To speed this up even more, we added some useful new capabilities to the Bitswap
IPFS breaks up files into chunks called Blocks, identified by a Content IDentifier ([CID](https://github.com/multiformats/cid)). When nodes running the [Bitswap](https://github.com/ipfs/go-bitswap) protocol want to fetch a file, they send out "want lists" to other peers. A "want list" is a list of CIDs for blocks a peer wants to receive. Each node remembers which blocks its peers want, and each time the node receives a block it checks if any of its peers want the block and sends it to them.
To find out which peers have the blocks that make up a file, a Bitswap node first sends a want for the root block CID to all the peers it is connected to. If the peers don’t have the block, the node queries the Distributed Hash Table ([DHT](https://docs.ipfs.io/guides/concepts/dht/)) to ask who has the root block. Any peers that respond with the root block are added to a session. From now on Bitswap only sends wants to peers in the session, so as not to flood the network with requests.
To find out which peers have the blocks that make up a file, a Bitswap node first sends a want for the root block CID to all the peers it is connected to. If the peers don’t have the block, the node queries the Distributed Hash Table ([DHT](https://docs.ipfs.tech/guides/concepts/dht/)) to ask who has the root block. Any peers that respond with the root block are added to a session. From now on Bitswap only sends wants to peers in the session, so as not to flood the network with requests.
The node sends out a want for each CID to several peers in the session in parallel, because not all peers will have all blocks. If the node starts receiving a lot of duplicate blocks, it sends a want for each CID to fewer peers. If the node gets timeouts waiting for blocks, it sends a want for each CID to more peers. In this way the node tries to maintain a high download speed without too many duplicate blocks.
@@ -35,7 +35,7 @@ It's been a long and emotional voyage but this refactor brings a plethora of inc
Using `async`/`await` in JavaScript is gaining a _lot_ of traction in the ecosystem and is rapidly becoming the de facto way of writing idiomatic JS. We want js-ipfs to **move with the times and continue to be attractive to contributors** by using modern JS features, techniques and practices. The big idea with these changes is for the code to be easier to contribute to, easier to understand, easier to maintain, and be faster and smaller than ever.
This change is so big, and so significant, we wrote a whole [blog post](https://blog.ipfs.io/2020-02-01-async-await-refactor/) about it to explain the motivations behind the changes...in ~~excruciating~~ delightful depth 🤣!
This change is so big, and so significant, we wrote a whole [blog post](https://blog.ipfs.tech/2020-02-01-async-await-refactor/) about it to explain the motivations behind the changes...in ~~excruciating~~ delightful depth 🤣!
We've also compiled some stats on this refactor for your viewing pleasure:
@@ -199,7 +199,7 @@ There are significant and breaking core API changes in this release. Please see
## Other changes
- libp2p has been upgraded to 0.27, which also includes breaking changes to it's core API. Please see the release announcement post for more info:
- The protocol _name_ for peer IDs in multiaddrs has changed from 'ipfs' to 'p2p'. There's no changes to data on the wire but this change is seen when multiaddrs are converted to strings.
# ❤️ Huge thank you to everyone that made this release possible
@@ -317,9 +317,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
@@ -24,7 +24,7 @@ We also take a look at the evolution of the [CID specification](https://github.c
### CID Inspector
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.
Did you know you can paste any IPFS CID into the [**CID Inspector**](https://cid.ipfs.tech/) 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.

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.
As we hinted in our previous post about [IPFS in web browsers](https://blog.ipfs.tech/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).
@@ -55,7 +55,7 @@ There’s a lot more work to do in maturing [naming in IPFS and distributed web
You can register _decentralized domain names_ that map to IPFS addresses using services like [Unstoppable Domains](https://unstoppabledomains.com/) or the [Ethereum Name System (ENS)](https://medium.com/the-ethereum-name-service/ethdns-9d56298fa38a?source=rss----63df5ce4636f---4).
You can also register and use any _DNS_ domain name, and map it to IPFS addresses using services like [Terminal.co](https://terminal.co) or tools like [DNSLink](https://docs.ipfs.io/guides/concepts/dnslink/).
You can also register and use any _DNS_ domain name, and map it to IPFS addresses using services like [Terminal.co](https://terminal.co) or tools like [DNSLink](https://docs.ipfs.tech/guides/concepts/dnslink/).
## Implementation
@@ -65,7 +65,7 @@ IPFS features in this implementation:
* Implements the [IPFS Web Browser Addressing specification](https://github.com/ipfs/in-web-browsers/blob/master/ADDRESSING.md), both `ipfs://` and `ipns://`
* Configurable HTTP gateway, with options to use gateways like `dweb.link`, Infura, or a local node
* Supports [subdomain gateways](https://docs.ipfs.io/how-to/address-ipfs-on-web/#subdomain-gateway) for secure web apps
* Supports [subdomain gateways](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#subdomain-gateway) for secure web apps
* Supports mixed protocol use, such as loading images over IPFS in an HTTP web page
@@ -191,13 +191,13 @@ Would you like to contribute to the IPFS project and don’t know how? Well, the
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
@@ -14,7 +14,7 @@ If you’ve spent time in the Web3 ecosystem, you’ve probably come across work
### Motivation
As with every growing ecosystem, there’s a lot to be done to make IPFS successful. Last June, we gathered with the rest of the community at [IPFS Camp](https://blog.ipfs.io/2019-07-08-ipfs-camp-recap/), where the variety and vitality of the projects building in this space was exemplified in the SciFi fair, showcasing projects from Brave, Metamask, Textile, Berty, and more. Spending time with this thriving ecosystem (while immensely inspiring), also clarified the demand for more IPFS tooling: the functionality, features, and integrations outside the core IPFS protocol to help accelerate development by many projects across the community.
As with every growing ecosystem, there’s a lot to be done to make IPFS successful. Last June, we gathered with the rest of the community at [IPFS Camp](https://blog.ipfs.tech/2019-07-08-ipfs-camp-recap/), where the variety and vitality of the projects building in this space was exemplified in the SciFi fair, showcasing projects from Brave, Metamask, Textile, Berty, and more. Spending time with this thriving ecosystem (while immensely inspiring), also clarified the demand for more IPFS tooling: the functionality, features, and integrations outside the core IPFS protocol to help accelerate development by many projects across the community.
The newly updated IPFS Grant Platform aims to support exactly this need—helping the community coordinate and fund production of high-leverage tooling to grow IPFS adoption and usability. We call it the IPFS Grant _Platform_, because it’s intended to bring together community members at every stage of the grant-making and grant-writing process. Anyone can propose new RFPs or bounties for features and enhancements they’d like to see, and the process of refining and selecting grant recipients happens transparently in the open. Multiple organizations can even fund grants together!
@@ -24,7 +24,7 @@ We soft launched this updated Grants Platform in Q1, with a [quarterly focus](ht
### Launch and Q2 Focus
This batch has already borne fruit, including [half a dozen completed bounties](https://github.com/ipfs/devgrants/projects/1), the beginnings of a [Rust IPFS implementation](https://github.com/ipfs-rust/rust-ipfs), [new user research into IPFS on mobile](https://blog.ipfs.io/2020-04-10-ipfs-mobile-design-research/), and more! Therefore, we’re excited to **officially launch the IPFS Grants Platform!** Hop over to the [repo](https://github.com/ipfs/devgrants) to learn more. We’ll be following up soon with an IPFS Grants Guide here on the blog, including a deep dive into the different grant types and how to participate.
This batch has already borne fruit, including [half a dozen completed bounties](https://github.com/ipfs/devgrants/projects/1), the beginnings of a [Rust IPFS implementation](https://github.com/ipfs-rust/rust-ipfs), [new user research into IPFS on mobile](https://blog.ipfs.tech/2020-04-10-ipfs-mobile-design-research/), and more! Therefore, we’re excited to **officially launch the IPFS Grants Platform!** Hop over to the [repo](https://github.com/ipfs/devgrants) to learn more. We’ll be following up soon with an IPFS Grants Guide here on the blog, including a deep dive into the different grant types and how to participate.
Unfortunately, spinning up this Grants Platform also happened to coincide with the spread of the worst pandemic this century. Therefore, we’re making the Q2 [Quarterly Focus](https://github.com/ipfs/devgrants/blob/master/FOCUS.md) **COVID-19 relief** to help the many projects and tools working to contain the spread and impact of this disease. This means proposals like making COVID-19 related datasets [more durable and available](https://github.com/ipfs/ipfs-cluster/issues/1021), enabling local community support networks, empowering remote work during quarantine, and so on, will be given first consideration.
For IPFS to succeed, it needs to be where people will use it, and for the vast majority around the world that is on their smartphones. In the [introductory post](https://blog.ipfs.io/2020-04-10-ipfs-mobile-design-research/), we laid out the intent of this project - to provide a foundation for successful IPFS apps on mobile by understanding how people are building, using and thinking about P2P and IPFS on mobile today, and then publishing tools to guide the next wave of application builders.
For IPFS to succeed, it needs to be where people will use it, and for the vast majority around the world that is on their smartphones. In the [introductory post](https://blog.ipfs.tech/2020-04-10-ipfs-mobile-design-research/), we laid out the intent of this project - to provide a foundation for successful IPFS apps on mobile by understanding how people are building, using and thinking about P2P and IPFS on mobile today, and then publishing tools to guide the next wave of application builders.
In this first phase of the work, we carried out primary research and analysis consisting of qualitative interviews, and surveys of technology and interaction methods. We’re now ready to publish the results of that research!
@@ -27,9 +27,9 @@ The distributed web is changing that. IPFS rearchitects the web to work peer to
The IPFS Public Network has experienced substantial growth (scaling 30x in 2019!), bringing new opportunities for IPFS users and the wider InterPlanetary ecosystem. Major deployments and applications that require fast and reliable connectivity have started building on and supporting IPFS:
- **Opera & Brave:** [Opera](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/) became the first major web browser to offer default IPFS support on Android, shortly after [Brave](https://blog.ipfs.io/2019-10-08-ipfs-browsers-update/) started directly embedding the IPFS Companion extension (complete with a built-in js-ipfs node). This means millions of people around the world now have access to the decentralized web built directly into their browsers.
- **Opera & Brave:** [Opera](https://blog.ipfs.tech/2020-03-30-ipfs-in-opera-for-android/) became the first major web browser to offer default IPFS support on Android, shortly after [Brave](https://blog.ipfs.tech/2019-10-08-ipfs-browsers-update/) started directly embedding the IPFS Companion extension (complete with a built-in js-ipfs node). This means millions of people around the world now have access to the decentralized web built directly into their browsers.
- **Microsoft ION:** [Microsoft has turned to IPFS](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/toward-scalable-decentralized-identifier-systems/ba-p/560168) as the content addressed storage layer to power its take on a decentralized identity system.
- **Netflix:** [We began collaborating](https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/) on ways to incorporate peer-to-peer services into Netflix’s developer tooling to speed up container image distribution in their build pipeline.
- **Netflix:** [We began collaborating](https://blog.ipfs.tech/2020-02-14-improved-bitswap-for-container-distribution/) on ways to incorporate peer-to-peer services into Netflix’s developer tooling to speed up container image distribution in their build pipeline.
- **Cloudflare:** Cloudflare runs a [distributed web gateway](https://www.cloudflare.com/distributed-web-gateway/) to serve content hosted on IPFS easily, quickly, and securely.
We worked with these organizations, as well as many active IPFS users and our broader community, to source feedback and identify priorities for this release and the remainder of 2020. With their help, we zeroed in on two major pain points: performance and reliability.
@@ -42,10 +42,10 @@ Here are a few of the improvements made in IPFS 0.5.0:

- **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. We’ve 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!
- **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.tech/concepts/dht/). More efficient routing and providing—already 2-3x faster—lowers bandwidth usage and background traffic. We’ve 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.tech/concepts/bitswap/), to make sharing data between many nodes much faster. [Read more](https://blog.ipfs.tech/2020-02-14-improved-bitswap-for-container-distribution/) about how we worked with Netflix to benchmark and stress-test these improvements!
- **Faster file adding:** It’s now up to 2x faster to add files to the IPFS network using the Badger datastore on Linux and MacOS. Huzzah for async writes! We’ve also configured Badger to use less memory.
- **Faster and more reliable mutable links:** The Inter-Planetary Name System ([IPNS](https://docs.ipfs.io/concepts/ipns/)), our system for creating mutable links for content addresses, now provides faster naming lookups and has a new experimental pubsub transport to speed up record distribution. Providing an IPNS record is now _30-40x_ faster in 1K node network simulations!
- **Faster and more reliable mutable links:** The Inter-Planetary Name System ([IPNS](https://docs.ipfs.tech/concepts/ipns/)), our system for creating mutable links for content addresses, now provides faster naming lookups and has a new experimental pubsub transport to speed up record distribution. Providing an IPNS record is now _30-40x_ faster in 1K node network simulations!
To ensure the reliability of all these large-scale improvements, we created [Testground](http://testground.ipfs.team/), a new testing tool for peer-to-peer networks at scale. This allowed us to validate and benchmark each enhancement across many network configurations with 1K+ node simulations—increasing development velocity and rigor.
@@ -75,7 +75,7 @@ With our new testing and release process, IPFS 0.5.0 has already been put to use
**_Brendan O’Brien, Qri:_** “Our engineering time is one of our most valuable resources. We’re now seeing a much more mature version of IPFS, which means we're able to spend more time on our own code vs our dependencies. It took less than a day to upgrade to IPFS 0.5.0, allowing us to commit more of our engineering time to building and fixing our own things.”
If you’re running IPFS, we highly encourage you to upgrade ASAP to take advantage of all these improvements! Check out our [release notes](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/) and [upgrade how-to](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/update-procedure) to get started today!
If you’re running IPFS, we highly encourage you to upgrade ASAP to take advantage of all these improvements! Check out our [release notes](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/) and [upgrade how-to](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/update-procedure) to get started today!
## Thank you, thank you, and thank you.
@@ -100,7 +100,7 @@ Also, a huge thank you to [everyone who contributed](https://github.com/ipfs/go-
We’d 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.
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!
In the meantime, get started by [installing go-ipfs](https://dist.ipfs.tech/#go-ipfs) or [upgrading to go-ipfs 0.5](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/update-procedure) to see the improvements yourself!
And, of course, there are many other ways to get involved with IPFS based on your skill set, interest, and availability. Please check out [our contribution page](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md) on GitHub for guidance and next steps.
Since its founding in 2014, the IPFS project has been stewarded by the [core IPFS working groups](https://github.com/ipfs/team-mgmt/blob/master/TEAMS_ROLES_STRUCTURES.md#active-teams), including developers, designers, researchers and project managers that work very hard towards its [success](https://blog.ipfs.io/weekly-84/).
Since its founding in 2014, the IPFS project has been stewarded by the [core IPFS working groups](https://github.com/ipfs/team-mgmt/blob/master/TEAMS_ROLES_STRUCTURES.md#active-teams), including developers, designers, researchers and project managers that work very hard towards its [success](https://blog.ipfs.tech/weekly-84/).
However, this success would be impossible without the participation of the open source community that has grown around IPFS - with participants from individuals, to nascent community-owned tools, to large organizations. We are lucky to have this thriving and influential community participating in our journey towards decentralization during these years. With their help, we’ve grown IPFS to empower [hundreds of tools, applications and projects](https://awesome.ipfs.io/).
However, this success would be impossible without the participation of the open source community that has grown around IPFS - with participants from individuals, to nascent community-owned tools, to large organizations. We are lucky to have this thriving and influential community participating in our journey towards decentralization during these years. With their help, we’ve grown IPFS to empower [hundreds of tools, applications and projects](https://awesome.ipfs.tech/).
A thriving, growing, and participatory open source community is key to the success of the IPFS project, and continues to be a focus for the core IPFS working groups. We want every user and developer interested in building IPFS applications — or willing to join forces to fix and improve the codebase — to feel welcomed, informed, and empowered by the community. Therefore, as part of our [secondary 2020 focus on contributor velocity and support](https://blog.ipfs.io/2020-02-10-our-focus-for-2020/#increasing-contributor-velocity-supporting-adoption) we will:
A thriving, growing, and participatory open source community is key to the success of the IPFS project, and continues to be a focus for the core IPFS working groups. We want every user and developer interested in building IPFS applications — or willing to join forces to fix and improve the codebase — to feel welcomed, informed, and empowered by the community. Therefore, as part of our [secondary 2020 focus on contributor velocity and support](https://blog.ipfs.tech/2020-02-10-our-focus-for-2020/#increasing-contributor-velocity-supporting-adoption) we will:
- Improve how users and developers get help, reducing response times and improving access to existing information and documentation.
- Reduce the number of pull requests and issue reports that stay in limbo by giving consistent feedback on status, prioritization and team capacity.
@@ -22,11 +22,11 @@ A thriving, growing, and participatory open source community is key to the succe
After discussion with active IPFS contributors and research into other OSS community best practices, we’ve identified a few changes to help improve the IPFS contributor experience:
- Contributors need a clear and explicit contribution process to the more than 100 active repositories in the IPFS organization. Any new contribution should have clarity on who is going to review the submission, what priority it has, and what the next steps are. To meet this need, we’ll be drafting a new process in the [official IPFS forums](http://discuss.ipfs.io/) so that it can be iterated on by the community.
- Contributors need a clear and explicit contribution process to the more than 100 active repositories in the IPFS organization. Any new contribution should have clarity on who is going to review the submission, what priority it has, and what the next steps are. To meet this need, we’ll be drafting a new process in the [official IPFS forums](http://discuss.ipfs.tech/) so that it can be iterated on by the community.
- The new IPFS Github organization [labelling taxonomy](https://github.com/ipfs/community/blob/master/ISSUE_LABELS.md) (recently rolled out to all repositories) aims to improve triaging of discussions and requests to clearly reflect status and priority. This comes with an additional effort to consolidate and clean up outdated issues and inactive repositories. As a result, many inactive repos have been moved to the [ipfs-inactive Github organization](https://github.com/ipfs-inactive) to clearly differentiate code that is actively maintained from code that is dormant or deprecated.
- To help funnel users and devs where the community can better support them, our [IPFS discussion forums](https://discuss.ipfs.io/) will be more prominently displayed (in docs, READMEs and issue templates) as the default venue for support (along with pointers to [ipfs.io/help](https://ipfs.io/help)). Some discussion-only and meta-topic repositories are also in the process of migrating their conversations to the forums, where they can reach a wider audience and be more easily searchable and discoverable by other users.
- To help funnel users and devs where the community can better support them, our [IPFS discussion forums](https://discuss.ipfs.tech/) will be more prominently displayed (in docs, READMEs and issue templates) as the default venue for support (along with pointers to [ipfs.io/help](https://ipfs.io/help)). Some discussion-only and meta-topic repositories are also in the process of migrating their conversations to the forums, where they can reach a wider audience and be more easily searchable and discoverable by other users.
- 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)
- A [major review of the documentation](https://docs.ipfs.tech/) site is already underway to provide better developer documentation for our major implementations and products. [Watch this space!](https://github.com/ipfs/docs/milestones)

@@ -35,7 +35,7 @@ At the same time, there are some things that are NOT changing:
- Old issues will not be closed or locked because they are old, or stale, or very low priority. Some parts of the IPFS project have a large backlog and it is important that the information is not lost or dismissed, but can be found by others interested in the topic.
- The core working groups will still dedicate a large portion of time to help users, answer questions, and review and merge contributions. However, there will be an extra focus on keeping discussions on point and limiting information explosion.
We want to empower the developer community to build amazing things with IPFS, and these contributor experience changes aim to make it faster and easier to start participating in the IPFS Community (whether filing issues or making PRs). However, improving that experience requires feedback and iteration as we refine our next steps as a community. For this, [a new discussion thread](https://discuss.ipfs.io/t/ideas-to-improve-the-ipfs-developer-experience/7750) is available in the forum, where anyone can post new proposals or give suggestions/feedback on recent changes.
We want to empower the developer community to build amazing things with IPFS, and these contributor experience changes aim to make it faster and easier to start participating in the IPFS Community (whether filing issues or making PRs). However, improving that experience requires feedback and iteration as we refine our next steps as a community. For this, [a new discussion thread](https://discuss.ipfs.tech/t/ideas-to-improve-the-ipfs-developer-experience/7750) is available in the forum, where anyone can post new proposals or give suggestions/feedback on recent changes.
We hope these measures help everyone build a happy and growing IPFS developer community!
Testing peer-to-peer (p2p) systems is hard. Doing so reliably and reproducibly is even harder. Today, **we’re 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, we’ll walk you through what Testground is, how to get started, what’s coming next, and the backstory behind Testground itself.
If you followed the [IPFS v0.5.0 release announcements](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/), you will have heard about **Testground**. It was a vital piece of our engineering endeavour and unlocked major improvements in quality, velocity, and reliability. Without [Testground](https://docs.testground.ai/), we would’ve been unable to measure, iterate on, and validate the massive DHT and Bitswap improvements in v0.5.0 at scale.
If you followed the [IPFS v0.5.0 release announcements](https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/), you will have heard about **Testground**. It was a vital piece of our engineering endeavour and unlocked major improvements in quality, velocity, and reliability. Without [Testground](https://docs.testground.ai/), we would’ve been unable to measure, iterate on, and validate the massive DHT and Bitswap improvements in v0.5.0 at scale.
Testground was also indispensable in evaluating our latest [libp2p gossipsub 1.1 security extensions](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md). It allowed us to simulate a range of attacks, over 10k instance clusters, packed with sybils and honest nodes, hammering the network with pubsub messages, recording every single event for later analysis and comparison (expect a report soon).
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.
The first-ever [IPFS Pinning Summit](https://ipfspinningsummit.com/) brought together [IPFS pinning services](https://docs.ipfs.tech/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.
Day 1 focused on the accelerating growth of the IPFS ecosystem - especially the adoption and improvement of IPFS tooling and support for verticals like Web3 applications, DevOps pipelines, and Large Data on IPFS. The day also included presentations from major IPFS pinning services like [Infura](https://infura.io/) and [Pinata](https://pinata.cloud/), tools smoothing the IPFS upgrade UX like [Fleek](https://fleek.co/) and [UnstoppableDomains](https://unstoppabledomains.com/), and applications building on top of IPFS with strong use cases for IPFS infrastructure and tooling like [Ceramic](https://www.ceramic.network/), [Ucam](https://ucam.iotex.io/), and [Filecoin](https://filecoin.io/).
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.