mirror of
https://github.com/ipfs/ipfs-blog.git
synced 2026-08-10 19:02:48 +02:00
feat: improve search functionality
This commit is contained in:
committed by
João Peixoto
parent
659039c9de
commit
843ad1ebc8
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
@@ -24,11 +24,13 @@
|
||||
:class-list="['w-32', 'fill-current']"
|
||||
/>
|
||||
</a>
|
||||
<ul class="nav__link-list hidden md:flex">
|
||||
<ul
|
||||
class="nav__link-list hidden md:flex justify-between w-full max-w-xl ml-8"
|
||||
>
|
||||
<li
|
||||
v-for="page in $themeLocaleConfig.headerLinks"
|
||||
:key="page.text"
|
||||
class="nav__link-item ml-16 first:m-0 font-semibold"
|
||||
class="nav__link-item first:m-0 font-semibold"
|
||||
>
|
||||
<Link class="nav__link" :item="page" />
|
||||
</li>
|
||||
@@ -46,7 +48,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { throttle } from 'lodash'
|
||||
import throttle from 'lodash/throttle'
|
||||
import { mapState } from 'vuex'
|
||||
import SVGIcon from '@theme/components/base/SVGIcon'
|
||||
import Link from '@theme/components/base/Link'
|
||||
@@ -92,7 +94,7 @@ export default {
|
||||
methods: {
|
||||
handleScroll() {
|
||||
// responsive force: lower on mobile higher on desktop
|
||||
const SCROLL_FORCE = ['sm', 'md'].includes(this.$mq) ? 100 : 250
|
||||
const SCROLL_FORCE = ['sm', 'md'].includes(this.$mq) ? 20 : 40
|
||||
|
||||
const currentScrollPosition =
|
||||
window.pageYOffset || document.documentElement.scrollTop
|
||||
@@ -105,7 +107,7 @@ export default {
|
||||
// true if scrolling up
|
||||
this.showNav = currentScrollPosition < this.lastScrollPosition
|
||||
|
||||
const isOffset = currentScrollPosition > this.navHeight
|
||||
const isOffset = currentScrollPosition > this.navHeight / 2
|
||||
|
||||
const isScrollThresholdMet =
|
||||
Math.abs(currentScrollPosition - this.lastScrollPosition) > SCROLL_FORCE
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<SVGIcon
|
||||
class="w-6 h-6 opacity-50 hover:opacity-100 fill-current text-blueGreen transition transition-opacity duration-300 ease-in-out"
|
||||
class="inline w-6 h-6 opacity-50 hover:opacity-100 fill-current text-blueGreen transition transition-opacity duration-300 ease-in-out"
|
||||
:name="link.icon"
|
||||
:title="link.text"
|
||||
/>
|
||||
@@ -20,7 +20,7 @@
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<SVGIcon
|
||||
class="w-6 h-6 color-green fill-current text-blueGreen opacity-50 hover:opacity-100 transition transition-opacity duration-300 ease-in-out"
|
||||
class="inline w-6 h-6 color-green fill-current text-blueGreen opacity-50 hover:opacity-100 transition transition-opacity duration-300 ease-in-out"
|
||||
name="rss"
|
||||
title="rss"
|
||||
/>
|
||||
|
||||
@@ -71,16 +71,22 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="postcss" scoped>
|
||||
.v-lazy-image[src=''] {
|
||||
@apply text-transparent;
|
||||
visibility: hidden;
|
||||
@keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.v-lazy-image {
|
||||
@apply opacity-0 transition-opacity duration-700;
|
||||
@apply opacity-0;
|
||||
}
|
||||
|
||||
.v-lazy-image[src='/card-placeholder.png'],
|
||||
.v-lazy-image-loaded {
|
||||
@apply opacity-100;
|
||||
animation: fade-in 0.7s ease-in-out forwards;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
@leave="leave"
|
||||
@after-leave="afterLeave"
|
||||
>
|
||||
<main :key="withKey">
|
||||
<main :key="withKey" class="flex flex-col flex-grow">
|
||||
<slot></slot>
|
||||
</main>
|
||||
</transition>
|
||||
|
||||
@@ -6,33 +6,52 @@
|
||||
resolvedActiveCategory !== 'all types' ||
|
||||
activeAuthor
|
||||
"
|
||||
class="border-2 border-plBlack border-opacity-10 flex items-center rounded px-1 py-2"
|
||||
class="border border-plBlack border-opacity-10 flex justify-between items-start rounded p-2"
|
||||
>
|
||||
<span class="p-1">
|
||||
Displaying
|
||||
<strong
|
||||
>{{ numberOfPosts }} result{{ numberOfPosts !== 1 ? 's' : '' }}</strong
|
||||
>
|
||||
(newest first) of {{ resolvedActiveCategory }}
|
||||
<span v-if="activeAuthor"> by {{ activeAuthor }} </span>
|
||||
<span v-if="searchedText.length"> for {{ resolvedSearchedText }} </span>
|
||||
<span v-if="activeTags.length"
|
||||
>with tag{{ activeTags.length > 1 ? 's' : '' }}:</span
|
||||
>
|
||||
</span>
|
||||
<ul class="tags flex items-center" itemprop="keywords">
|
||||
<button
|
||||
v-for="tag in activeTags"
|
||||
:key="tag"
|
||||
class="multiselect__tag active-tag"
|
||||
@click="tagClick(tag)"
|
||||
>
|
||||
<span>#{{ tag }}</span
|
||||
><i class="multiselect__tag-icon"></i>
|
||||
</button>
|
||||
</ul>
|
||||
<div class="flex flex-col">
|
||||
<div class="flex flex-wrap">
|
||||
<span class="p-2 pl-1">
|
||||
<strong v-if="numberOfPosts === 0"> No results were found </strong>
|
||||
<span v-if="numberOfPosts > 0">
|
||||
Displaying
|
||||
<strong
|
||||
>{{ numberOfPosts }} result{{
|
||||
numberOfPosts !== 1 ? 's' : ''
|
||||
}}</strong
|
||||
>
|
||||
(newest first)
|
||||
</span>
|
||||
of {{ resolvedActiveCategory }}
|
||||
<span v-if="activeAuthor"> by {{ activeAuthor }} </span>
|
||||
<span v-if="searchedText.length">
|
||||
for {{ resolvedSearchedText }}
|
||||
</span>
|
||||
<span v-if="activeTags.length"
|
||||
>with tag{{ activeTags.length > 1 ? 's' : '' }}:</span
|
||||
>
|
||||
</span>
|
||||
<div class="tags flex flex-wrap items-center -mb-2" itemprop="keywords">
|
||||
<button
|
||||
v-for="tag in activeTags"
|
||||
:key="tag"
|
||||
class="multiselect__tag active-tag text-sm"
|
||||
@click="tagClick(tag)"
|
||||
>
|
||||
<span>#{{ tag }}</span
|
||||
><i class="multiselect__tag-icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="numberOfPosts === 0" class="flex mt-2">
|
||||
Try removing some your search parameters, or
|
||||
<button class="text-blueGreen" @click="handleClear()">
|
||||
return to the blog & news index
|
||||
</button>
|
||||
.
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
class="p-1 ml-auto opacity-50 hover:opacity-100 text-blueGreen transition transition-opacity duration-300 ease-in-out cursor-pointer"
|
||||
class="p-1 l-4 opacity-50 hover:opacity-100 text-blueGreen transition transition-opacity duration-300 ease-in-out cursor-pointer"
|
||||
@click="handleClear()"
|
||||
>
|
||||
✕
|
||||
@@ -80,6 +99,6 @@ export default {
|
||||
|
||||
<style scoped>
|
||||
.active-tag {
|
||||
margin-bottom: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div
|
||||
class="group bg-gray-pale rounded overflow-hidden flex flex-col transform hover:scale-105 duration-300 ease-in-out p-2"
|
||||
class="group bg-gray-pale rounded overflow-hidden flex flex-col transform hover:scale-105 duration-300 ease-in-out"
|
||||
itemprop="mainEntityOfPage"
|
||||
>
|
||||
<article
|
||||
@@ -16,9 +16,10 @@
|
||||
<div class="cover embed-responsive embed-responsive-og">
|
||||
<LazyImage
|
||||
class="h-full embed-responsive-item"
|
||||
img-class="h-full"
|
||||
img-class="h-full object-cover"
|
||||
itemprop="image"
|
||||
:alt="title"
|
||||
src-placeholder="/card-placeholder.png"
|
||||
:src="
|
||||
frontmatter.card_image
|
||||
? frontmatter.card_image
|
||||
@@ -30,7 +31,7 @@
|
||||
/>
|
||||
</div>
|
||||
</UnstyledLink>
|
||||
<div class="pt-1 pb-4 px-2 flex flex-grow flex-col">
|
||||
<div class="p-4 flex flex-grow flex-col">
|
||||
<UnstyledLink :to="path" :item="{ target: '_blank' }">
|
||||
<h1 class="type-h5 font-bold text-primary hover:underline clamp-3">
|
||||
{{ title }}
|
||||
@@ -79,13 +80,6 @@ export default {
|
||||
frontmatter: {
|
||||
type: Object,
|
||||
default: () => ({}),
|
||||
validator: function (frontmatter) {
|
||||
if (frontmatter.description && frontmatter.description.length > 200) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
},
|
||||
},
|
||||
path: {
|
||||
type: String,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div class="mb-10">
|
||||
<h2 class="text-xl mb-2 flex flex-wrap">
|
||||
<h2 class="mb-2">
|
||||
Event organizer, content creator, or journalist?
|
||||
<a
|
||||
class="text-blueGreen hover:underline mx-1"
|
||||
class="text-blueGreen hover:underline"
|
||||
href="https://protocol.ai/join"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
@@ -11,28 +11,29 @@
|
||||
>
|
||||
an item or view the
|
||||
<a
|
||||
class="text-blueGreen hover:underline ml-1"
|
||||
class="text-blueGreen hover:underline"
|
||||
href="https://ipfs.io/media/"
|
||||
rel="noopener noreferrer"
|
||||
>IPFS press kit.</a
|
||||
>
|
||||
</h2>
|
||||
<div class="text-xl flex flex-wrap md:flex">
|
||||
Prefer your news a different way? Try our
|
||||
<div>
|
||||
{{ `Prefer your news a different way? Try our, ` }}
|
||||
<a
|
||||
class="text-blueGreen hover:underline ml-1"
|
||||
class="text-blueGreen hover:underline"
|
||||
href="#newsletter-form"
|
||||
@click="blockLazyLoad()"
|
||||
>weekly newsletter</a
|
||||
>,
|
||||
>{{ `, ` }}
|
||||
<a
|
||||
class="text-blueGreen hover:underline ml-1"
|
||||
class="text-blueGreen hover:underline"
|
||||
href="/index.xml"
|
||||
rel="noopener noreferrer"
|
||||
>RSS</a
|
||||
>, or social media.
|
||||
<div class="flex ml-2 items-center">
|
||||
<RSSSubscription class="flex justify-end" />
|
||||
>{{ `, ` }}
|
||||
<span class="mr-1">or social media.</span>
|
||||
<div class="inline-flex">
|
||||
<RSSSubscription class="flex" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
{{ resolvedDate }}
|
||||
</time>
|
||||
</div>
|
||||
<div class="tags mt-2 mb-1 flex flex-wrap" itemprop="keywords">
|
||||
<div class="tags mt-2 flex flex-wrap" itemprop="keywords">
|
||||
<button
|
||||
v-if="category"
|
||||
class="p-1 mr-1 bg-blueGreen text-white font-semibold hover:underline rounded cursor-pointer mt-1"
|
||||
|
||||
@@ -3,12 +3,11 @@
|
||||
v-if="link"
|
||||
:to="{ path: $localePath, query: { tags: tag } }"
|
||||
:class="computedClass"
|
||||
@click.native="handleTagClick"
|
||||
>
|
||||
#{{ tag }}
|
||||
</router-link>
|
||||
<button v-else :class="computedClass" @click="handleTagClick">
|
||||
#{{ tag }}
|
||||
</button>
|
||||
<button v-else :class="computedClass" @click="addNewTag">#{{ tag }}</button>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -50,6 +49,9 @@ export default {
|
||||
methods: {
|
||||
handleTagClick() {
|
||||
this.$store.commit('appState/setActiveTags', [this.tag])
|
||||
},
|
||||
addNewTag() {
|
||||
this.$store.commit('appState/addNewTag', [this.tag])
|
||||
this.callback()
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div
|
||||
class="group bg-aquaMuted bg-opacity-50 rounded overflow-hidden flex flex-col transform hover:scale-105 duration-300 ease-in-out p-2"
|
||||
class="group bg-blueGreen bg-opacity-25 rounded overflow-hidden flex flex-col transform hover:scale-105 duration-300 ease-in-out"
|
||||
itemprop="mainEntityOfPage"
|
||||
:to="path"
|
||||
>
|
||||
@@ -13,7 +13,7 @@
|
||||
<router-link :to="path" class="embed-responsive-item">
|
||||
<LazyImage
|
||||
class="h-full"
|
||||
img-class="h-full"
|
||||
img-class="h-full object-cover"
|
||||
itemprop="image"
|
||||
:alt="title"
|
||||
:src="`${
|
||||
@@ -21,11 +21,12 @@
|
||||
? frontmatter.header_image
|
||||
: '/header-image-placeholder.png'
|
||||
}`"
|
||||
src-placeholder="/card-placeholder.png"
|
||||
:ctx="regularPath"
|
||||
/>
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="pt-1 pb-4 px-2 flex flex-grow flex-col">
|
||||
<div class="p-4 flex flex-grow flex-col">
|
||||
<router-link :to="path">
|
||||
<h1 class="type-h5 font-bold text-primary hover:underline clamp-3">
|
||||
{{ title }}
|
||||
@@ -71,13 +72,6 @@ export default {
|
||||
frontmatter: {
|
||||
type: Object,
|
||||
default: () => ({}),
|
||||
validator: function (frontmatter) {
|
||||
if (frontmatter.description && frontmatter.description.length > 200) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
},
|
||||
},
|
||||
regularPath: {
|
||||
type: String,
|
||||
|
||||
@@ -1,51 +1,55 @@
|
||||
<template>
|
||||
<div
|
||||
class="flex flex-wrap items-center lg:justify-between"
|
||||
@keyup.left="handleKeyUp(-1)"
|
||||
@keyup.right="handleKeyUp(1)"
|
||||
>
|
||||
<div>Sort items by type:</div>
|
||||
<multiselect
|
||||
ref="select0"
|
||||
v-model="selectedCat"
|
||||
class="flex-grow mx-2"
|
||||
:options="categories"
|
||||
:searchable="false"
|
||||
:allow-empty="false"
|
||||
deselect-label=""
|
||||
@select="focusOnSubmit()"
|
||||
@open="setSelected(0)"
|
||||
/>
|
||||
<span>and/or</span>
|
||||
<multiselect
|
||||
ref="select1"
|
||||
v-model="selectedTags"
|
||||
class="flex-grow ml-0 lg:mx-2 max-w-sm max-h-sm"
|
||||
tag-placeholder="search for this text"
|
||||
placeholder="Search for words or #tags"
|
||||
track-by="name"
|
||||
label="name"
|
||||
:options="resolvedTags"
|
||||
:multiple="true"
|
||||
:taggable="true"
|
||||
@tag="handleAddTag"
|
||||
@select="focusOnSubmit()"
|
||||
@open="setSelected(1)"
|
||||
></multiselect>
|
||||
|
||||
<button
|
||||
ref="select2"
|
||||
class="p-2 text-white bg-blueGreen rounded opacity-75 hover:opacity-100 transition transition-opacity duration-300 ease-in-out"
|
||||
@click="handleSearch"
|
||||
@focus="setSelected(2)"
|
||||
<div>
|
||||
<div class="mb-2">Filter items by type:</div>
|
||||
<div
|
||||
class="flex flex-col xl:flex-row"
|
||||
@keyup.left="handleKeyUp(-1)"
|
||||
@keyup.right="handleKeyUp(1)"
|
||||
>
|
||||
Search
|
||||
</button>
|
||||
<multiselect
|
||||
ref="select0"
|
||||
:value="activeCategory !== '' ? activeCategory : 'All content'"
|
||||
class="mb-2 xl:mb-0 xl:mr-2 xl:max-w-xs"
|
||||
:options="['All content', ...categoriesList]"
|
||||
:searchable="false"
|
||||
:allow-empty="false"
|
||||
deselect-label=""
|
||||
@input="setActiveCategory"
|
||||
@open="setSelected(0)"
|
||||
/>
|
||||
<multiselect
|
||||
ref="select1"
|
||||
v-model="selectedTags"
|
||||
class="mb-2 xl:mb-0 xl:mr-2"
|
||||
tag-placeholder="search for this text"
|
||||
placeholder="Search for words or #tags"
|
||||
track-by="name"
|
||||
label="name"
|
||||
:limit="['xxl'].includes(this.$mq) ? tagsLimit : tagsList.length"
|
||||
:options="resolvedTags"
|
||||
:multiple="true"
|
||||
:taggable="true"
|
||||
@tag="handleAddTag"
|
||||
@remove="removeTag"
|
||||
@select="focusOnSubmit"
|
||||
@open="setSelected(1)"
|
||||
></multiselect>
|
||||
|
||||
<button
|
||||
ref="select2"
|
||||
class="h-full p-2 text-white bg-blueGreen rounded opacity-75 hover:opacity-100 transition transition-opacity duration-300 ease-in-out"
|
||||
@click="handleSearch"
|
||||
@focus="setSelected(2)"
|
||||
>
|
||||
Search
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Multiselect from 'vue-multiselect'
|
||||
import { mapState } from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'SearchCategoriesAndTags',
|
||||
@@ -55,47 +59,166 @@ export default {
|
||||
type: Array,
|
||||
default: () => ['list', 'of', 'tags', '#'],
|
||||
},
|
||||
categories: {
|
||||
type: Array,
|
||||
default: () => ['list', 'of', 'cats'],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selectedCat: this.categories[0],
|
||||
selectedTags: [],
|
||||
searchedWords: [],
|
||||
selectedInput: 0,
|
||||
tagsLimit: 99,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState('appState', [
|
||||
'categoriesList',
|
||||
'tagsList',
|
||||
'activeCategory',
|
||||
'activeTags',
|
||||
'searchedText',
|
||||
]),
|
||||
resolvedTags() {
|
||||
return this.tags.map((tag) => ({
|
||||
name: `#${tag}`,
|
||||
value: tag,
|
||||
}))
|
||||
},
|
||||
queryProptertyWatchlist() {
|
||||
return `${this.activeTags}|${this.searchedText}`
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
queryProptertyWatchlist() {
|
||||
this.updateTagsWithQuery()
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.updateTagsWithQuery()
|
||||
},
|
||||
created() {
|
||||
this.calculateTagsLimit()
|
||||
if (typeof window !== 'undefined') {
|
||||
window.addEventListener('resize', this.tagsEvent)
|
||||
}
|
||||
},
|
||||
destroyed() {
|
||||
if (typeof window !== 'undefined') {
|
||||
window.removeEventListener('resize', this.tagsEvent)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
tagsEvent() {
|
||||
if (['xxl'].includes(this.$mq)) {
|
||||
this.calculateTagsLimit()
|
||||
}
|
||||
},
|
||||
calculateTagsLimit(newTags) {
|
||||
// The max value a char chan occupy in px
|
||||
const multiplier = 8
|
||||
// Width of the help text - "X or more"
|
||||
const helpTextWidth = 75
|
||||
// Padding and margin for the each tag
|
||||
const tagPadding = 46
|
||||
let limit = this.tagsList.length
|
||||
|
||||
if (typeof window !== 'undefined' && this.$refs.select1) {
|
||||
const tagsEl = this.$refs.select1.$el.childNodes[2]
|
||||
const tagsStyles = window.getComputedStyle(tagsEl)
|
||||
// Width of the tags container
|
||||
const availableWidth =
|
||||
tagsEl.getBoundingClientRect().width -
|
||||
parseFloat(tagsStyles.paddingLeft) -
|
||||
parseFloat(tagsStyles.paddingRight)
|
||||
|
||||
const tagNames = (newTags || this.selectedTags).map((tag) => tag.name)
|
||||
const tags = tagNames.map(
|
||||
(tagName) => tagPadding + tagName.length * multiplier
|
||||
)
|
||||
const estimatedTagsWidth = tags.reduce((a, b) => a + b, 0)
|
||||
|
||||
if (estimatedTagsWidth > availableWidth) {
|
||||
let charCount = helpTextWidth
|
||||
|
||||
for (let i = 0; i < tags.length; i++) {
|
||||
if (charCount + tags[i] > availableWidth) {
|
||||
break
|
||||
}
|
||||
|
||||
charCount += tags[i]
|
||||
|
||||
limit = i + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.tagsLimit = limit
|
||||
},
|
||||
updateTagsWithQuery() {
|
||||
const { query } = this.$route
|
||||
|
||||
const queryTags = query.tags ? query.tags.split(',') : []
|
||||
const querySearch = query.search ? query.search.split(',') : []
|
||||
|
||||
const tagArray = this.selectedTags.map((tag) => tag.value)
|
||||
const tagsToAdd = [...queryTags, ...querySearch].filter(
|
||||
(tag) => !tagArray.includes(tag)
|
||||
)
|
||||
const tagsToRemove = tagArray.filter(
|
||||
(tag) => this.tagsList.includes(tag) && !queryTags.includes(tag)
|
||||
)
|
||||
const textsToRemove = tagArray.filter(
|
||||
(tag) => !this.tagsList.includes(tag) && !querySearch.includes(tag)
|
||||
)
|
||||
|
||||
const newTags = this.selectedTags.filter(
|
||||
(tag) =>
|
||||
!tagsToRemove.includes(tag.value) &&
|
||||
!textsToRemove.includes(tag.value)
|
||||
)
|
||||
|
||||
tagsToAdd.forEach((tag) => {
|
||||
const isTag = this.tagsList.includes(tag)
|
||||
|
||||
newTags.push({
|
||||
name: (isTag ? '#' : '') + tag,
|
||||
value: tag,
|
||||
})
|
||||
})
|
||||
|
||||
this.selectedTags = newTags
|
||||
},
|
||||
setActiveCategory(category) {
|
||||
this.$store.commit(
|
||||
'appState/setActiveCategory',
|
||||
this.categoriesList.includes(category) ? category : ''
|
||||
)
|
||||
},
|
||||
removeTag(tagToRemove) {
|
||||
if (this.activeTags.length > 0 || this.searchedText.length > 0) {
|
||||
this.selectedTags = this.selectedTags.filter(
|
||||
(tag) => tag.value !== tagToRemove.value
|
||||
)
|
||||
this.handleSearch()
|
||||
}
|
||||
},
|
||||
handleSearch() {
|
||||
const tagArray = this.selectedTags.map((tag) => tag.value)
|
||||
const tags = tagArray.filter((tag) => this.tags.includes(tag))
|
||||
const texts = tagArray.filter((tag) => !this.tags.includes(tag))
|
||||
const category =
|
||||
this.selectedCat === this.categories[0] ? undefined : this.selectedCat
|
||||
const tags = tagArray.filter((tag) => this.tagsList.includes(tag))
|
||||
const texts = tagArray.filter((tag) => !this.tagsList.includes(tag))
|
||||
|
||||
this.$store.commit('appState/setActiveTags', tags)
|
||||
this.$store.commit('appState/setActiveCategory', category)
|
||||
this.$store.commit('appState/setSearchedText', texts)
|
||||
},
|
||||
handleAddTag(text) {
|
||||
this.selectedTags.push({
|
||||
const option = {
|
||||
name: text,
|
||||
value: text,
|
||||
})
|
||||
this.focusOnSubmit()
|
||||
}
|
||||
this.selectedTags.push(option)
|
||||
this.calculateTagsLimit([...this.selectedTags, option])
|
||||
this.$refs.select2.focus()
|
||||
},
|
||||
focusOnSubmit() {
|
||||
focusOnSubmit(option) {
|
||||
this.calculateTagsLimit()
|
||||
this.$refs.select2.focus()
|
||||
},
|
||||
handleKeyUp(switcher) {
|
||||
@@ -109,7 +232,7 @@ export default {
|
||||
}
|
||||
|
||||
if (futureIndex === 2) {
|
||||
this.focusOnSubmit()
|
||||
this.$refs.select2.focus()
|
||||
this.selectedInput = 2
|
||||
} else {
|
||||
this.$refs['select' + futureIndex].$el.focus()
|
||||
@@ -125,18 +248,50 @@ export default {
|
||||
<style src="vue-multiselect/dist/vue-multiselect.min.css"></style>
|
||||
|
||||
<style>
|
||||
.multiselect {
|
||||
width: auto;
|
||||
height: 2.7rem;
|
||||
}
|
||||
|
||||
.multiselect__tag,
|
||||
.multiselect__tag-icon:hover,
|
||||
.multiselect__option--highlight,
|
||||
.multiselect__option--highlight::after {
|
||||
@apply bg-blueGreen;
|
||||
}
|
||||
|
||||
.multiselect__placeholder {
|
||||
font-size: 16px;
|
||||
.multiselect__placeholder,
|
||||
.multiselect__input {
|
||||
height: 1.5rem;
|
||||
margin-bottom: 0;
|
||||
padding-top: 0;
|
||||
padding-left: 0.3125rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.multiselect--active .multiselect__tags {
|
||||
padding-botom: 0;
|
||||
}
|
||||
|
||||
.multiselect__tags {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.multiselect__tags-wrap {
|
||||
margin-bottom: -0.5rem;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.multiselect__tag {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.multiselect--active .multiselect__tags-wrap {
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.multiselect__single,
|
||||
.multiselect__strong {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
<template>
|
||||
<div class="grid-margins opacity-85">
|
||||
<LinksAndSocial :block-lazy-load="blockLazyLoad" />
|
||||
<SearchCategoriesAndTags
|
||||
class="mt-2"
|
||||
:tags="tags"
|
||||
:categories="categories"
|
||||
/>
|
||||
<SearchCategoriesAndTags class="mt-2 xl:-mb-10 min-h-28" :tags="tags" />
|
||||
<ActiveTags :number-of-posts="numberOfPosts" class="mt-4" />
|
||||
</div>
|
||||
</template>
|
||||
@@ -23,10 +19,6 @@ export default {
|
||||
SearchCategoriesAndTags,
|
||||
},
|
||||
props: {
|
||||
categories: {
|
||||
type: Array,
|
||||
required: true,
|
||||
},
|
||||
tags: {
|
||||
type: Array,
|
||||
required: true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div
|
||||
class="group bg-gray-pale rounded flex flex-col transform hover:scale-105 duration-300 ease-in-out p-2"
|
||||
class="group bg-gray-pale rounded flex flex-col transform hover:scale-105 duration-300 ease-in-out"
|
||||
itemprop="mainEntityOfPage"
|
||||
>
|
||||
<article
|
||||
@@ -21,6 +21,7 @@
|
||||
img-class="w-full h-full object-cover"
|
||||
itemprop="image"
|
||||
:alt="title"
|
||||
src-placeholder="/card-placeholder.png"
|
||||
:src="thumbnailPath"
|
||||
/>
|
||||
<div
|
||||
@@ -35,7 +36,7 @@
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="pt-1 pb-4 px-2 flex flex-grow flex-col">
|
||||
<div class="p-4 flex flex-grow flex-col">
|
||||
<a
|
||||
:href="path"
|
||||
target="_blank"
|
||||
@@ -86,13 +87,6 @@ export default {
|
||||
frontmatter: {
|
||||
type: Object,
|
||||
default: () => ({}),
|
||||
validator: function (frontmatter) {
|
||||
if (frontmatter.description && frontmatter.description.length > 200) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
},
|
||||
},
|
||||
path: {
|
||||
type: String,
|
||||
|
||||
@@ -13,11 +13,10 @@
|
||||
<LanguageSelector class="absolute right-0" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt-8 bg-white">
|
||||
<div class="pt-8 pb-4 bg-white flex-grow">
|
||||
<SortAndFilter
|
||||
:number-of-posts="pagesToShow.length"
|
||||
:tags="tags"
|
||||
:categories="categories"
|
||||
:block-lazy-load="blockLazyLoad"
|
||||
/>
|
||||
<div
|
||||
@@ -35,7 +34,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
v-if="!infiniteScroll && pagesToShow.length < publicPages.length"
|
||||
v-if="pagesToShow.length < publicPages.length"
|
||||
class="flex justify-center mt-8 pb-4"
|
||||
>
|
||||
<button
|
||||
@@ -45,10 +44,17 @@
|
||||
Load More
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
v-else-if="pagesToShow.length < publicPages.length"
|
||||
v-observe-visibility="handleBottomVisibilityChange"
|
||||
></div>
|
||||
<!-- <div
|
||||
v-if="infiniteScroll && pagesToShow.length < publicPages.length"
|
||||
v-observe-visibility="{
|
||||
callback: handleBottomVisibilityChange,
|
||||
intersection: {
|
||||
rootMargin: '-360px 0px -360px 0px',
|
||||
threshold: 1.0,
|
||||
},
|
||||
}"
|
||||
class="teste"
|
||||
></div> -->
|
||||
</div>
|
||||
<VideoModal ref="videoModal" />
|
||||
</Layout>
|
||||
@@ -66,15 +72,10 @@ import Breadcrumbs from '@theme/components/Breadcrumbs'
|
||||
import LanguageSelector from '@theme/components/base/LanguageSelector'
|
||||
import { getTags } from '@theme/util/tagUtils'
|
||||
import { parseProtectedPost, checkItem } from '@theme/util/blogUtils'
|
||||
import uniq from 'lodash/uniq'
|
||||
import pick from 'lodash/pick'
|
||||
import isEqual from 'lodash/isEqual'
|
||||
|
||||
const protectedCardTypes = [
|
||||
'Academic paper',
|
||||
'Event',
|
||||
'News coverage',
|
||||
'Release notes',
|
||||
'Tutorial',
|
||||
'Video',
|
||||
]
|
||||
const defaultCategory = 'Blog post'
|
||||
|
||||
export default {
|
||||
@@ -89,8 +90,7 @@ export default {
|
||||
},
|
||||
data: function () {
|
||||
return {
|
||||
categories: ['All content', defaultCategory, ...protectedCardTypes],
|
||||
numberOfPagesToShow: 21,
|
||||
numberOfPagesToShow: 24,
|
||||
infiniteScroll: false,
|
||||
delayValues: [0, 0.15, 0.3],
|
||||
breadcrumbs: [
|
||||
@@ -101,6 +101,9 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
...mapState('appState', [
|
||||
'categoriesList',
|
||||
'tagsList',
|
||||
'authorsList',
|
||||
'activeCategory',
|
||||
'activeTags',
|
||||
'searchedText',
|
||||
@@ -108,12 +111,12 @@ export default {
|
||||
'videoModalCard',
|
||||
]),
|
||||
tags() {
|
||||
return getTags(this.publicPages)
|
||||
return getTags(this.activeTags, this.publicPages)
|
||||
},
|
||||
publicPages: function () {
|
||||
let result = []
|
||||
this.$pagination.pages.forEach((page) => {
|
||||
if (protectedCardTypes.includes(page.frontmatter.type)) {
|
||||
if (this.categoriesList.includes(page.frontmatter.type)) {
|
||||
result = [
|
||||
...result,
|
||||
...parseProtectedPost(
|
||||
@@ -171,25 +174,105 @@ export default {
|
||||
this.updateQuery()
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
const queryTags = this.$route.query.tags
|
||||
const queryCategory = this.$route.query.category
|
||||
const queryText = this.$route.query.search
|
||||
const queryAuthor = this.$route.query.author
|
||||
created() {
|
||||
let categories = []
|
||||
let tagsArray = []
|
||||
let authorsArray = []
|
||||
|
||||
if (queryTags && !this.activeTags.length) {
|
||||
this.$store.commit('appState/setActiveTags', queryTags.split(','))
|
||||
this.$pagination.pages.forEach((page) => {
|
||||
const { type, tags, data, author } = page.frontmatter
|
||||
|
||||
if (type) {
|
||||
categories.push(type)
|
||||
}
|
||||
|
||||
if (tags) {
|
||||
tagsArray.push(tags)
|
||||
}
|
||||
|
||||
if (data) {
|
||||
tagsArray.push(
|
||||
uniq(
|
||||
data
|
||||
.filter((subPage) => subPage.tags)
|
||||
.map((subPage) => subPage.tags)
|
||||
.flat(2)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
if (author) {
|
||||
authorsArray.push(author.name.split(',').map((author) => author.trim()))
|
||||
}
|
||||
})
|
||||
|
||||
categories = uniq(categories, true)
|
||||
tagsArray = uniq(tagsArray.flat(2), true)
|
||||
authorsArray = uniq(authorsArray.flat(2), true)
|
||||
|
||||
this.$store.commit('appState/setCategoriesList', [
|
||||
defaultCategory,
|
||||
...categories,
|
||||
])
|
||||
this.$store.commit('appState/setTagsList', tagsArray)
|
||||
this.$store.commit('appState/setAuthorsList', authorsArray)
|
||||
},
|
||||
mounted() {
|
||||
const observer = new IntersectionObserver(
|
||||
this.handleBottomVisibilityChange,
|
||||
{
|
||||
threshold: 1.0,
|
||||
}
|
||||
)
|
||||
|
||||
observer.observe(document.querySelector('footer.footer ul'))
|
||||
|
||||
const { query } = this.$route
|
||||
const newQuery = pick(Object.assign({}, query), [
|
||||
'category',
|
||||
'tags',
|
||||
'search',
|
||||
'author',
|
||||
])
|
||||
|
||||
let queryCategory = query.category || ''
|
||||
|
||||
if (queryCategory && !this.categoriesList.includes(queryCategory)) {
|
||||
queryCategory = ''
|
||||
delete newQuery.category
|
||||
}
|
||||
if (queryCategory) {
|
||||
this.$store.commit('appState/setActiveCategory', queryCategory)
|
||||
|
||||
let queryTags = query.tags ? query.tags.split(',') : []
|
||||
|
||||
if (queryTags.length > 0) {
|
||||
queryTags = queryTags.filter((tag) => this.tagsList.includes(tag))
|
||||
|
||||
if (queryTags.length === 0) {
|
||||
delete newQuery.tags
|
||||
}
|
||||
}
|
||||
if (queryText && !this.searchedText.length) {
|
||||
this.$store.commit('appState/setSearchedText', queryText.split(','))
|
||||
|
||||
let queryAuthor = query.author
|
||||
|
||||
if (queryAuthor && !this.authorsList.includes(queryAuthor)) {
|
||||
queryAuthor = ''
|
||||
delete newQuery.author
|
||||
}
|
||||
if (queryAuthor) {
|
||||
this.$store.commit('appState/setActiveAuthor', queryAuthor)
|
||||
|
||||
if (!isEqual(query, newQuery)) {
|
||||
this.$router.replace({ query: newQuery })
|
||||
}
|
||||
|
||||
const queryText = query.search
|
||||
|
||||
this.$store.commit('appState/setActiveTags', queryTags)
|
||||
this.$store.commit('appState/setActiveCategory', queryCategory)
|
||||
this.$store.commit(
|
||||
'appState/setSearchedText',
|
||||
queryText ? queryText.split(',') : []
|
||||
)
|
||||
this.$store.commit('appState/setActiveAuthor', queryAuthor || '')
|
||||
|
||||
const latestWeeklyPost = this.publicPages
|
||||
.filter(
|
||||
(item) =>
|
||||
@@ -212,20 +295,34 @@ export default {
|
||||
category: this.activeCategory,
|
||||
author: this.activeAuthor,
|
||||
}
|
||||
|
||||
Object.keys(newQuery).forEach((entry) => {
|
||||
const value = newQuery[entry]
|
||||
if (value === '' || value.length === 0) {
|
||||
delete newQuery[entry]
|
||||
}
|
||||
})
|
||||
|
||||
this.$router.replace({ query: newQuery }).catch(() => {})
|
||||
},
|
||||
blockLazyLoad() {
|
||||
this.infiniteScroll = false
|
||||
},
|
||||
showMorePages() {
|
||||
this.numberOfPagesToShow = this.numberOfPagesToShow + 21
|
||||
this.numberOfPagesToShow = this.numberOfPagesToShow + 24
|
||||
},
|
||||
handleLoadMoreClick() {
|
||||
this.infiniteScroll = true
|
||||
this.numberOfPagesToShow = 40
|
||||
this.numberOfPagesToShow = this.numberOfPagesToShow + 24
|
||||
},
|
||||
handleBottomVisibilityChange(isVisible) {
|
||||
isVisible && this.showMorePages()
|
||||
if (
|
||||
isVisible &&
|
||||
this.infiniteScroll &&
|
||||
this.pagesToShow.length < this.publicPages.length
|
||||
) {
|
||||
this.showMorePages()
|
||||
}
|
||||
},
|
||||
delayVal: function () {
|
||||
this.current =
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<Nav v-if="shouldDisplay('nav')" ref="nav" />
|
||||
<MobileNav v-if="shouldDisplay('nav')" />
|
||||
<Transition :with-key="$page.key" appear :after-leave="leaveScroll">
|
||||
<component :is="layout" />
|
||||
<component :is="layout" class="flex flex-col flex-grow" />
|
||||
</Transition>
|
||||
<Footer v-if="shouldDisplay('footer')" />
|
||||
</div>
|
||||
|
||||
@@ -8,8 +8,11 @@ const appState = {
|
||||
navHeight: 0,
|
||||
activeTags: [],
|
||||
searchedText: [],
|
||||
activeCategory: null,
|
||||
activeAuthor: null,
|
||||
categoriesList: [],
|
||||
tagsList: [],
|
||||
authorsList: [],
|
||||
activeCategory: '',
|
||||
activeAuthor: '',
|
||||
latestWeeklyPost: null,
|
||||
videoModalCard: null,
|
||||
},
|
||||
@@ -23,15 +26,27 @@ const appState = {
|
||||
setRouterLocation: (state, data) => {
|
||||
Vue.set(state, 'routerLocation', data)
|
||||
},
|
||||
setTagsList: (state, data) => {
|
||||
Vue.set(state, 'tagsList', data)
|
||||
},
|
||||
setActiveTags: (state, data) => {
|
||||
Vue.set(state, 'activeTags', data)
|
||||
},
|
||||
addNewTag: (state, data) => {
|
||||
Vue.set(state, 'activeTags', [...new Set([...state.activeTags, ...data])])
|
||||
},
|
||||
setSearchedText: (state, data) => {
|
||||
Vue.set(state, 'searchedText', data)
|
||||
},
|
||||
setCategoriesList: (state, data) => {
|
||||
Vue.set(state, 'categoriesList', data)
|
||||
},
|
||||
setActiveCategory: (state, data) => {
|
||||
Vue.set(state, 'activeCategory', data)
|
||||
},
|
||||
setAuthorsList: (state, data) => {
|
||||
Vue.set(state, 'authorsList', data)
|
||||
},
|
||||
setActiveAuthor: (state, data) => {
|
||||
Vue.set(state, 'activeAuthor', data)
|
||||
},
|
||||
@@ -41,8 +56,8 @@ const appState = {
|
||||
clearFilters: (state) => {
|
||||
Vue.set(state, 'activeTags', [])
|
||||
Vue.set(state, 'searchedText', [])
|
||||
Vue.set(state, 'activeCategory', null)
|
||||
Vue.set(state, 'activeAuthor', null)
|
||||
Vue.set(state, 'activeCategory', '')
|
||||
Vue.set(state, 'activeAuthor', '')
|
||||
},
|
||||
setVideoModalCard: (state, card) => {
|
||||
Vue.set(state, 'videoModalCard', card)
|
||||
|
||||
@@ -41,6 +41,7 @@ const theme = {
|
||||
'-10': '-10',
|
||||
},
|
||||
minHeight: {
|
||||
28: '7rem',
|
||||
500: '500px',
|
||||
},
|
||||
rotate: {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { isArray } from 'lodash'
|
||||
import isArray from 'lodash/isArray'
|
||||
|
||||
export const getTags = (posts) => {
|
||||
const tags = []
|
||||
export const getTags = (activeTags, posts) => {
|
||||
const tags = [...activeTags]
|
||||
|
||||
posts.forEach((post) => {
|
||||
if (!post.frontmatter.tags) {
|
||||
|
||||
@@ -7,7 +7,7 @@ author: Adin Schmahmann
|
||||
header_image: /104-dht-deep-dive-header-image.png
|
||||
tags:
|
||||
- 'go-ipfs'
|
||||
- content routing'
|
||||
- 'content routing'
|
||||
- 'DHT'
|
||||
- 'Kademlia'
|
||||
---
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
---
|
||||
date: 2021-01-19 07:00:00 +0000
|
||||
permalink: "/2021-01-19-js-ipfs-0-50/"
|
||||
permalink: '/2021-01-19-js-ipfs-0-50/'
|
||||
translationKey: ''
|
||||
tags: js-ipfs, breaking change
|
||||
header_image: "/header-image-js-ipfs-placeholder.png"
|
||||
header_image: '/header-image-js-ipfs-placeholder.png'
|
||||
title: Announcing js-IPFS 0.53.0
|
||||
description: js-IPFS 0.53.0 arrives with experimental gRPC server and libp2p-0.30.x
|
||||
author: Alex Potsides
|
||||
|
||||
tags:
|
||||
- js-ipfs
|
||||
- breaking change
|
||||
---
|
||||
|
||||
## 🔦 Highlights
|
||||
|
||||
> full-duplex streaming browser APIs and the latest libp2p
|
||||
@@ -56,7 +58,7 @@ const createClient = require('ipfs-client')
|
||||
|
||||
const client = createClient({
|
||||
grpc: '/ipv4/127.0.0.1/tcp/5003/ws',
|
||||
http: '/ipv4/127.0.0.1/tcp/5002/http'
|
||||
http: '/ipv4/127.0.0.1/tcp/5002/http',
|
||||
})
|
||||
|
||||
const id = await client.id()
|
||||
@@ -87,23 +89,23 @@ Expect a blog post here soon with a deep dive, but in the mean time see the [lib
|
||||
|
||||
## ✨New features
|
||||
|
||||
* add grpc server and client ([#3403](https://github.com/ipfs/js-ipfs/issues/3403)) ([a9027e0](https://github.com/ipfs/js-ipfs/commit/a9027e0ec0cea9a4f34b4f2f52e09abb35237384)), closes [#2519](https://github.com/ipfs/js-ipfs/issues/2519) [#2838](https://github.com/ipfs/js-ipfs/issues/2838) [#2943](https://github.com/ipfs/js-ipfs/issues/2943) [#2854](https://github.com/ipfs/js-ipfs/issues/2854) [#2864](https://github.com/ipfs/js-ipfs/issues/2864)
|
||||
* allow passing a http.Agent to ipfs-http-client in node ([#3474](https://github.com/ipfs/js-ipfs/issues/3474)) ([fe93ba0](https://github.com/ipfs/js-ipfs/commit/fe93ba01a0c62cead7cc4e0023de2d2a00adbc02)), closes [/tools.ietf.org/html/rfc2616#section-8](https://github.com//tools.ietf.org/html/rfc2616/issues/section-8) [#3464](https://github.com/ipfs/js-ipfs/issues/3464)
|
||||
* allow passing a http.Agent to the grpc client ([#3477](https://github.com/ipfs/js-ipfs/issues/3477)) ([c5f0bc5](https://github.com/ipfs/js-ipfs/commit/c5f0bc5eeee15369b7d02901035b04184a8608d2)), closes [#3474](https://github.com/ipfs/js-ipfs/issues/3474)
|
||||
* update libp2p to 0.30 ([#3427](https://github.com/ipfs/js-ipfs/issues/3427)) ([a39e6fb](https://github.com/ipfs/js-ipfs/commit/a39e6fb372bf9e7782462b6a4b7530a3f8c9b3f1))
|
||||
- add grpc server and client ([#3403](https://github.com/ipfs/js-ipfs/issues/3403)) ([a9027e0](https://github.com/ipfs/js-ipfs/commit/a9027e0ec0cea9a4f34b4f2f52e09abb35237384)), closes [#2519](https://github.com/ipfs/js-ipfs/issues/2519) [#2838](https://github.com/ipfs/js-ipfs/issues/2838) [#2943](https://github.com/ipfs/js-ipfs/issues/2943) [#2854](https://github.com/ipfs/js-ipfs/issues/2854) [#2864](https://github.com/ipfs/js-ipfs/issues/2864)
|
||||
- allow passing a http.Agent to ipfs-http-client in node ([#3474](https://github.com/ipfs/js-ipfs/issues/3474)) ([fe93ba0](https://github.com/ipfs/js-ipfs/commit/fe93ba01a0c62cead7cc4e0023de2d2a00adbc02)), closes [/tools.ietf.org/html/rfc2616#section-8](https://github.com//tools.ietf.org/html/rfc2616/issues/section-8) [#3464](https://github.com/ipfs/js-ipfs/issues/3464)
|
||||
- allow passing a http.Agent to the grpc client ([#3477](https://github.com/ipfs/js-ipfs/issues/3477)) ([c5f0bc5](https://github.com/ipfs/js-ipfs/commit/c5f0bc5eeee15369b7d02901035b04184a8608d2)), closes [#3474](https://github.com/ipfs/js-ipfs/issues/3474)
|
||||
- update libp2p to 0.30 ([#3427](https://github.com/ipfs/js-ipfs/issues/3427)) ([a39e6fb](https://github.com/ipfs/js-ipfs/commit/a39e6fb372bf9e7782462b6a4b7530a3f8c9b3f1))
|
||||
|
||||
### 🔨 Breaking changes
|
||||
|
||||
* The websocket transport will only dial DNS+WSS addresses - see https://github.com/libp2p/js-libp2p-websockets/releases/tag/v0.15.0
|
||||
- The websocket transport will only dial DNS+WSS addresses - see https://github.com/libp2p/js-libp2p-websockets/releases/tag/v0.15.0
|
||||
|
||||
### 🕷️ Bug fixes
|
||||
|
||||
* files ls should return string ([#3352](https://github.com/ipfs/js-ipfs/pull/3352)) ([16ecc74](https://github.com/ipfs/js-ipfs/commit/16ecc7485dfbb1f0c827c5f804974bb804f3dafd))
|
||||
* fixes "interface-ipfs-core" link ([#3334](https://github.com/ipfs/js-ipfs/pull/3334)) ([3e7e222](https://github.com/ipfs/js-ipfs/commit/3e7e22239e334705acd665408e77c84e65da2b32))
|
||||
* packages/ipfs-core/src/index.js attempts to export undefined Buffer ([#3312](https://github.com/ipfs/js-ipfs/issues/3312)) ([5cc6dfe](https://github.com/ipfs/js-ipfs/commit/5cc6dfebf96ad9509e7ded175291789e32402eec))
|
||||
* HTTP client factory: Invalid URL in React Navtive ([#3331](https://github.com/ipfs/js-ipfs/issues/3331)) ([4eb196c](https://github.com/ipfs/js-ipfs/commit/4eb196c07129d0ee90a7ad55feca69b6b349d8b7))
|
||||
* Invalid version error triggered in cli pin add/rm ([#3306](https://github.com/ipfs/js-ipfs/pull/3306)) ([69757f3](https://github.com/ipfs/js-ipfs/commit/69757f3c321c5d135ebde7a262c169427e4f1105))
|
||||
* Loading ipfs-js bundle in worker fails with ReferenceError: window is not defined ([#2349](https://github.com/ipfs/js-ipfs/issues/2349)) ([3f72e50](https://github.com/ipfs/aegir/commit/3f72e5074145a8f2ec03143db4230514af664f95))
|
||||
- files ls should return string ([#3352](https://github.com/ipfs/js-ipfs/pull/3352)) ([16ecc74](https://github.com/ipfs/js-ipfs/commit/16ecc7485dfbb1f0c827c5f804974bb804f3dafd))
|
||||
- fixes "interface-ipfs-core" link ([#3334](https://github.com/ipfs/js-ipfs/pull/3334)) ([3e7e222](https://github.com/ipfs/js-ipfs/commit/3e7e22239e334705acd665408e77c84e65da2b32))
|
||||
- packages/ipfs-core/src/index.js attempts to export undefined Buffer ([#3312](https://github.com/ipfs/js-ipfs/issues/3312)) ([5cc6dfe](https://github.com/ipfs/js-ipfs/commit/5cc6dfebf96ad9509e7ded175291789e32402eec))
|
||||
- HTTP client factory: Invalid URL in React Navtive ([#3331](https://github.com/ipfs/js-ipfs/issues/3331)) ([4eb196c](https://github.com/ipfs/js-ipfs/commit/4eb196c07129d0ee90a7ad55feca69b6b349d8b7))
|
||||
- Invalid version error triggered in cli pin add/rm ([#3306](https://github.com/ipfs/js-ipfs/pull/3306)) ([69757f3](https://github.com/ipfs/js-ipfs/commit/69757f3c321c5d135ebde7a262c169427e4f1105))
|
||||
- Loading ipfs-js bundle in worker fails with ReferenceError: window is not defined ([#2349](https://github.com/ipfs/js-ipfs/issues/2349)) ([3f72e50](https://github.com/ipfs/aegir/commit/3f72e5074145a8f2ec03143db4230514af664f95))
|
||||
|
||||
## 🗺️ What’s next?
|
||||
|
||||
@@ -113,80 +115,80 @@ Only large features are called out in the roadmap, expect lots of small bugfix r
|
||||
|
||||
## 😍 Huge thank you to everyone that made this release possible
|
||||
|
||||
* [@a1300](https://github.com/a1300) (3 commits, 3 PRs, 10 issues, 11 comments)
|
||||
* [@achingbrain](https://github.com/achingbrain) (51 commits, 34 PRs, 5 issues, 87 comments)
|
||||
* [@acolytec3](https://github.com/acolytec3) (3 commits, 3 PRs, 2 issues, 7 comments)
|
||||
* [@acostalima](https://github.com/acostalima) (1 issue, 9 comments)
|
||||
* [@adamprocter](https://github.com/adamprocter) (1 comment)
|
||||
* [@ampcpmgp](https://github.com/ampcpmgp) (1 issue, 1 comment)
|
||||
* [@andykitt](https://github.com/andykitt) (1 comment)
|
||||
* [@aphelionz](https://github.com/aphelionz) (1 PR, 1 comment)
|
||||
* [@aschmahmann](https://github.com/aschmahmann) (1 comment)
|
||||
* [@AuHau](https://github.com/AuHau) (1 PR, 2 issues, 5 comments)
|
||||
* [@carsonfarmer](https://github.com/carsonfarmer) (1 issue, 3 comments)
|
||||
* [@codecov-io](https://github.com/codecov-io) (3 comments)
|
||||
* [@dapplion](https://github.com/dapplion) (3 issues, 6 comments)
|
||||
* [@daviddias](https://github.com/daviddias) (1 commit, 1 PR, 2 issues, 3 comments)
|
||||
* [@DeedleFake](https://github.com/DeedleFake) (1 comment)
|
||||
* [@deefactorial](https://github.com/deefactorial) (1 issue)
|
||||
* [@dependabot[bot]](https://github.com/dependabot%5Bbot%5D) (2 commits)
|
||||
* [@elchenberg](https://github.com/elchenberg) (1 comment)
|
||||
* [@EmanHerawy](https://github.com/EmanHerawy) (1 issue)
|
||||
* [@gbaranski](https://github.com/gbaranski) (5 comments)
|
||||
* [@Gozala](https://github.com/Gozala) (14 commits, 14 PRs, 12 issues, 80 comments)
|
||||
* [@hacdias](https://github.com/hacdias) (20 commits, 7 PRs, 1 issue, 10 comments)
|
||||
* [@HexaField](https://github.com/HexaField) (3 commits, 9 PRs, 5 issues, 10 comments)
|
||||
* [@hugomrdias](https://github.com/hugomrdias) (17 commits, 16 PRs, 25 comments)
|
||||
* [@hunterInt](https://github.com/hunterInt) (1 issue, 8 comments)
|
||||
* [@icidasset](https://github.com/icidasset) (1 commit, 2 PRs, 1 issue, 14 comments)
|
||||
* [@ikreymer](https://github.com/ikreymer) (1 commit, 1 PR, 1 issue)
|
||||
* [@jacobfriedman](https://github.com/jacobfriedman) (1 commit, 1 PR, 6 comments)
|
||||
* [@jacobheun](https://github.com/jacobheun) (6 commits, 1 issue, 26 comments)
|
||||
* [@james2mid](https://github.com/james2mid) (1 issue, 1 comment)
|
||||
* [@JonasKruckenberg](https://github.com/JonasKruckenberg) (1 comment)
|
||||
* [@JonathanLorimer](https://github.com/JonathanLorimer) (1 comment)
|
||||
* [@julianmrodri](https://github.com/julianmrodri) (2 comments)
|
||||
* [@lidel](https://github.com/lidel) (2 commits, 2 PRs, 5 comments)
|
||||
* [@lovemyliwu](https://github.com/lovemyliwu) (3 commits, 3 PRs, 6 comments)
|
||||
* [@lucasvuotto](https://github.com/lucasvuotto) (3 comments)
|
||||
* [@markg85](https://github.com/markg85) (1 comment)
|
||||
* [@mburns](https://github.com/mburns) (2 commits, 1 PR, 1 comment)
|
||||
* [@mdtanrikulu](https://github.com/mdtanrikulu) (1 comment)
|
||||
* [@mgoelzer](https://github.com/mgoelzer) (1 issue)
|
||||
* [@mikeal](https://github.com/mikeal) (1 commit, 1 PR, 1 comment)
|
||||
* [@mtiger2k](https://github.com/mtiger2k) (2 issues, 1 comment)
|
||||
* [@mvdan](https://github.com/mvdan) (1 comment)
|
||||
* [@oed](https://github.com/oed) (2 comments)
|
||||
* [@on-meetsys](https://github.com/on-meetsys) (1 comment)
|
||||
* [@OR13](https://github.com/OR13) (5 comments)
|
||||
* [@peterjanbrone](https://github.com/peterjanbrone) (1 commit, 1 PR, 1 comment)
|
||||
* [@raphael10-collab](https://github.com/raphael10-collab) (1 issue)
|
||||
* [@robertkiel](https://github.com/robertkiel) (1 PR, 2 comments)
|
||||
* [@rvagg](https://github.com/rvagg) (5 comments)
|
||||
* [@ryanio](https://github.com/ryanio) (2 comments)
|
||||
* [@samlior](https://github.com/samlior) (1 commit, 1 PR)
|
||||
* [@scenaristeur](https://github.com/scenaristeur) (1 issue)
|
||||
* [@snickell](https://github.com/snickell) (1 comment)
|
||||
* [@stbrody](https://github.com/stbrody) (1 issue, 3 comments)
|
||||
* [@tabcat](https://github.com/tabcat) (1 issue, 2 comments)
|
||||
* [@technicallyty](https://github.com/technicallyty) (1 comment)
|
||||
* [@TheoXD](https://github.com/TheoXD) (1 comment)
|
||||
* [@thotheolh](https://github.com/thotheolh) (1 comment)
|
||||
* [@ukstv](https://github.com/ukstv) (1 issue, 2 comments)
|
||||
* [@valmack](https://github.com/valmack) (6 issues, 7 comments)
|
||||
* [@vasco-santos](https://github.com/vasco-santos) (119 commits, 50 PRs, 11 issues, 123 comments)
|
||||
* [@vaultec81](https://github.com/vaultec81) (1 comment)
|
||||
* [@VexyCats](https://github.com/VexyCats) (1 issue)
|
||||
* [@vmx](https://github.com/vmx) (15 commits, 2 PRs, 16 comments)
|
||||
* [@vogdb](https://github.com/vogdb) (1 issue, 5 comments)
|
||||
* [@warpfork](https://github.com/warpfork) (2 comments)
|
||||
* [@welcome](undefined) (15 comments)
|
||||
* [@wemeetagain](https://github.com/wemeetagain) (3 commits, 1 PR, 1 issue, 1 comment)
|
||||
* [@workingtim](https://github.com/workingtim) (2 issues, 2 comments)
|
||||
* [@woss](https://github.com/woss) (1 issue, 4 comments)
|
||||
* [@wqsz7xn](https://github.com/wqsz7xn) (1 commit, 1 PR, 1 comment)
|
||||
* [@Xmader](https://github.com/Xmader) (1 PR, 10 comments)
|
||||
* [@xmaysonnave](https://github.com/xmaysonnave) (1 issue, 3 comments)
|
||||
- [@a1300](https://github.com/a1300) (3 commits, 3 PRs, 10 issues, 11 comments)
|
||||
- [@achingbrain](https://github.com/achingbrain) (51 commits, 34 PRs, 5 issues, 87 comments)
|
||||
- [@acolytec3](https://github.com/acolytec3) (3 commits, 3 PRs, 2 issues, 7 comments)
|
||||
- [@acostalima](https://github.com/acostalima) (1 issue, 9 comments)
|
||||
- [@adamprocter](https://github.com/adamprocter) (1 comment)
|
||||
- [@ampcpmgp](https://github.com/ampcpmgp) (1 issue, 1 comment)
|
||||
- [@andykitt](https://github.com/andykitt) (1 comment)
|
||||
- [@aphelionz](https://github.com/aphelionz) (1 PR, 1 comment)
|
||||
- [@aschmahmann](https://github.com/aschmahmann) (1 comment)
|
||||
- [@AuHau](https://github.com/AuHau) (1 PR, 2 issues, 5 comments)
|
||||
- [@carsonfarmer](https://github.com/carsonfarmer) (1 issue, 3 comments)
|
||||
- [@codecov-io](https://github.com/codecov-io) (3 comments)
|
||||
- [@dapplion](https://github.com/dapplion) (3 issues, 6 comments)
|
||||
- [@daviddias](https://github.com/daviddias) (1 commit, 1 PR, 2 issues, 3 comments)
|
||||
- [@DeedleFake](https://github.com/DeedleFake) (1 comment)
|
||||
- [@deefactorial](https://github.com/deefactorial) (1 issue)
|
||||
- [@dependabot[bot]](https://github.com/dependabot%5Bbot%5D) (2 commits)
|
||||
- [@elchenberg](https://github.com/elchenberg) (1 comment)
|
||||
- [@EmanHerawy](https://github.com/EmanHerawy) (1 issue)
|
||||
- [@gbaranski](https://github.com/gbaranski) (5 comments)
|
||||
- [@Gozala](https://github.com/Gozala) (14 commits, 14 PRs, 12 issues, 80 comments)
|
||||
- [@hacdias](https://github.com/hacdias) (20 commits, 7 PRs, 1 issue, 10 comments)
|
||||
- [@HexaField](https://github.com/HexaField) (3 commits, 9 PRs, 5 issues, 10 comments)
|
||||
- [@hugomrdias](https://github.com/hugomrdias) (17 commits, 16 PRs, 25 comments)
|
||||
- [@hunterInt](https://github.com/hunterInt) (1 issue, 8 comments)
|
||||
- [@icidasset](https://github.com/icidasset) (1 commit, 2 PRs, 1 issue, 14 comments)
|
||||
- [@ikreymer](https://github.com/ikreymer) (1 commit, 1 PR, 1 issue)
|
||||
- [@jacobfriedman](https://github.com/jacobfriedman) (1 commit, 1 PR, 6 comments)
|
||||
- [@jacobheun](https://github.com/jacobheun) (6 commits, 1 issue, 26 comments)
|
||||
- [@james2mid](https://github.com/james2mid) (1 issue, 1 comment)
|
||||
- [@JonasKruckenberg](https://github.com/JonasKruckenberg) (1 comment)
|
||||
- [@JonathanLorimer](https://github.com/JonathanLorimer) (1 comment)
|
||||
- [@julianmrodri](https://github.com/julianmrodri) (2 comments)
|
||||
- [@lidel](https://github.com/lidel) (2 commits, 2 PRs, 5 comments)
|
||||
- [@lovemyliwu](https://github.com/lovemyliwu) (3 commits, 3 PRs, 6 comments)
|
||||
- [@lucasvuotto](https://github.com/lucasvuotto) (3 comments)
|
||||
- [@markg85](https://github.com/markg85) (1 comment)
|
||||
- [@mburns](https://github.com/mburns) (2 commits, 1 PR, 1 comment)
|
||||
- [@mdtanrikulu](https://github.com/mdtanrikulu) (1 comment)
|
||||
- [@mgoelzer](https://github.com/mgoelzer) (1 issue)
|
||||
- [@mikeal](https://github.com/mikeal) (1 commit, 1 PR, 1 comment)
|
||||
- [@mtiger2k](https://github.com/mtiger2k) (2 issues, 1 comment)
|
||||
- [@mvdan](https://github.com/mvdan) (1 comment)
|
||||
- [@oed](https://github.com/oed) (2 comments)
|
||||
- [@on-meetsys](https://github.com/on-meetsys) (1 comment)
|
||||
- [@OR13](https://github.com/OR13) (5 comments)
|
||||
- [@peterjanbrone](https://github.com/peterjanbrone) (1 commit, 1 PR, 1 comment)
|
||||
- [@raphael10-collab](https://github.com/raphael10-collab) (1 issue)
|
||||
- [@robertkiel](https://github.com/robertkiel) (1 PR, 2 comments)
|
||||
- [@rvagg](https://github.com/rvagg) (5 comments)
|
||||
- [@ryanio](https://github.com/ryanio) (2 comments)
|
||||
- [@samlior](https://github.com/samlior) (1 commit, 1 PR)
|
||||
- [@scenaristeur](https://github.com/scenaristeur) (1 issue)
|
||||
- [@snickell](https://github.com/snickell) (1 comment)
|
||||
- [@stbrody](https://github.com/stbrody) (1 issue, 3 comments)
|
||||
- [@tabcat](https://github.com/tabcat) (1 issue, 2 comments)
|
||||
- [@technicallyty](https://github.com/technicallyty) (1 comment)
|
||||
- [@TheoXD](https://github.com/TheoXD) (1 comment)
|
||||
- [@thotheolh](https://github.com/thotheolh) (1 comment)
|
||||
- [@ukstv](https://github.com/ukstv) (1 issue, 2 comments)
|
||||
- [@valmack](https://github.com/valmack) (6 issues, 7 comments)
|
||||
- [@vasco-santos](https://github.com/vasco-santos) (119 commits, 50 PRs, 11 issues, 123 comments)
|
||||
- [@vaultec81](https://github.com/vaultec81) (1 comment)
|
||||
- [@VexyCats](https://github.com/VexyCats) (1 issue)
|
||||
- [@vmx](https://github.com/vmx) (15 commits, 2 PRs, 16 comments)
|
||||
- [@vogdb](https://github.com/vogdb) (1 issue, 5 comments)
|
||||
- [@warpfork](https://github.com/warpfork) (2 comments)
|
||||
- [@welcome](undefined) (15 comments)
|
||||
- [@wemeetagain](https://github.com/wemeetagain) (3 commits, 1 PR, 1 issue, 1 comment)
|
||||
- [@workingtim](https://github.com/workingtim) (2 issues, 2 comments)
|
||||
- [@woss](https://github.com/woss) (1 issue, 4 comments)
|
||||
- [@wqsz7xn](https://github.com/wqsz7xn) (1 commit, 1 PR, 1 comment)
|
||||
- [@Xmader](https://github.com/Xmader) (1 PR, 10 comments)
|
||||
- [@xmaysonnave](https://github.com/xmaysonnave) (1 issue, 3 comments)
|
||||
|
||||
## 🙌🏽 Want to contribute?
|
||||
|
||||
@@ -200,17 +202,17 @@ Would you like to contribute to the IPFS project and don’t know how? Well, the
|
||||
|
||||
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.
|
||||
|
||||
[UnixFS]: https://docs.ipfs.io/guides/concepts/unixfs/
|
||||
[CID]: https://docs.ipfs.io/guides/concepts/cid/
|
||||
[MFS]: https://docs.ipfs.io/guides/concepts/mfs/
|
||||
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
|
||||
[cid]: https://docs.ipfs.io/guides/concepts/cid/
|
||||
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
|
||||
[libp2p]: https://github.com/libp2p/js-libp2p
|
||||
[ipld]: https://github.com/ipld/js-ipld
|
||||
[AbortSignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
|
||||
[Multihash]: https://multiformats.io/multihash
|
||||
[DHT]: https://docs.ipfs.io/concepts/dht/
|
||||
[Multiaddr]: https://multiformats.io/multiaddr/
|
||||
[DAG]: https://docs.ipfs.io/concepts/merkle-dag/
|
||||
[Core-API]: https://github.com/ipfs/js-ipfs/tree/master/docs/core-api
|
||||
[gRPC]: https://en.wikipedia.org/wiki/GRPC
|
||||
[gRPC-web]: https://github.com/grpc/grpc-web
|
||||
[TLS]: https://en.wikipedia.org/wiki/Transport_Layer_Security
|
||||
[abortsignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
|
||||
[multihash]: https://multiformats.io/multihash
|
||||
[dht]: https://docs.ipfs.io/concepts/dht/
|
||||
[multiaddr]: https://multiformats.io/multiaddr/
|
||||
[dag]: https://docs.ipfs.io/concepts/merkle-dag/
|
||||
[core-api]: https://github.com/ipfs/js-ipfs/tree/master/docs/core-api
|
||||
[grpc]: https://en.wikipedia.org/wiki/GRPC
|
||||
[grpc-web]: https://github.com/grpc/grpc-web
|
||||
[tls]: https://en.wikipedia.org/wiki/Transport_Layer_Security
|
||||
|
||||
+27
-25
@@ -2,29 +2,31 @@
|
||||
title: Events
|
||||
type: Event
|
||||
data:
|
||||
- name: IPFS Community Meetup, February 2021
|
||||
title: IPFS Community Meetup, February 2021
|
||||
path: https://www.meetup.com/San-Francisco-IPFS/events/276018298/
|
||||
card_image: "/2021-02-23-event-meetup.png"
|
||||
date: 2021-02-23 07:00:00 +0000
|
||||
tags: official meetup
|
||||
- name: Kick off the New Year with IPFS
|
||||
title: Kick off the New Year with IPFS
|
||||
path: https://www.meetup.com/San-Francisco-IPFS/events/275755941/
|
||||
card_image: "/2021-01-22-event-meetup.png"
|
||||
date: 2021-01-22T07:00:00.000+00:00
|
||||
tags: official meetup
|
||||
- name: Wrap Up 2020 with IPFS and friends!
|
||||
title: Wrap Up 2020 with IPFS and friends!
|
||||
path: https://www.meetup.com/San-Francisco-IPFS/events/274910985/
|
||||
date: 2020-12-11T12:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
card_image: "/2020-12-11-event-meetup.png"
|
||||
- name: Portland Ctrl IPFS Meetup
|
||||
title: Portland Ctrl IPFS Meetup
|
||||
path: https://attending.io/events/ipfs-portland-meetup-the-permanent-distributed-web
|
||||
date: 2015-07-22T19:56:09.000+00:00
|
||||
tags: conferences
|
||||
|
||||
- name: IPFS Community Meetup, February 2021
|
||||
title: IPFS Community Meetup, February 2021
|
||||
path: https://www.meetup.com/San-Francisco-IPFS/events/276018298/
|
||||
card_image: '/2021-02-23-event-meetup.png'
|
||||
date: 2021-02-23 07:00:00 +0000
|
||||
tags:
|
||||
- official meetup
|
||||
- name: Kick off the New Year with IPFS
|
||||
title: Kick off the New Year with IPFS
|
||||
path: https://www.meetup.com/San-Francisco-IPFS/events/275755941/
|
||||
card_image: '/2021-01-22-event-meetup.png'
|
||||
date: 2021-01-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: Wrap Up 2020 with IPFS and friends!
|
||||
title: Wrap Up 2020 with IPFS and friends!
|
||||
path: https://www.meetup.com/San-Francisco-IPFS/events/274910985/
|
||||
date: 2020-12-11T12:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
card_image: '/2020-12-11-event-meetup.png'
|
||||
- name: Portland Ctrl IPFS Meetup
|
||||
title: Portland Ctrl IPFS Meetup
|
||||
path: https://attending.io/events/ipfs-portland-meetup-the-permanent-distributed-web
|
||||
date: 2015-07-22T19:56:09.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
---
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
date: 2021-01-14 07:00:00 +0000
|
||||
permalink: '/2021-01-14-explore-merkle-dags-at-protoschool/'
|
||||
translationKey: ''
|
||||
tags: ProtoSchool, IPLD, DAG
|
||||
header_image: '/115-protoschool-merkle-dags.png'
|
||||
title: Explore Merkle DAGs at ProtoSchool
|
||||
description: ''
|
||||
author: Teri Chadbourne
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- IPLD
|
||||
- DAG
|
||||
---
|
||||
|
||||
The [ProtoSchool](https://proto.school) team is pleased to announce the launch of a shiny new multiple-choice tutorial on [Merkle DAGs](https://proto.school/merkle-dags), the cornerstone of our freshly launched [IPLD (InterPlanetary Data) course](https;//proto.school/course/ipld). 🎉
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
date: 2020-10-30 06:00:00 +0000
|
||||
permalink: '/2020-10-30-dht-hardening/'
|
||||
translationKey: ''
|
||||
tags: libp2p, DHT, security
|
||||
header_image: '/112-dht-hardening.jpg'
|
||||
title: Hardening the IPFS public DHT against eclipse attacks
|
||||
description: ''
|
||||
author: Jacob Heun
|
||||
tags:
|
||||
- libp2p
|
||||
- DHT
|
||||
- security
|
||||
---
|
||||
|
||||
A major focus of IPFS for 2020 has been improving Content Routing as the network has continued to scale. While we've made [significant improvements](https://blog.ipfs.io/2020-07-20-dht-deep-dive/) to the speed of requests on the DHT, another crucial focus for us has been on the security of the network. During our work leading up to the release of go-ipfs 0.5, we were contacted by Bernd Prünster and Alexander Marsalek at [A-SIT](https://www.a-sit.at) and the [Graz University of Technology](https://tugraz.at) to advise us of an attack they had discovered during their research targeting go-ipfs 0.4.23 that would allow an attacker with minimal resources to eclipse any node on the public DHT. Over the past 3 minor releases of go-ipfs (0.5, 0.6 and 0.7), we've been collaborating closely with Bernd and Alexander, which has enabled us to release incremental improvements that have mitigated their original attack and increased the cost and difficulty of such attacks by several orders of magnitude. Today we'll dive into the attack and the various mitigations we've released. If you would like to read the full paper, "Total Eclipse of the Heart – Disrupting the InterPlanetary File System", you can find it at the [TU Graz Research Portal](https://graz.pure.elsevier.com/en/publications/total-eclipse-of-the-heart-disrupting-the-interplanetary-file-sys).
|
||||
|
||||
@@ -1,48 +1,57 @@
|
||||
---
|
||||
title: Hey ETHDenver, hack on IPFS with these bounties!
|
||||
description: Win prizes of up to $500 for building on IPFS, especially when you build
|
||||
description:
|
||||
Win prizes of up to $500 for building on IPFS, especially when you build
|
||||
with the recent browser integrations at ETHDenver
|
||||
date: 2021-02-04 07:00:00 +0000
|
||||
permalink: "/2021-02-04-ethdenver-bounties/"
|
||||
permalink: '/2021-02-04-ethdenver-bounties/'
|
||||
translationKey: ''
|
||||
header_image: "/eth2.png"
|
||||
tags: conferences, community, Ethereum
|
||||
header_image: '/eth2.png'
|
||||
tags:
|
||||
- conferences
|
||||
- community
|
||||
- Ethereum
|
||||
author: Jenn Turner
|
||||
|
||||
---
|
||||
[ETHDenver 2021](https://www.ethdenver.com/) is in full swing, and as we mentioned in our [last post](https://blog.ipfs.io/2020-02-07-ethdenver-2020/) the IPFS community is very stoked to get to be a part of this unique and awesome event! To encourage folks to try IPFS for the first time, or the second time, or the forty-second time, we’ve put together the following bounties to inspire your creativity and challenge your #BUILDathon skills.
|
||||
|
||||
[ETHDenver 2021](https://www.ethdenver.com/) is in full swing, and as we mentioned in our [last post](https://blog.ipfs.io/2020-02-07-ethdenver-2020/) the IPFS community is very stoked to get to be a part of this unique and awesome event! To encourage folks to try IPFS for the first time, or the second time, or the forty-second time, we’ve put together the following bounties to inspire your creativity and challenge your #BUILDathon skills.
|
||||
|
||||
## IPFS Bounties for ETHDenver 2021
|
||||
|
||||
* 🦁 **Get Brave with IPFS**, $50: Using and demo’ing IPFS in your project with Brave desktop browser, Resources: https://brave.com/ipfs-support/.
|
||||
* ⭕️ **Go browsing with Opera + IPFS**, $50: Using and demo’ing IPFS in your project with Opera Android or Opera Touch on iOS, Resources: https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/
|
||||
* 📌 **IPFS Pinning Services API**, $500: Show us your best use of the new IPFS Pinning Services API, Resources: https://ipfs.github.io/pinning-services-api-spec/
|
||||
* 👻 **Hack Phantom Drift**, $500: Build libp2p node visualizers on the DHT, Resources: https://github.com/libp2p/go-libp2p/issues/947
|
||||
|
||||
### Best use of IPFS for X, $500 each, [resources here](https://docs.ipfs.io/concepts/usage-ideas-examples/)
|
||||
* 🤝 **Collaboration**: Let IPFS coordinate the flow of data between you and your colleagues, even when working offline or on a local network.
|
||||
* 📦 **Asset storage**: By storing small scripts or big databases of your project on IPFS, and depending on your architecture, you can yield several benefits.
|
||||
* 👾 **Gaming**: We want serverless online gaming, and we want it now!
|
||||
* 👷 **IPFS as infrastructure**: Using IPFS allows you to abstract away a lot of the complexity of coordination between machines. No matter your architecture IPFS handles load balancing, de-duplication, caching, and high availability out-of-the-box.
|
||||
* 🥷 **Decentralized identity**: Decentralized identity is a hot topic, and IPFS is one of the core technologies a lot of engineers build around.
|
||||
* 🙏 **Decentralizing the Web itself**: Some core pieces of the web are still centralized, making it more prone to break or being censored. IPFS can help and make the web more resilient.
|
||||
- 🦁 **Get Brave with IPFS**, \$50: Using and demo’ing IPFS in your project with Brave desktop browser, Resources: https://brave.com/ipfs-support/.
|
||||
- ⭕️ **Go browsing with Opera + IPFS**, \$50: Using and demo’ing IPFS in your project with Opera Android or Opera Touch on iOS, Resources: https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/
|
||||
- 📌 **IPFS Pinning Services API**, \$500: Show us your best use of the new IPFS Pinning Services API, Resources: https://ipfs.github.io/pinning-services-api-spec/
|
||||
- 👻 **Hack Phantom Drift**, \$500: Build libp2p node visualizers on the DHT, Resources: https://github.com/libp2p/go-libp2p/issues/947
|
||||
|
||||
### Best use of IPFS for X, \$500 each, [resources here](https://docs.ipfs.io/concepts/usage-ideas-examples/)
|
||||
|
||||
- 🤝 **Collaboration**: Let IPFS coordinate the flow of data between you and your colleagues, even when working offline or on a local network.
|
||||
- 📦 **Asset storage**: By storing small scripts or big databases of your project on IPFS, and depending on your architecture, you can yield several benefits.
|
||||
- 👾 **Gaming**: We want serverless online gaming, and we want it now!
|
||||
- 👷 **IPFS as infrastructure**: Using IPFS allows you to abstract away a lot of the complexity of coordination between machines. No matter your architecture IPFS handles load balancing, de-duplication, caching, and high availability out-of-the-box.
|
||||
- 🥷 **Decentralized identity**: Decentralized identity is a hot topic, and IPFS is one of the core technologies a lot of engineers build around.
|
||||
- 🙏 **Decentralizing the Web itself**: Some core pieces of the web are still centralized, making it more prone to break or being censored. IPFS can help and make the web more resilient.
|
||||
|
||||
If you have questions, please reach out at the IPFS Help Desk, located in the Spork Shill Zone, right next to the Textile booth. Our community will be happy to help you!
|
||||
|
||||
## Need a break from hacking?
|
||||
Be sure to check out these IPFS presentations during your breather.
|
||||
## Need a break from hacking?
|
||||
|
||||
Be sure to check out these IPFS presentations during your breather.
|
||||
|
||||
### Friday, February 5
|
||||
|
||||
### Friday, February 5
|
||||
1PM MST [Tune in on the Mainnet Livestream](http://twitch.tv/ethereumdenver)
|
||||
|
||||
* **IPFS: The Global CID**, technical workshop
|
||||
* Join Matt Ober, Co-founder and CTO of [Pinata](https://pinata.cloud/) for a technical glimpse into CIDs. Blockchain data is immutable and accessible in a decentralized way. Your off-chain data should be too. Learn how IPFS solves this and why the “Content Identifier” is crucial for projects storing data off-chain.
|
||||
- **IPFS: The Global CID**, technical workshop
|
||||
- Join Matt Ober, Co-founder and CTO of [Pinata](https://pinata.cloud/) for a technical glimpse into CIDs. Blockchain data is immutable and accessible in a decentralized way. Your off-chain data should be too. Learn how IPFS solves this and why the “Content Identifier” is crucial for projects storing data off-chain.
|
||||
|
||||
### Monday, February 8
|
||||
|
||||
10:15AM MST [Tune in on the Mainnet Livestream](http://twitch.tv/ethereumdenver)
|
||||
|
||||
* **Bridging Web2 <> Web3: IPFS x Opera integration**, panel
|
||||
* Join Dietrich Ayala, IPFS Ecosystem Lead, Igor Mandrigin Lead Crypto Researcher at Opera, Bradley Kam, Co-Founder at Unstoppable Domains, and moderator Susie Batt, Head of Global Crypto Community at Opera, for an inside look at how browsers and decentralized technologies are teaming up to push Web3 forward.
|
||||
- **Bridging Web2 <> Web3: IPFS x Opera integration**, panel
|
||||
- Join Dietrich Ayala, IPFS Ecosystem Lead, Igor Mandrigin Lead Crypto Researcher at Opera, Bradley Kam, Co-Founder at Unstoppable Domains, and moderator Susie Batt, Head of Global Crypto Community at Opera, for an inside look at how browsers and decentralized technologies are teaming up to push Web3 forward.
|
||||
|
||||
Stay tuned for talks from Textile, Ethereum Name Service, NEAR, Unstoppable Domains, Rarible, Ceramic, The Graph, 3Box Labs, AAVE, Polkadot, nuCypher, Cryptorado, Filecoin, Audius, Dappnode, Radicle, Chainlink, ConsenSys, and more!
|
||||
|
||||
So join us for talks, fun times in the [ETHDenver Discord](https://discord.gg/urUs9tqSXS) #ipfs channel, and—if you need it—come ask for help at the IPFS help desk! Happy BUIDLing, ETHDenver!
|
||||
So join us for talks, fun times in the [ETHDenver Discord](https://discord.gg/urUs9tqSXS) #ipfs channel, and—if you need it—come ask for help at the IPFS help desk! Happy BUIDLing, ETHDenver!
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
---
|
||||
date: 2021-01-21 07:00:00 +0000
|
||||
permalink: "/2021-01-21-how-we-put-ipfs-in-brave/"
|
||||
permalink: '/2021-01-21-how-we-put-ipfs-in-brave/'
|
||||
translationKey: ''
|
||||
tags: browsers
|
||||
header_image: "/2021-01-21-how-we-put-ipfs-in-brave.jpg"
|
||||
tags:
|
||||
- browsers
|
||||
header_image: '/2021-01-21-how-we-put-ipfs-in-brave.jpg'
|
||||
title: How we put IPFS in Brave
|
||||
description: This integration marks a major milestone for IPFS, and lays the groundwork
|
||||
description:
|
||||
This integration marks a major milestone for IPFS, and lays the groundwork
|
||||
for further experiments into improving the experience of interacting with the network
|
||||
via web browsers.
|
||||
author: Mitch Wagner
|
||||
|
||||
---
|
||||
|
||||
You may have heard the news: as of [release 1.19.86](https://github.com/brave/brave-browser/releases/tag/v1.19.86), the Brave browser has officially added [InterPlanetary File System (IPFS)](https://blog.ipfs.io/2021-01-19-ipfs-in-brave/) support! This work is the result of a multi-year effort to bring the two projects together. In this post, we discuss the process in bringing this collaboration to fruition, and take a look under the hood to see how we accomplished this integration!
|
||||
|
||||
## Collaboration
|
||||
@@ -56,8 +58,8 @@ This integration marks a major milestone for IPFS, and lays the groundwork for f
|
||||
|
||||
In particular, having native URI resolution in the browser’s address bar opens up a number of different research questions. How should new concepts, like the integrity guarantees IPFS affords, be communicated to users? How do we explain the principles of peer-to-peer networking to a large user base? And perhaps most importantly, how do we bring awareness of non-traditional URIs to users, and help them acclimate to a world where links are preceded by letters other than “http”?
|
||||
|
||||
Indeed, such research is [already underway](https://github.com/ipfs/browser-design-guidelines), particularly in the [mobile space](https://blog.ipfs.io/2020-04-24-ipfs-mobile-design-research-findings/), thanks to the introduction of IPFS in the [Opera for Android browser](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/) last year. Nevertheless, there remains a tremendous amount of work to do. By integrating with Brave, the IPFS network extends its reach to millions of potential participants - people from every background imaginable. New interfaces and metaphors are needed to make interaction simple, intuitive, and accessible for all of these users.
|
||||
Indeed, such research is [already underway](https://github.com/ipfs/browser-design-guidelines), particularly in the [mobile space](https://blog.ipfs.io/2020-04-24-ipfs-mobile-design-research-findings/), thanks to the introduction of IPFS in the [Opera for Android browser](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/) last year. Nevertheless, there remains a tremendous amount of work to do. By integrating with Brave, the IPFS network extends its reach to millions of potential participants - people from every background imaginable. New interfaces and metaphors are needed to make interaction simple, intuitive, and accessible for all of these users.
|
||||
|
||||
IPFS’s collaboration with Brave also provides further momentum for changes taking place with browser ecosystems. This includes increasing the URIs and network protocols browsers are capable of recognizing - the IANA standards body recently approved a number of URI schemes, including [ipfs and ipns](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml) - as well as pushing to introduce native handling of these protocols in the browser itself, rather than delegating that functionality to separate applications or third-party gateways.
|
||||
|
||||
In short, this integration opens a whole new chapter for IPFS, and represents a significant step toward mainstream embrace of a [content-addressed](https://docs.ipfs.io/concepts/content-addressing/) web. Through collaborations and research, IPFS is becoming increasingly accessible and easy to use, extending the reach of the distributed web further than ever before.
|
||||
In short, this integration opens a whole new chapter for IPFS, and represents a significant step toward mainstream embrace of a [content-addressed](https://docs.ipfs.io/concepts/content-addressing/) web. Through collaborations and research, IPFS is becoming increasingly accessible and easy to use, extending the reach of the distributed web further than ever before.
|
||||
|
||||
@@ -2,13 +2,15 @@
|
||||
title: Introducing js-IPFS 0.54.0
|
||||
description: js-IPFS 0.54.0 brings UPnP NAT Hole Punching to your js-IPFS node
|
||||
date: 2021-02-03 07:00:00 +0000
|
||||
permalink: "/2021-02-03-js-ipfs-0-54/"
|
||||
permalink: '/2021-02-03-js-ipfs-0-54/'
|
||||
translationKey: ''
|
||||
header_image: "/header-image-js-ipfs-placeholder.png"
|
||||
tags: js-ipfs, breaking change
|
||||
header_image: '/header-image-js-ipfs-placeholder.png'
|
||||
tags:
|
||||
- js-ipfs
|
||||
- breaking change
|
||||
author: Alex Potsides
|
||||
|
||||
---
|
||||
|
||||
## 🔦 Highlights
|
||||
|
||||
> NAT UPnP Hole Punching
|
||||
@@ -60,7 +62,7 @@ You can disable this feature by passing [`repoAutoMigrate: false`](https://githu
|
||||
|
||||
```js
|
||||
const node = await IPFS.create({
|
||||
repoAutoMigrate: false
|
||||
repoAutoMigrate: false,
|
||||
})
|
||||
```
|
||||
|
||||
@@ -68,20 +70,20 @@ Though if you do this, you should give your users some way of upgrading because
|
||||
|
||||
## ✨New features
|
||||
|
||||
* enable upnp nat hole punching ([#3426](https://github.com/ipfs/js-ipfs/pull/3426))
|
||||
* support remote pinning services in ipfs-http-client ([#3293](https://github.com/ipfs/js-ipfs/issues/3293)) ([ba240fd](https://github.com/ipfs/js-ipfs/commit/ba240fdf93edc88028315483240d7822a7ca88ed))
|
||||
- enable upnp nat hole punching ([#3426](https://github.com/ipfs/js-ipfs/pull/3426))
|
||||
- support remote pinning services in ipfs-http-client ([#3293](https://github.com/ipfs/js-ipfs/issues/3293)) ([ba240fd](https://github.com/ipfs/js-ipfs/commit/ba240fdf93edc88028315483240d7822a7ca88ed))
|
||||
|
||||
### 🔨 Breaking changes
|
||||
|
||||
* ipfs-repo upgrade requires repo migration to v10 in the browser
|
||||
- ipfs-repo upgrade requires repo migration to v10 in the browser
|
||||
|
||||
### 🕷️ Bug fixes
|
||||
|
||||
* updates webpack example to use v5 ([#3512](https://github.com/ipfs/js-ipfs/issues/3512)) ([c7110db](https://github.com/ipfs/js-ipfs/commit/c7110db71b5c0f0f9f415f31f91b5b228341e13e)), closes [#3511](https://github.com/ipfs/js-ipfs/issues/3511)
|
||||
* issue with isolateModules flag ([#3495](https://github.com/ipfs/js-ipfs/pull/3495))
|
||||
* use https agent for https requests ([#3490](https://github.com/ipfs/js-ipfs/pull/3490))
|
||||
* update deps ([#3514](https://github.com/ipfs/js-ipfs/issues/3514)) ([061d77c](https://github.com/ipfs/js-ipfs/commit/061d77cc03f40af5a3bc3590481e1e5836e7f0d8))
|
||||
* document the ipfs http client constructor arguments ([#3478](https://github.com/ipfs/js-ipfs/pull/3478))
|
||||
- updates webpack example to use v5 ([#3512](https://github.com/ipfs/js-ipfs/issues/3512)) ([c7110db](https://github.com/ipfs/js-ipfs/commit/c7110db71b5c0f0f9f415f31f91b5b228341e13e)), closes [#3511](https://github.com/ipfs/js-ipfs/issues/3511)
|
||||
- issue with isolateModules flag ([#3495](https://github.com/ipfs/js-ipfs/pull/3495))
|
||||
- use https agent for https requests ([#3490](https://github.com/ipfs/js-ipfs/pull/3490))
|
||||
- update deps ([#3514](https://github.com/ipfs/js-ipfs/issues/3514)) ([061d77c](https://github.com/ipfs/js-ipfs/commit/061d77cc03f40af5a3bc3590481e1e5836e7f0d8))
|
||||
- document the ipfs http client constructor arguments ([#3478](https://github.com/ipfs/js-ipfs/pull/3478))
|
||||
|
||||
## 🗺️ What’s next?
|
||||
|
||||
@@ -91,43 +93,43 @@ Only large features are called out in the roadmap, expect lots of small bugfix r
|
||||
|
||||
## 😍 Huge thank you to everyone that made this release possible
|
||||
|
||||
* [@achingbrain](https://github.com/achingbrain) (60 commits, 24 PRs, 1 issue, 44 comments)
|
||||
* [@acolytec3](https://github.com/acolytec3) (1 comment)
|
||||
* [@acostalima](https://github.com/acostalima) (2 PRs, 5 comments)
|
||||
* [@andrew](https://github.com/andrew) (1 PR)
|
||||
* [@aphelionz](https://github.com/aphelionz) (1 comment)
|
||||
* [@cndolo](https://github.com/cndolo) (1 comment)
|
||||
* [@codecov-io](https://github.com/codecov-io) (1 comment)
|
||||
* [@CSDUMMI](https://github.com/CSDUMMI) (1 issue)
|
||||
* [@david0178418](https://github.com/david0178418) (1 comment)
|
||||
* [@ericspt](https://github.com/ericspt) (1 issue)
|
||||
* [@FledgeXu](https://github.com/FledgeXu) (1 issue)
|
||||
* [@geolffreym](https://github.com/geolffreym) (1 issue, 1 comment)
|
||||
* [@Gozala](https://github.com/Gozala) (2 commits, 1 PR, 1 issue, 9 comments)
|
||||
* [@HexaField](https://github.com/HexaField) (1 comment)
|
||||
* [@hueimin426](https://github.com/hueimin426) (1 comment)
|
||||
* [@hugomrdias](https://github.com/hugomrdias) (11 commits, 5 PRs, 1 issue, 16 comments)
|
||||
* [@icidasset](https://github.com/icidasset) (1 PR, 7 comments)
|
||||
* [@ikreymer](https://github.com/ikreymer) (2 comments)
|
||||
* [@jacobheun](https://github.com/jacobheun) (2 commits, 7 comments)
|
||||
* [@julien51](https://github.com/julien51) (1 comment)
|
||||
* [@lacker](https://github.com/lacker) (1 commit, 1 PR, 1 issue, 3 comments)
|
||||
* [@lidel](https://github.com/lidel) (1 commit, 1 PR, 4 comments)
|
||||
* [@mburns](https://github.com/mburns) (1 commit)
|
||||
* [@mtiger2k](https://github.com/mtiger2k) (2 comments)
|
||||
* [@pestopancake](https://github.com/pestopancake) (1 issue)
|
||||
* [@raphael10-collab](https://github.com/raphael10-collab) (7 issues, 12 comments)
|
||||
* [@rob-deutsch](https://github.com/rob-deutsch) (1 PR)
|
||||
* [@robertkiel](https://github.com/robertkiel) (1 issue)
|
||||
* [@samlior](https://github.com/samlior) (1 commit, 1 PR, 2 comments)
|
||||
* [@stale](undefined) (2 comments)
|
||||
* [@tymmesyde](https://github.com/tymmesyde) (1 PR, 2 issues)
|
||||
* [@valmack](https://github.com/valmack) (1 issue, 2 comments)
|
||||
* [@vasco-santos](https://github.com/vasco-santos) (50 commits, 13 PRs, 2 issues, 36 comments)
|
||||
* [@vmx](https://github.com/vmx) (3 comments)
|
||||
* [@vogdb](https://github.com/vogdb) (1 PR, 1 issue, 4 comments)
|
||||
* [@wemeetagain](https://github.com/wemeetagain) (1 issue)
|
||||
* [@whydna](https://github.com/whydna) (1 comment)
|
||||
- [@achingbrain](https://github.com/achingbrain) (60 commits, 24 PRs, 1 issue, 44 comments)
|
||||
- [@acolytec3](https://github.com/acolytec3) (1 comment)
|
||||
- [@acostalima](https://github.com/acostalima) (2 PRs, 5 comments)
|
||||
- [@andrew](https://github.com/andrew) (1 PR)
|
||||
- [@aphelionz](https://github.com/aphelionz) (1 comment)
|
||||
- [@cndolo](https://github.com/cndolo) (1 comment)
|
||||
- [@codecov-io](https://github.com/codecov-io) (1 comment)
|
||||
- [@CSDUMMI](https://github.com/CSDUMMI) (1 issue)
|
||||
- [@david0178418](https://github.com/david0178418) (1 comment)
|
||||
- [@ericspt](https://github.com/ericspt) (1 issue)
|
||||
- [@FledgeXu](https://github.com/FledgeXu) (1 issue)
|
||||
- [@geolffreym](https://github.com/geolffreym) (1 issue, 1 comment)
|
||||
- [@Gozala](https://github.com/Gozala) (2 commits, 1 PR, 1 issue, 9 comments)
|
||||
- [@HexaField](https://github.com/HexaField) (1 comment)
|
||||
- [@hueimin426](https://github.com/hueimin426) (1 comment)
|
||||
- [@hugomrdias](https://github.com/hugomrdias) (11 commits, 5 PRs, 1 issue, 16 comments)
|
||||
- [@icidasset](https://github.com/icidasset) (1 PR, 7 comments)
|
||||
- [@ikreymer](https://github.com/ikreymer) (2 comments)
|
||||
- [@jacobheun](https://github.com/jacobheun) (2 commits, 7 comments)
|
||||
- [@julien51](https://github.com/julien51) (1 comment)
|
||||
- [@lacker](https://github.com/lacker) (1 commit, 1 PR, 1 issue, 3 comments)
|
||||
- [@lidel](https://github.com/lidel) (1 commit, 1 PR, 4 comments)
|
||||
- [@mburns](https://github.com/mburns) (1 commit)
|
||||
- [@mtiger2k](https://github.com/mtiger2k) (2 comments)
|
||||
- [@pestopancake](https://github.com/pestopancake) (1 issue)
|
||||
- [@raphael10-collab](https://github.com/raphael10-collab) (7 issues, 12 comments)
|
||||
- [@rob-deutsch](https://github.com/rob-deutsch) (1 PR)
|
||||
- [@robertkiel](https://github.com/robertkiel) (1 issue)
|
||||
- [@samlior](https://github.com/samlior) (1 commit, 1 PR, 2 comments)
|
||||
- [@stale](undefined) (2 comments)
|
||||
- [@tymmesyde](https://github.com/tymmesyde) (1 PR, 2 issues)
|
||||
- [@valmack](https://github.com/valmack) (1 issue, 2 comments)
|
||||
- [@vasco-santos](https://github.com/vasco-santos) (50 commits, 13 PRs, 2 issues, 36 comments)
|
||||
- [@vmx](https://github.com/vmx) (3 comments)
|
||||
- [@vogdb](https://github.com/vogdb) (1 PR, 1 issue, 4 comments)
|
||||
- [@wemeetagain](https://github.com/wemeetagain) (1 issue)
|
||||
- [@whydna](https://github.com/whydna) (1 comment)
|
||||
|
||||
## 🙌🏽 Want to contribute?
|
||||
|
||||
@@ -141,17 +143,17 @@ Would you like to contribute to the IPFS project and don’t know how? Well, the
|
||||
|
||||
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.
|
||||
|
||||
[UnixFS]: https://docs.ipfs.io/guides/concepts/unixfs/
|
||||
[CID]: https://docs.ipfs.io/guides/concepts/cid/
|
||||
[MFS]: https://docs.ipfs.io/guides/concepts/mfs/
|
||||
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
|
||||
[cid]: https://docs.ipfs.io/guides/concepts/cid/
|
||||
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
|
||||
[libp2p]: https://github.com/libp2p/js-libp2p
|
||||
[ipld]: https://github.com/ipld/js-ipld
|
||||
[AbortSignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
|
||||
[Multihash]: https://multiformats.io/multihash
|
||||
[DHT]: https://docs.ipfs.io/concepts/dht/
|
||||
[Multiaddr]: https://multiformats.io/multiaddr/
|
||||
[DAG]: https://docs.ipfs.io/concepts/merkle-dag/
|
||||
[Core-API]: https://github.com/ipfs/js-ipfs/tree/master/docs/core-api
|
||||
[gRPC]: https://en.wikipedia.org/wiki/GRPC
|
||||
[gRPC-web]: https://github.com/grpc/grpc-web
|
||||
[TLS]: https://en.wikipedia.org/wiki/Transport_Layer_Security
|
||||
[abortsignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
|
||||
[multihash]: https://multiformats.io/multihash
|
||||
[dht]: https://docs.ipfs.io/concepts/dht/
|
||||
[multiaddr]: https://multiformats.io/multiaddr/
|
||||
[dag]: https://docs.ipfs.io/concepts/merkle-dag/
|
||||
[core-api]: https://github.com/ipfs/js-ipfs/tree/master/docs/core-api
|
||||
[grpc]: https://en.wikipedia.org/wiki/GRPC
|
||||
[grpc-web]: https://github.com/grpc/grpc-web
|
||||
[tls]: https://en.wikipedia.org/wiki/Transport_Layer_Security
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
date: 2021-01-15 07:00:00 +0000
|
||||
url: '/2021-01-15-ipfs-and-igalia-collaborate-on-dweb-in-browsers/'
|
||||
translationKey: ''
|
||||
tags: community, browsers
|
||||
header_image: '/ipfs-and-igalia-collaborate-on-dweb-in-browsers-header-image.png'
|
||||
title: IPFS and Igalia collaborate on dweb in browsers
|
||||
description:
|
||||
@@ -10,6 +9,9 @@ description:
|
||||
in Chromium, Firefox, and WebKit and help the distributed web community. This blog
|
||||
post provides an overview of the 2020 accomplishments, as well as future work.
|
||||
author: Frédéric Wang, Dietrich Ayala
|
||||
tags:
|
||||
- community
|
||||
- browsers
|
||||
---
|
||||
|
||||
## TL;DR
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
date: 2020-11-19 07:00:00 +0000
|
||||
permalink: '/2020-11-19-community-rfp/'
|
||||
translationKey: ''
|
||||
tags: project planning, community
|
||||
header_image: '/113-community-rfp.jpg'
|
||||
title: 'IPFS in 2021: Call for Proposals'
|
||||
description: ''
|
||||
author: David Choi, Kadir Topal
|
||||
tags:
|
||||
- project planning
|
||||
- community
|
||||
---
|
||||
|
||||
# 2021 IPFS Project Planning
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
date: 2020-12-21 07:00:00 +0000
|
||||
permalink: '/2020-12-21-ipfs-in-2021/'
|
||||
translationKey: ''
|
||||
tags: project planning, community
|
||||
header_image: '/114-ipfs-2021.jpg'
|
||||
title: 'IPFS in 2021: Thank You for Your Proposals!'
|
||||
description: ''
|
||||
author: David Choi, Kadir Topal
|
||||
tags:
|
||||
- project planning
|
||||
- community
|
||||
---
|
||||
|
||||
In November, [we asked the IPFS community to nominate and discuss potential themes](/2020-11-19-community-rfp/) for the project to tackle in 2021. It’s been amazing to see the insight, creativity, and passion from this amazing community to better understand where the IPFS Project needs to improve, upgrade, and focus in 2021. Using the thinking surfaced, we hope to help synthesize a few broad areas of work that the project could focus on next year (and even beyond) - and share those back with the community for feedback in January.
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
---
|
||||
date: 2021-01-19 07:00:00 +0000
|
||||
permalink: "/2021-01-19-ipfs-in-brave/"
|
||||
permalink: '/2021-01-19-ipfs-in-brave/'
|
||||
translationKey: ''
|
||||
tags: browsers
|
||||
header_image: "/2021-01-19-ipfs-in-brave.png"
|
||||
tags:
|
||||
- browsers
|
||||
header_image: '/2021-01-19-ipfs-in-brave.png'
|
||||
title: IPFS in Brave - Native Access to the Distributed Web
|
||||
description: Announcing the integration of IPFS in the Brave browser, completing the
|
||||
description:
|
||||
Announcing the integration of IPFS in the Brave browser, completing the
|
||||
vision of a native distributed web experience in a modern web browser.
|
||||
author: Dietrich Ayala
|
||||
|
||||
---
|
||||
|
||||
We are excited to announce that IPFS is now natively supported in the Brave web browser. With [over 20 million users](https://brave.com/20m-mau/), Brave has made the distributed web easily available for the people who need it most. This is the first time a major browser has implemented native support for IPFS, and is a major step towards a more resilient, user-first internet.
|
||||
|
||||
While the IPFS protocol is still in development, making it more easily available is important for users who have real problems in their daily online lives - internet outages and shutdowns, censorship of critical information such as COVID-19 news, high cost of internet access, and the ability to share and collaborate in offline or disconnected environments. These aren’t problems everyone has, and people who don’t have these problems at all may not understand why IPFS is so important. But for those who desperately need a resilient internet that puts them in control of their online experiences, IPFS is now just one-click to install in the Brave browser.
|
||||
@@ -46,12 +48,12 @@ In 2020, [we started working with Igalia](https://blog.ipfs.io/2021-01-15-ipfs-a
|
||||
|
||||
This initial release of native support for IPFS in Brave provides basic node functionality. There’s still a lot to do - here’s a list of some planned work for this year, and areas we’d like to experiment in, as well:
|
||||
|
||||
* Improve performance and stability - reduce memory, CPU, and bandwidth use
|
||||
* Ease both publishing and sharing of IPFS content in browser UI
|
||||
* Add features for revisitation, co-hosting, and offline/local collaboration
|
||||
* Define the application model for IPFS web apps
|
||||
* Experiment with integrating the features and economic models of Basic Attention Token and Filecoin
|
||||
* Develop the security and privacy user interface and visual language for IPFS in the browser address bar
|
||||
* Add IPFS support to Brave’s Android browser
|
||||
- Improve performance and stability - reduce memory, CPU, and bandwidth use
|
||||
- Ease both publishing and sharing of IPFS content in browser UI
|
||||
- Add features for revisitation, co-hosting, and offline/local collaboration
|
||||
- Define the application model for IPFS web apps
|
||||
- Experiment with integrating the features and economic models of Basic Attention Token and Filecoin
|
||||
- Develop the security and privacy user interface and visual language for IPFS in the browser address bar
|
||||
- Add IPFS support to Brave’s Android browser
|
||||
|
||||
[Install Brave now!](https://brave.com/) Try the IPFS features and let us know how it went. You can report issues in [Brave’s GitHub repo](https://github.com/brave/brave-browser), in the [IPFS In Web Browsers](https://github.com/ipfs/in-web-browsers) repo, or join us in discussion on the [IPFS forums](https://discuss.ipfs.io/).
|
||||
[Install Brave now!](https://brave.com/) Try the IPFS features and let us know how it went. You can report issues in [Brave’s GitHub repo](https://github.com/brave/brave-browser), in the [IPFS In Web Browsers](https://github.com/ipfs/in-web-browsers) repo, or join us in discussion on the [IPFS forums](https://discuss.ipfs.io/).
|
||||
|
||||
@@ -1,20 +1,25 @@
|
||||
---
|
||||
title: IPFS in Opera Touch on iOS!
|
||||
description: Opera has now added support for IPFS addressing to Opera Touch, their
|
||||
description:
|
||||
Opera has now added support for IPFS addressing to Opera Touch, their
|
||||
mobile browser for iOS.
|
||||
date: 2021-02-08 17:00:00 +0000
|
||||
permalink: "/2021-02-08-opera-ios-and-ipfs/"
|
||||
translationKey: ''
|
||||
header_image: "/opera-ipfs-header.png"
|
||||
tags: browsers, mobile
|
||||
header_image: '/opera-ipfs-header.png'
|
||||
tags:
|
||||
- ipfs
|
||||
- browsers
|
||||
- opera
|
||||
- mobile
|
||||
author: Dietrich Ayala
|
||||
|
||||
---
|
||||
In 2020 we announced a big moment for IPFS: The first official support of IPFS protocol addressing in a major browser, when [Opera released IPFS support in their Android browser](ipns://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/ "Opera Android IPFS announcement"). This was an important step in IPFS browser support generally, by building interest and momentum. We didn’t stop there, and we’ve got not just one… BUT TWO releases to share with you today:
|
||||
|
||||
In 2020 we announced a big moment for IPFS: The first official support of IPFS protocol addressing in a major browser, when [Opera released IPFS support in their Android browser](ipns://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/ 'Opera Android IPFS announcement'). This was an important step in IPFS browser support generally, by building interest and momentum. We didn’t stop there, and we’ve got not just one… BUT TWO releases to share with you today:
|
||||
|
||||
First, Opera has now added support for IPFS addressing to Opera Touch, their iOS browser.
|
||||
|
||||

|
||||

|
||||
|
||||
Second, support for IPFS addressing in Opera desktop browser for Windows, macOS and Linux will be coming in their next release, currently planned for March 2021.
|
||||
|
||||
@@ -36,4 +41,4 @@ Native representation of IPFS addresses in browsers even when the content is loa
|
||||
|
||||
Opera desktop browser support for IPFS addressing will ship soon, and we’re discussing what additional features to add next to build on top of this foundation of universal addressing support across the Opera browser line.
|
||||
|
||||
[Install Opera Touch on iOS now!](https://apps.apple.com/us/app/opera-touch-web-browser/id1411869974)
|
||||
[Install Opera Touch on iOS now!](https://apps.apple.com/us/app/opera-touch-web-browser/id1411869974)
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
---
|
||||
title: Join us at ETHDenver 2021, year of the Spork Marmot!
|
||||
description: Return of the IPFS Help Desk, plus join us for a full day of hacking
|
||||
description:
|
||||
Return of the IPFS Help Desk, plus join us for a full day of hacking
|
||||
IPFS!
|
||||
date: 2021-02-02 07:00:00 +0000
|
||||
permalink: "/2021-02-02-ipfs-at-ethdenver/"
|
||||
permalink: '/2021-02-02-ipfs-at-ethdenver/'
|
||||
translationKey: ''
|
||||
header_image: "/eth1.png"
|
||||
tags: conferences, community, Ethereum
|
||||
header_image: '/eth1.png'
|
||||
tags:
|
||||
- conferences
|
||||
- community
|
||||
- Ethereum
|
||||
author: Jenn Turner
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
It’s hard to explain what [ETHDenver](https://www.ethdenver.com/) is, exactly. Is it a conference? Yes. Is it a hackathon? Is it a week of technical workshops directed by industry leaders? Yes. Is it an art exhibition? Also, yes. Is it a live dj set? Again, yes. But even those labels don’t do justice to the magic that happens when all of those things combine and settle on the Denver tech scene.
|
||||
@@ -20,10 +24,10 @@ That is why we’re so excited to be part of this year’s ETHDenver, which is 1
|
||||
|
||||
In years past, the IPFS community has had a large presence at ETHDenver, partially due to the incredibly welcoming and encouraging decentralization community built locally in Denver. [Last year](https://blog.ipfs.io/2020-02-07-ethdenver-2020/), we were truly blown away by how much we saw the ETHDenver community embrace IPFS. After all was said and done:
|
||||
|
||||
* 24 out of 52 submissions utilized IPFS in their project, with
|
||||
* 8 of the 16 finalist projects, and
|
||||
* 3 out of the 5 winners triumphing, having used IPFS.
|
||||
* And 80+ bounties were awarded for using IPFS!
|
||||
- 24 out of 52 submissions utilized IPFS in their project, with
|
||||
- 8 of the 16 finalist projects, and
|
||||
- 3 out of the 5 winners triumphing, having used IPFS.
|
||||
- And 80+ bounties were awarded for using IPFS!
|
||||
|
||||
Not only that, last year [Cryptorado](https://cryptorado.org/#/) organized the [Decentralized Network Summit](https://dnsummit.cryptorado.org/), inviting the IPFS community to a day full of speakers and workshops from the folks at 3Box, NEAR, Unstoppable Domains, Pinata, Tupelo, Textile, Kauri, The Graph and more, drawing 100+ attendees. It was a wonderful day full of meeting and making new friends, enjoying the company of old ones, and most importantly, intriguing conversations.
|
||||
|
||||
@@ -35,12 +39,12 @@ Since we can’t be together in Denver for another full day of Decentralized Sum
|
||||
|
||||
**Hack the Help Desk! Tuesday, February 9** (all times local to Denver, Mountain Time)
|
||||
|
||||
* Session 1: Virtual Castle at Help Desk - 9am to 11am
|
||||
* Session 2: TBD Zoom - 11am to 1pm
|
||||
* Session 3: TBD Zoom - 1pm to 3pm
|
||||
- Session 1: Virtual Castle at Help Desk - 9am to 11am
|
||||
- Session 2: TBD Zoom - 11am to 1pm
|
||||
- Session 3: TBD Zoom - 1pm to 3pm
|
||||
|
||||
We are so excited to be a part of this amazing experience once again, and stay tuned for more information on our bounties and IPFS community presentations! We can’t wait to share more with you very soon, but for now, make sure you won’t miss out!
|
||||
|
||||
Join us! [Register to attend ETHDenver 2021](https://www.ethdenver.com/).
|
||||
|
||||

|
||||

|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
date: 2020-10-29 06:00:00 +0000
|
||||
permalink: '/2020-10-29-js-ipfs-0-50/'
|
||||
translationKey: ''
|
||||
tags: js-ipfs, SECIO
|
||||
header_image: '/js-ipfs-placeholder-header-image.png'
|
||||
header_image: '/header-image-js-ipfs-placeholder.png'
|
||||
title: js-IPFS 0.51.0 adds type definitions and removes SECIO
|
||||
description: ''
|
||||
author: Alex Potsides
|
||||
tags:
|
||||
- js-ipfs
|
||||
- SECIO
|
||||
---
|
||||
|
||||
# 🔦 Highlights
|
||||
|
||||
+273
-265
@@ -2,269 +2,277 @@
|
||||
title: News Coverage
|
||||
type: News coverage
|
||||
data:
|
||||
- name: Brave Becomes First Browser to Offer Native IPFS Integration (Coindesk)
|
||||
title: Brave Becomes First Browser to Offer Native IPFS Integration (Coindesk)
|
||||
path: https://www.coindesk.com/brave-browser-native-ipfs-integration-decentralized-web
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags: browsers
|
||||
card_image: "/2021-01-19-news-brave-coindesk.png"
|
||||
- name: Brave browser now supports peer-to-peer IPFS protocol (Engadget)
|
||||
title: Brave browser now supports peer-to-peer IPFS protocol (Engadget)
|
||||
path: https://www.engadget.com/brave-ipfs-update-190545662.html
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: "/2021-01-19-news-brave-engadget.png"
|
||||
- name: How to Use the Uncensorable Web on Privacy Browser Brave (Decrypt)
|
||||
title: How to Use the Uncensorable Web on Privacy Browser Brave (Decrypt)
|
||||
path: https://decrypt.co/54686/how-to-use-the-uncensorable-web-on-privacy-browser-brave
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: "/2021-01-19-news-brave-decrypt.png"
|
||||
- name: Brave Becomes First Browser to Add Native IPFS Support (ZDNet)
|
||||
title: Brave Becomes First Browser to Add Native IPFS Support (ZDNet)
|
||||
path: https://www.zdnet.com/article/brave-becomes-first-browser-to-add-native-support-for-the-ipfs-protocol/
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: "/2021-01-19-news-brave-zdnet.png"
|
||||
- name: Brave Integrates IPFS (Brave Blog)
|
||||
title: Brave Integrates IPFS (Brave Blog)
|
||||
path: https://brave.com/brave-integrates-ipfs/
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags: ''
|
||||
card_image: "/2021-01-19-news-brave-braveblog.png"
|
||||
- name: Brave Bets on the Decentralized Web (The Register)
|
||||
title: Brave Bets on the Decentralized Web (The Register)
|
||||
path: https://www.theregister.com/2021/01/19/brave_decentralized_browser/
|
||||
date:
|
||||
tags: ''
|
||||
- name: Brave Takes Step Towards Enabling a Decentralized Web (The Verge)
|
||||
title: Brave Takes Step Towards Enabling a Decentralized Web (The Verge)
|
||||
path: https://www.theverge.com/2021/1/19/22238334/brave-browser-ipfs-peer-to-peer-decentralized-transfer-protocol-http-nodes
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: "/2021-01-19-news-brave-verge.png"
|
||||
- name: We Need Alternatives to Big Tech; These Decentralized Tools Might Be The Answer
|
||||
(New America)
|
||||
title: We Need Alternatives to Big Tech; These Decentralized Tools Might Be The
|
||||
Answer (New America)
|
||||
path: https://www.newamerica.org/oti/blog/decentralization-competition/
|
||||
date: 2021-01-12T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: "/2021-01-12-news-bigtech-newamerica.png"
|
||||
- name: Cloudflare Unveils Gateway to Distributed Web With ENS, IPFS Integration
|
||||
title: Cloudflare Unveils Gateway to Distributed Web With ENS, IPFS Integration
|
||||
path: https://www.coindesk.com/cloudflare-unveils-gateway-to-distributed-web-with-ens-ipfs-integration
|
||||
date: 2021-01-13T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
- " static publishing"
|
||||
card_image: "/2021-01-13-news-cloudflare-coindesk.png"
|
||||
- name: 'Juan Benet: From Idea to Action (CoinDesk)'
|
||||
title: 'Juan Benet: From Idea to Action (CoinDesk)'
|
||||
path: https://www.coindesk.com/juan-benet-most-influential-2020
|
||||
date: 2020-12-09T00:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
card_image: "/2020-12-08-news-juanbenet-coindesk.png"
|
||||
- name: IPFS is paving the way for a new digital economy (Modern Consensus)
|
||||
title: IPFS is paving the way for a new digital economy (Modern Consensus)
|
||||
path: https://modernconsensus.com/commentary/opinion/ipfs-is-paving-the-way-for-a-new-digital-economy/
|
||||
date: 2020-10-08T06:00:00.000+00:00
|
||||
card_image: "/2020-10-08-digitaleconomy-modernconsensus.png"
|
||||
- name: The Decentralized Web Could Help Preserve The Internet’s Data For 1,000 Years.
|
||||
Here’s Why We Need IPFS To Build It (TechDirt)
|
||||
title: The Decentralized Web Could Help Preserve The Internet’s Data For 1,000 Years.
|
||||
Here’s Why We Need IPFS To Build It (TechDirt)
|
||||
path: https://www.techdirt.com/articles/20200504/16050844431/decentralized-web-could-help-preserve-internets-data-1000-years-heres-why-we-need-ipfs-to-build-it.shtml#
|
||||
date: 2020-05-05T06:00:00.000+00:00
|
||||
- name: Latest Version of Open Source IPFS Improves Performance (DevOps.com)
|
||||
title: Latest Version of Open Source IPFS Improves Performance (DevOps.com)
|
||||
path: https://devops.com/latest-version-of-open-source-ipfs-improves-performance/
|
||||
date: 2020-04-30T06:00:00.000+00:00
|
||||
tags:
|
||||
- go-ipfs
|
||||
card_image: "/2020-04-30-news-latestipfs-devops.png"
|
||||
- name: Decentralized Web Protocol IPFS Has Its Biggest Update So Far (Cointelegraph)
|
||||
title: Decentralized Web Protocol IPFS Has Its Biggest Update So Far (Cointelegraph)
|
||||
path: https://cointelegraph.com/news/decentralized-web-protocol-ipfs-has-its-biggest-update-so-far
|
||||
date: 2020-04-28T06:00:00.000+00:00
|
||||
tags:
|
||||
- go-ipfs
|
||||
card_image: "/2020-04-28-latestipfs-cointelegraph.png"
|
||||
- name: InterPlanetary File System Is Uncensorable During Coronavirus News Fog (Coindesk)
|
||||
title: InterPlanetary File System Is Uncensorable During Coronavirus News Fog (Coindesk)
|
||||
path: https://www.coindesk.com/interplanetary-file-system-is-uncensorable-during-coronavirus-news-fog
|
||||
date: 2020-03-18T06:00:00.000+00:00
|
||||
tags:
|
||||
- censorship
|
||||
card_image: "/2020-03-18-covid-coindesk.png"
|
||||
- name: IPFS Emerges as Tool to Distribute Container Images (Container Journal)
|
||||
title: IPFS Emerges as Tool to Distribute Container Images (Container Journal)
|
||||
path: https://containerjournal.com/topics/container-management/ipfs-emerges-as-tool-to-distribute-container-images/
|
||||
date: 2020-03-02T07:00:00.000+00:00
|
||||
tags: Docker, containerization
|
||||
card_image: "/2020-03-02-news-images-containerjournal.png"
|
||||
- name: IPFS, libp2p and Filecoin with Juan Benet (Zero Knowledge)
|
||||
title: IPFS, libp2p and Filecoin with Juan Benet (Zero Knowledge)
|
||||
path: https://www.zeroknowledge.fm/106?t=0
|
||||
date: 2019-12-04T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
card_image: "/2020-03-02-news-juanbenet-zeroknowledge.png"
|
||||
- name: Enterprise IPFS for True Supply Chain Provenance (RTrade)
|
||||
title: Enterprise IPFS for True Supply Chain Provenance (RTrade)
|
||||
path: https://medium.com/rtrade-technologies/enterprise-ipfs-for-true-supply-chain-provenance-part-1-89524337f27
|
||||
date: 2019-09-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
card_image: "/2019-09-06-news-supplychain-rtrade.png"
|
||||
- name: IFPS — Technology That's Out of This World (Sprint)
|
||||
title: IFPS — Technology That's Out of This World (Sprint)
|
||||
path: https://web.archive.org/web/20200221031918/https://business.sprint.com/blog/ipfs-technology/
|
||||
date: 2019-05-22 06:00:00 +0000
|
||||
- name: Cloudflare Goes InterPlanetary (Cloudflare Blog)
|
||||
title: Cloudflare Goes InterPlanetary (Cloudflare Blog)
|
||||
path: https://blog.cloudflare.com/distributed-web-gateway/
|
||||
date: 2018-09-17T07:00:00.000+00:00
|
||||
tags: CDN, community
|
||||
card_image: "/2018-09-17-news-gateway-cloudflare.png"
|
||||
- name: Building Cooperation and Trust into the Web (Mozilla Hacks)
|
||||
title: Building Cooperation and Trust into the Web (Mozilla Hacks)
|
||||
path: https://hacks.mozilla.org/2018/08/dweb-building-cooperation-and-trust-into-the-web-with-ipfs/
|
||||
date: 2018-08-29T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
card_image: "/2018-08-29-news-supplychain-rtrade.png"
|
||||
- name: Deconstructing the Power Structures of Large-Scale Social Computing Networks
|
||||
title: Deconstructing the Power Structures of Large-Scale Social Computing Networks
|
||||
path: https://infocivics.com/
|
||||
date: 2018-08-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- identity
|
||||
- name: Why is Decentralized and Distributed File Storage Critical for a Better Web?
|
||||
(Coin Center)
|
||||
title: Why is Decentralized and Distributed File Storage Critical for a Better Web?
|
||||
(Coin Center)
|
||||
path: https://coincenter.org/entry/why-is-decentralized-and-distributed-file-storage-critical-for-a-better-web
|
||||
date: 2017-06-20T07:00:00.000+00:00
|
||||
card_image: "/2017-06-20-news-distributedstorage-coincenter.png"
|
||||
- name: Protocol Labs (BlueYard Capital)
|
||||
title: Protocol Labs (BlueYard Capital)
|
||||
path: https://medium.com/@BlueYard/protocol-labs-35ceff61b031
|
||||
date: 2017-05-18T07:00:00.000+00:00
|
||||
card_image: "/2017-05-18-pl-blueyard.png"
|
||||
- name: Protocol Labs (Union Square Ventures)
|
||||
title: Protocol Labs (Union Square Ventures)
|
||||
path: https://www.usv.com/blog/protocol-labs
|
||||
date: 2017-05-18T07:00:00.000+00:00
|
||||
- name: Turkey Can’t Block This Copy of Wikipedia (Observer)
|
||||
title: Turkey Can’t Block This Copy of Wikipedia (Observer)
|
||||
path: http://observer.com/2017/05/turkey-wikipedia-ipfs/
|
||||
date: 2017-05-10T07:00:00.000+00:00
|
||||
tags:
|
||||
- censorship
|
||||
card_image: "/2017-05-10-news-wikipedia-observer.png"
|
||||
- name: Ethereum Meets Zcash? Why IPFS Plans a Multi-Blockchain Browser (CoinDesk)
|
||||
title: Ethereum Meets Zcash? Why IPFS Plans a Multi-Blockchain Browser (CoinDesk)
|
||||
path: https://www.coindesk.com/ethereum-meets-zcash-why-ipfs-plans-a-multi-blockchain-browser/
|
||||
date: 2017-04-29T07:00:00.000+00:00
|
||||
card_image: "/2017-04-29-news-multiblockchain-coindesk.png"
|
||||
- name: OpenBazaar Integrating IPFS to Help Keep Stores Open Longer (Nasdaq)
|
||||
title: OpenBazaar Integrating IPFS to Help Keep Stores Open Longer (Nasdaq)
|
||||
path: http://www.nasdaq.com/article/openbazaar-integrating-interplanetary-file-system-to-help-keep-stores-open-longer-cm606534
|
||||
date: 2016-04-14T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
card_image: "/2016-04-14-openbazaar-nasdaq.png"
|
||||
- name: A Protocol That Changes Everything (John Lilic)
|
||||
title: A Protocol That Changes Everything (John Lilic)
|
||||
path: https://www.linkedin.com/pulse/introduction-ipfs-interplanetary-file-system-brief-post-john-lilic
|
||||
date: 2015-10-19T07:00:00.000+00:00
|
||||
card_image: "/2015-10-18-news-changeseverything.png"
|
||||
- name: Epicenter Bitcoin Interviews Juan Benet
|
||||
title: Epicenter Bitcoin Interviews Juan Benet
|
||||
path: https://epicenter.tv/episode/100/
|
||||
date: 2015-10-12T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
card_image: "/2015-10-12-news-juanbenet-epicenterbitcoin.png"
|
||||
- name: Decentralizing the Web with IPFS (Reseller Club)
|
||||
title: Decentralizing the Web with IPFS (Reseller Club)
|
||||
path: https://blog.resellerclub.com/decentralizing-the-web-with-ipfs/
|
||||
date: 2015-10-12T07:00:00.000+00:00
|
||||
card_image: "/2015-10-12-news-decentralizingweb-resellerclub.png"
|
||||
- name: FreeNAS Alpha Ships with IPFS as a Transport
|
||||
title: FreeNAS Alpha Ships with IPFS as a Transport
|
||||
path: https://web.archive.org/web/20151011192538/http://www.freenas.org/whats-new/2015/10/announcing-freenas-10-alpha.html
|
||||
date: 2015-10-09T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
- name: IPFS at AndYetConf 2015
|
||||
title: IPFS at AndYetConf 2015
|
||||
path: http://talks.benet.ai/2015-10-06-ipfs-013-andyetconf
|
||||
date: 2015-10-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Why the Internet Needs IPFS Before It's Too Late (TechCrunch)
|
||||
title: Why the Internet Needs IPFS Before It's Too Late (TechCrunch)
|
||||
path: https://techcrunch.com/2015/10/04/why-the-internet-needs-ipfs-before-its-too-late/
|
||||
date: 2015-10-04T07:00:00.000+00:00
|
||||
card_image: "/2015-10-04-news-toolate-techcrunch.png"
|
||||
- name: A For-Life, Decentralized, Privacy-Respecting Web (Maxim Veksler)
|
||||
title: A For-Life, Decentralized, Privacy-Respecting Web (Maxim Veksler)
|
||||
path: https://medium.com/@mvxlr/ipfs-inter-planetary-file-system-65466e4129c6
|
||||
date: 2015-09-23T07:00:00.000+00:00
|
||||
- name: IPFS Wants to Create a Permanent Web (Motherboard)
|
||||
title: IPFS Wants to Create a Permanent Web (Motherboard)
|
||||
path: https://motherboard.vice.com/en_us/article/78xgaq/the-interplanetary-file-system-wants-to-create-a-permanent-web
|
||||
date: 2015-09-19T07:00:00.000+00:00
|
||||
card_image: "/2020-09-18-news-permanent-vice.png"
|
||||
- name: First Steps Toward Implementing Distributed Permanent Web (Hacked.com)
|
||||
title: First Steps Toward Implementing Distributed Permanent Web (Hacked.com)
|
||||
path: https://web.archive.org/web/20150919135028/https://hacked.com/first-steps-toward-implementing-distributed-permanent-web-ipfs/
|
||||
date: 2015-09-10T07:00:00.000+00:00
|
||||
- name: HTTP is Obsolete. It’s Time for the Distributed, Permanent Web (Neocities)
|
||||
title: HTTP is Obsolete. It’s Time for the Distributed, Permanent Web (Neocities)
|
||||
path: https://blog.neocities.org/its-time-for-the-permanent-web.html
|
||||
date: 2015-09-08T07:00:00.000+00:00
|
||||
card_image: "/2015-09-08-news-dweb-neocities.png"
|
||||
- name: Juan Benet Interview (Software Engineering Daily)
|
||||
title: Juan Benet Interview (Software Engineering Daily)
|
||||
path: https://softwareengineeringdaily.com/2015/08/25/interplanetary-file-system-ipfs-with-juan-benet/
|
||||
date: 2015-08-25T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
card_image: "/2015-08-25-juanbenet-softwareengineeringdaily.png"
|
||||
- name: IPFS at Battlemesh 2015
|
||||
title: IPFS at Battlemesh 2015
|
||||
path: https://battlemesh.org/BattleMeshV8/Agenda
|
||||
date: 2015-08-03T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Holger Krekels EuroPython 2015 Keynote
|
||||
title: Holger Krekels EuroPython 2015 Keynote
|
||||
path: http://dietzel.me/2015/08/02/EuroPython-2015-Holger-Krekels-Keynote-about-the-interplanetary-filesystem-Wed-22nd-July-2015/
|
||||
date: 2015-05-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
card_image: "/2015-08-02-news-holgerkrekel-europython.png"
|
||||
- name: IPFS at Data Terra Nemo 2015
|
||||
title: IPFS at Data Terra Nemo 2015
|
||||
path: https://dtn.is/2015.html
|
||||
date: 2015-05-23T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
card_image: "/2015-05-23-news-dataterranemo.png"
|
||||
- name: Juan Benet at O'Reilly Fluent Conf
|
||||
title: Juan Benet at O'Reilly Fluent Conf
|
||||
path: https://www.oreilly.com/library/view/fluent-conference-2015/9781491927786/
|
||||
date: 2015-04-23T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
|
||||
- name: Brave Becomes First Browser to Offer Native IPFS Integration (Coindesk)
|
||||
title: Brave Becomes First Browser to Offer Native IPFS Integration (Coindesk)
|
||||
path: https://www.coindesk.com/brave-browser-native-ipfs-integration-decentralized-web
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: '/2021-01-19-news-brave-coindesk.png'
|
||||
- name: Brave browser now supports peer-to-peer IPFS protocol (Engadget)
|
||||
title: Brave browser now supports peer-to-peer IPFS protocol (Engadget)
|
||||
path: https://www.engadget.com/brave-ipfs-update-190545662.html
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: '/2021-01-19-news-brave-engadget.png'
|
||||
- name: How to Use the Uncensorable Web on Privacy Browser Brave (Decrypt)
|
||||
title: How to Use the Uncensorable Web on Privacy Browser Brave (Decrypt)
|
||||
path: https://decrypt.co/54686/how-to-use-the-uncensorable-web-on-privacy-browser-brave
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: '/2021-01-19-news-brave-decrypt.png'
|
||||
- name: Brave Becomes First Browser to Add Native IPFS Support (ZDNet)
|
||||
title: Brave Becomes First Browser to Add Native IPFS Support (ZDNet)
|
||||
path: https://www.zdnet.com/article/brave-becomes-first-browser-to-add-native-support-for-the-ipfs-protocol/
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: '/2021-01-19-news-brave-zdnet.png'
|
||||
- name: Brave Integrates IPFS (Brave Blog)
|
||||
title: Brave Integrates IPFS (Brave Blog)
|
||||
path: https://brave.com/brave-integrates-ipfs/
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
card_image: '/2021-01-19-news-brave-braveblog.png'
|
||||
- name: Brave Bets on the Decentralized Web (The Register)
|
||||
title: Brave Bets on the Decentralized Web (The Register)
|
||||
path: https://www.theregister.com/2021/01/19/brave_decentralized_browser/
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
- name: Brave Takes Step Towards Enabling a Decentralized Web (The Verge)
|
||||
title: Brave Takes Step Towards Enabling a Decentralized Web (The Verge)
|
||||
path: https://www.theverge.com/2021/1/19/22238334/brave-browser-ipfs-peer-to-peer-decentralized-transfer-protocol-http-nodes
|
||||
date: 2021-01-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: '/2021-01-19-news-brave-verge.png'
|
||||
- name:
|
||||
We Need Alternatives to Big Tech; These Decentralized Tools Might Be The Answer
|
||||
(New America)
|
||||
title:
|
||||
We Need Alternatives to Big Tech; These Decentralized Tools Might Be The
|
||||
Answer (New America)
|
||||
path: https://www.newamerica.org/oti/blog/decentralization-competition/
|
||||
date: 2021-01-12T07:00:00.000+00:00
|
||||
tags:
|
||||
- browsers
|
||||
card_image: '/2021-01-12-news-bigtech-newamerica.png'
|
||||
- name: Cloudflare Unveils Gateway to Distributed Web With ENS, IPFS Integration
|
||||
title: Cloudflare Unveils Gateway to Distributed Web With ENS, IPFS Integration
|
||||
path: https://www.coindesk.com/cloudflare-unveils-gateway-to-distributed-web-with-ens-ipfs-integration
|
||||
date: 2021-01-13T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
- 'static publishing'
|
||||
card_image: '/2021-01-13-news-cloudflare-coindesk.png'
|
||||
- name: 'Juan Benet: From Idea to Action (CoinDesk)'
|
||||
title: 'Juan Benet: From Idea to Action (CoinDesk)'
|
||||
path: https://www.coindesk.com/juan-benet-most-influential-2020
|
||||
date: 2020-12-09T00:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
card_image: '/2020-12-08-news-juanbenet-coindesk.png'
|
||||
- name: IPFS is paving the way for a new digital economy (Modern Consensus)
|
||||
title: IPFS is paving the way for a new digital economy (Modern Consensus)
|
||||
path: https://modernconsensus.com/commentary/opinion/ipfs-is-paving-the-way-for-a-new-digital-economy/
|
||||
date: 2020-10-08T06:00:00.000+00:00
|
||||
card_image: '/2020-10-08-digitaleconomy-modernconsensus.png'
|
||||
- name:
|
||||
The Decentralized Web Could Help Preserve The Internet’s Data For 1,000 Years.
|
||||
Here’s Why We Need IPFS To Build It (TechDirt)
|
||||
title:
|
||||
The Decentralized Web Could Help Preserve The Internet’s Data For 1,000 Years.
|
||||
Here’s Why We Need IPFS To Build It (TechDirt)
|
||||
path: https://www.techdirt.com/articles/20200504/16050844431/decentralized-web-could-help-preserve-internets-data-1000-years-heres-why-we-need-ipfs-to-build-it.shtml#
|
||||
date: 2020-05-05T06:00:00.000+00:00
|
||||
- name: Latest Version of Open Source IPFS Improves Performance (DevOps.com)
|
||||
title: Latest Version of Open Source IPFS Improves Performance (DevOps.com)
|
||||
path: https://devops.com/latest-version-of-open-source-ipfs-improves-performance/
|
||||
date: 2020-04-30T06:00:00.000+00:00
|
||||
tags:
|
||||
- go-ipfs
|
||||
card_image: '/2020-04-30-news-latestipfs-devops.png'
|
||||
- name: Decentralized Web Protocol IPFS Has Its Biggest Update So Far (Cointelegraph)
|
||||
title: Decentralized Web Protocol IPFS Has Its Biggest Update So Far (Cointelegraph)
|
||||
path: https://cointelegraph.com/news/decentralized-web-protocol-ipfs-has-its-biggest-update-so-far
|
||||
date: 2020-04-28T06:00:00.000+00:00
|
||||
tags:
|
||||
- go-ipfs
|
||||
card_image: '/2020-04-28-latestipfs-cointelegraph.png'
|
||||
- name: InterPlanetary File System Is Uncensorable During Coronavirus News Fog (Coindesk)
|
||||
title: InterPlanetary File System Is Uncensorable During Coronavirus News Fog (Coindesk)
|
||||
path: https://www.coindesk.com/interplanetary-file-system-is-uncensorable-during-coronavirus-news-fog
|
||||
date: 2020-03-18T06:00:00.000+00:00
|
||||
tags:
|
||||
- censorship
|
||||
card_image: '/2020-03-18-covid-coindesk.png'
|
||||
- name: IPFS Emerges as Tool to Distribute Container Images (Container Journal)
|
||||
title: IPFS Emerges as Tool to Distribute Container Images (Container Journal)
|
||||
path: https://containerjournal.com/topics/container-management/ipfs-emerges-as-tool-to-distribute-container-images/
|
||||
date: 2020-03-02T07:00:00.000+00:00
|
||||
tags:
|
||||
- Docker
|
||||
- containerization
|
||||
card_image: '/2020-03-02-news-images-containerjournal.png'
|
||||
- name: IPFS, libp2p and Filecoin with Juan Benet (Zero Knowledge)
|
||||
title: IPFS, libp2p and Filecoin with Juan Benet (Zero Knowledge)
|
||||
path: https://www.zeroknowledge.fm/106?t=0
|
||||
date: 2019-12-04T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
card_image: '/2020-03-02-news-juanbenet-zeroknowledge.png'
|
||||
- name: Enterprise IPFS for True Supply Chain Provenance (RTrade)
|
||||
title: Enterprise IPFS for True Supply Chain Provenance (RTrade)
|
||||
path: https://medium.com/rtrade-technologies/enterprise-ipfs-for-true-supply-chain-provenance-part-1-89524337f27
|
||||
date: 2019-09-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
card_image: '/2019-09-06-news-supplychain-rtrade.png'
|
||||
- name: IFPS — Technology That's Out of This World (Sprint)
|
||||
title: IFPS — Technology That's Out of This World (Sprint)
|
||||
path: https://web.archive.org/web/20200221031918/https://business.sprint.com/blog/ipfs-technology/
|
||||
date: 2019-05-22 06:00:00 +0000
|
||||
- name: Cloudflare Goes InterPlanetary (Cloudflare Blog)
|
||||
title: Cloudflare Goes InterPlanetary (Cloudflare Blog)
|
||||
path: https://blog.cloudflare.com/distributed-web-gateway/
|
||||
date: 2018-09-17T07:00:00.000+00:00
|
||||
tags:
|
||||
- CDN
|
||||
- community
|
||||
card_image: '/2018-09-17-news-gateway-cloudflare.png'
|
||||
- name: Building Cooperation and Trust into the Web (Mozilla Hacks)
|
||||
title: Building Cooperation and Trust into the Web (Mozilla Hacks)
|
||||
path: https://hacks.mozilla.org/2018/08/dweb-building-cooperation-and-trust-into-the-web-with-ipfs/
|
||||
date: 2018-08-29T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
card_image: '/2018-08-29-news-supplychain-rtrade.png'
|
||||
- name: Deconstructing the Power Structures of Large-Scale Social Computing Networks
|
||||
title: Deconstructing the Power Structures of Large-Scale Social Computing Networks
|
||||
path: https://infocivics.com/
|
||||
date: 2018-08-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- identity
|
||||
- name:
|
||||
Why is Decentralized and Distributed File Storage Critical for a Better Web?
|
||||
(Coin Center)
|
||||
title:
|
||||
Why is Decentralized and Distributed File Storage Critical for a Better Web?
|
||||
(Coin Center)
|
||||
path: https://coincenter.org/entry/why-is-decentralized-and-distributed-file-storage-critical-for-a-better-web
|
||||
date: 2017-06-20T07:00:00.000+00:00
|
||||
card_image: '/2017-06-20-news-distributedstorage-coincenter.png'
|
||||
- name: Protocol Labs (BlueYard Capital)
|
||||
title: Protocol Labs (BlueYard Capital)
|
||||
path: https://medium.com/@BlueYard/protocol-labs-35ceff61b031
|
||||
date: 2017-05-18T07:00:00.000+00:00
|
||||
card_image: '/2017-05-18-pl-blueyard.png'
|
||||
- name: Protocol Labs (Union Square Ventures)
|
||||
title: Protocol Labs (Union Square Ventures)
|
||||
path: https://www.usv.com/blog/protocol-labs
|
||||
date: 2017-05-18T07:00:00.000+00:00
|
||||
- name: Turkey Can’t Block This Copy of Wikipedia (Observer)
|
||||
title: Turkey Can’t Block This Copy of Wikipedia (Observer)
|
||||
path: http://observer.com/2017/05/turkey-wikipedia-ipfs/
|
||||
date: 2017-05-10T07:00:00.000+00:00
|
||||
tags:
|
||||
- censorship
|
||||
card_image: '/2017-05-10-news-wikipedia-observer.png'
|
||||
- name: Ethereum Meets Zcash? Why IPFS Plans a Multi-Blockchain Browser (CoinDesk)
|
||||
title: Ethereum Meets Zcash? Why IPFS Plans a Multi-Blockchain Browser (CoinDesk)
|
||||
path: https://www.coindesk.com/ethereum-meets-zcash-why-ipfs-plans-a-multi-blockchain-browser/
|
||||
date: 2017-04-29T07:00:00.000+00:00
|
||||
card_image: '/2017-04-29-news-multiblockchain-coindesk.png'
|
||||
- name: OpenBazaar Integrating IPFS to Help Keep Stores Open Longer (Nasdaq)
|
||||
title: OpenBazaar Integrating IPFS to Help Keep Stores Open Longer (Nasdaq)
|
||||
path: http://www.nasdaq.com/article/openbazaar-integrating-interplanetary-file-system-to-help-keep-stores-open-longer-cm606534
|
||||
date: 2016-04-14T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
card_image: '/2016-04-14-openbazaar-nasdaq.png'
|
||||
- name: A Protocol That Changes Everything (John Lilic)
|
||||
title: A Protocol That Changes Everything (John Lilic)
|
||||
path: https://www.linkedin.com/pulse/introduction-ipfs-interplanetary-file-system-brief-post-john-lilic
|
||||
date: 2015-10-19T07:00:00.000+00:00
|
||||
card_image: '/2015-10-18-news-changeseverything.png'
|
||||
- name: Epicenter Bitcoin Interviews Juan Benet
|
||||
title: Epicenter Bitcoin Interviews Juan Benet
|
||||
path: https://epicenter.tv/episode/100/
|
||||
date: 2015-10-12T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
card_image: '/2015-10-12-news-juanbenet-epicenterbitcoin.png'
|
||||
- name: Decentralizing the Web with IPFS (Reseller Club)
|
||||
title: Decentralizing the Web with IPFS (Reseller Club)
|
||||
path: https://blog.resellerclub.com/decentralizing-the-web-with-ipfs/
|
||||
date: 2015-10-12T07:00:00.000+00:00
|
||||
card_image: '/2015-10-12-news-decentralizingweb-resellerclub.png'
|
||||
- name: FreeNAS Alpha Ships with IPFS as a Transport
|
||||
title: FreeNAS Alpha Ships with IPFS as a Transport
|
||||
path: https://web.archive.org/web/20151011192538/http://www.freenas.org/whats-new/2015/10/announcing-freenas-10-alpha.html
|
||||
date: 2015-10-09T07:00:00.000+00:00
|
||||
tags:
|
||||
- community
|
||||
- name: IPFS at AndYetConf 2015
|
||||
title: IPFS at AndYetConf 2015
|
||||
path: http://talks.benet.ai/2015-10-06-ipfs-013-andyetconf
|
||||
date: 2015-10-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Why the Internet Needs IPFS Before It's Too Late (TechCrunch)
|
||||
title: Why the Internet Needs IPFS Before It's Too Late (TechCrunch)
|
||||
path: https://techcrunch.com/2015/10/04/why-the-internet-needs-ipfs-before-its-too-late/
|
||||
date: 2015-10-04T07:00:00.000+00:00
|
||||
card_image: '/2015-10-04-news-toolate-techcrunch.png'
|
||||
- name: A For-Life, Decentralized, Privacy-Respecting Web (Maxim Veksler)
|
||||
title: A For-Life, Decentralized, Privacy-Respecting Web (Maxim Veksler)
|
||||
path: https://medium.com/@mvxlr/ipfs-inter-planetary-file-system-65466e4129c6
|
||||
date: 2015-09-23T07:00:00.000+00:00
|
||||
- name: IPFS Wants to Create a Permanent Web (Motherboard)
|
||||
title: IPFS Wants to Create a Permanent Web (Motherboard)
|
||||
path: https://motherboard.vice.com/en_us/article/78xgaq/the-interplanetary-file-system-wants-to-create-a-permanent-web
|
||||
date: 2015-09-19T07:00:00.000+00:00
|
||||
card_image: '/2020-09-18-news-permanent-vice.png'
|
||||
- name: First Steps Toward Implementing Distributed Permanent Web (Hacked.com)
|
||||
title: First Steps Toward Implementing Distributed Permanent Web (Hacked.com)
|
||||
path: https://web.archive.org/web/20150919135028/https://hacked.com/first-steps-toward-implementing-distributed-permanent-web-ipfs/
|
||||
date: 2015-09-10T07:00:00.000+00:00
|
||||
- name: HTTP is Obsolete. It’s Time for the Distributed, Permanent Web (Neocities)
|
||||
title: HTTP is Obsolete. It’s Time for the Distributed, Permanent Web (Neocities)
|
||||
path: https://blog.neocities.org/its-time-for-the-permanent-web.html
|
||||
date: 2015-09-08T07:00:00.000+00:00
|
||||
card_image: '/2015-09-08-news-dweb-neocities.png'
|
||||
- name: Juan Benet Interview (Software Engineering Daily)
|
||||
title: Juan Benet Interview (Software Engineering Daily)
|
||||
path: https://softwareengineeringdaily.com/2015/08/25/interplanetary-file-system-ipfs-with-juan-benet/
|
||||
date: 2015-08-25T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
card_image: '/2015-08-25-juanbenet-softwareengineeringdaily.png'
|
||||
- name: IPFS at Battlemesh 2015
|
||||
title: IPFS at Battlemesh 2015
|
||||
path: https://battlemesh.org/BattleMeshV8/Agenda
|
||||
date: 2015-08-03T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Holger Krekels EuroPython 2015 Keynote
|
||||
title: Holger Krekels EuroPython 2015 Keynote
|
||||
path: http://dietzel.me/2015/08/02/EuroPython-2015-Holger-Krekels-Keynote-about-the-interplanetary-filesystem-Wed-22nd-July-2015/
|
||||
date: 2015-05-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
card_image: '/2015-08-02-news-holgerkrekel-europython.png'
|
||||
- name: IPFS at Data Terra Nemo 2015
|
||||
title: IPFS at Data Terra Nemo 2015
|
||||
path: https://dtn.is/2015.html
|
||||
date: 2015-05-23T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
card_image: '/2015-05-23-news-dataterranemo.png'
|
||||
- name: Juan Benet at O'Reilly Fluent Conf
|
||||
title: Juan Benet at O'Reilly Fluent Conf
|
||||
path: https://www.oreilly.com/library/view/fluent-conference-2015/9781491927786/
|
||||
date: 2015-04-23T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
---
|
||||
|
||||
+70
-70
@@ -2,74 +2,74 @@
|
||||
title: Tutorials
|
||||
type: Tutorial
|
||||
data:
|
||||
- name: How to Leverage Cloudflare and IPFS to Host a Free High-Availability Site
|
||||
title: How to Leverage Cloudflare and IPFS to Host a Free High-Availability Site
|
||||
path: https://coywolf.pro/webmaster/ipfs-distributed-web-cloudflare-host-site/
|
||||
date: 2021-02-10 07:00:00 +0000
|
||||
tags: static publishing, IPFS Desktop
|
||||
card_image: "/tutorial-20210210-cloudflare-ipfs.png"
|
||||
- name: 'ProtoSchool: Merkle DAGs — Structuring Data for the Distributed Web'
|
||||
title: 'ProtoSchool: Merkle DAGs — Structuring Data for the Distributed Web'
|
||||
path: https://proto.school/merkle-dags
|
||||
date: 2021-01-14T07:00:00.000+00:00
|
||||
tags:
|
||||
- ipld
|
||||
- " ProtoSchool"
|
||||
- " DAG"
|
||||
card_image: "/2021-01-14-tutorial-protoschool-merkledags.png"
|
||||
- name: 'ProtoSchool: Content Addressing on the Decentralized Web'
|
||||
title: 'ProtoSchool: Content Addressing on the Decentralized Web'
|
||||
path: https://proto.school/content-addressing
|
||||
date: 2021-01-13T01:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- DAG
|
||||
- CID
|
||||
card_image: "/2021-01-12-tutorial-protoschool-contentaddressing.png"
|
||||
- name: 'ProtoSchool: Mutable File System'
|
||||
title: 'ProtoSchool: Mutable File System'
|
||||
path: https://proto.school/mutable-file-system
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- MFS
|
||||
- name: 'ProtoSchool: Regular Files API'
|
||||
title: 'ProtoSchool: Regular Files API'
|
||||
path: https://proto.school/regular-files-api
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- API
|
||||
card_image: "/2020-09-11-tutorial-protoschool-regularfilesapi.png"
|
||||
- name: 'ProtoSchool: P2P Data Links with Content Addressing'
|
||||
title: 'ProtoSchool: P2P Data Links with Content Addressing'
|
||||
path: https://proto.school/basics
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- CID
|
||||
card_image: "/2020-09-11-tutorial-protoschool-datalinks.png"
|
||||
- name: 'ProtoSchool: Blogging on the Decentralized Web'
|
||||
title: 'ProtoSchool: Blogging on the Decentralized Web'
|
||||
path: https://proto.school/blog
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- static publishing
|
||||
card_image: "/2020-09-11-tutorial-protoschool-blogging.png"
|
||||
- name: 'ProtoSchool: Anatomy of a CID'
|
||||
title: 'ProtoSchool: Anatomy of a CID'
|
||||
path: https://proto.school/anatomy-of-a-cid
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- CID
|
||||
- name: Install IPFS on a Raspberry Pi 2
|
||||
title: Install IPFS on a Raspberry Pi 2
|
||||
path: https://www.siliconian.com/blog/16-bitcoin-blockchain/23-beginner-s-guide-to-installing-ipfs-on-a-raspberry-pi-2
|
||||
date: 2015-05-02T07:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
card_image: "/2015-05-02-tutorial-raspberrypi-siliconian.png"
|
||||
|
||||
- name: How to Leverage Cloudflare and IPFS to Host a Free High-Availability Site
|
||||
title: How to Leverage Cloudflare and IPFS to Host a Free High-Availability Site
|
||||
path: https://coywolf.pro/webmaster/ipfs-distributed-web-cloudflare-host-site/
|
||||
date: 2021-02-10 07:00:00 +0000
|
||||
tags:
|
||||
- static publishing
|
||||
- IPFS Desktop
|
||||
- name: 'ProtoSchool: Merkle DAGs — Structuring Data for the Distributed Web'
|
||||
title: 'ProtoSchool: Merkle DAGs — Structuring Data for the Distributed Web'
|
||||
path: https://proto.school/merkle-dags
|
||||
date: 2021-01-14T07:00:00.000+00:00
|
||||
tags:
|
||||
- ipld
|
||||
- ProtoSchool
|
||||
- 'DAG'
|
||||
card_image: '/2021-01-14-tutorial-protoschool-merkledags.png'
|
||||
- name: 'ProtoSchool: Content Addressing on the Decentralized Web'
|
||||
title: 'ProtoSchool: Content Addressing on the Decentralized Web'
|
||||
path: https://proto.school/content-addressing
|
||||
date: 2021-01-13T01:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- DAG
|
||||
- CID
|
||||
card_image: '/2021-01-12-tutorial-protoschool-contentaddressing.png'
|
||||
- name: 'ProtoSchool: Mutable File System'
|
||||
title: 'ProtoSchool: Mutable File System'
|
||||
path: https://proto.school/mutable-file-system
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- MFS
|
||||
- name: 'ProtoSchool: Regular Files API'
|
||||
title: 'ProtoSchool: Regular Files API'
|
||||
path: https://proto.school/regular-files-api
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- API
|
||||
card_image: '/2020-09-11-tutorial-protoschool-regularfilesapi.png'
|
||||
- name: 'ProtoSchool: P2P Data Links with Content Addressing'
|
||||
title: 'ProtoSchool: P2P Data Links with Content Addressing'
|
||||
path: https://proto.school/basics
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- CID
|
||||
card_image: '/2020-09-11-tutorial-protoschool-datalinks.png'
|
||||
- name: 'ProtoSchool: Blogging on the Decentralized Web'
|
||||
title: 'ProtoSchool: Blogging on the Decentralized Web'
|
||||
path: https://proto.school/blog
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- static publishing
|
||||
card_image: '/2020-09-11-tutorial-protoschool-blogging.png'
|
||||
- name: 'ProtoSchool: Anatomy of a CID'
|
||||
title: 'ProtoSchool: Anatomy of a CID'
|
||||
path: https://proto.school/anatomy-of-a-cid
|
||||
date: 2020-09-12T00:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
- CID
|
||||
- name: Install IPFS on a Raspberry Pi 2
|
||||
title: Install IPFS on a Raspberry Pi 2
|
||||
path: https://www.siliconian.com/blog/16-bitcoin-blockchain/23-beginner-s-guide-to-installing-ipfs-on-a-raspberry-pi-2
|
||||
date: 2015-05-02T07:00:00.000+00:00
|
||||
tags:
|
||||
- ProtoSchool
|
||||
card_image: '/2015-05-02-tutorial-raspberrypi-siliconian.png'
|
||||
---
|
||||
|
||||
+233
-233
@@ -2,237 +2,237 @@
|
||||
title: Videos
|
||||
type: Video
|
||||
data:
|
||||
- name: Introducing IPFS Support in the Brave Browser
|
||||
title: Introducing IPFS Support in the Brave Browser
|
||||
path: https://www.youtube.com/watch?v=jTDkTQiKzJA
|
||||
date: 2021-01-19 07:00:00 +0000
|
||||
tags: ''
|
||||
- name: Mapping the InterPlanetary File System (Protocol Labs Research Series)
|
||||
title: Mapping the InterPlanetary File System (Protocol Labs Research Series)
|
||||
path: https://www.youtube.com/watch?v=jQI37Y25jwk
|
||||
date: 2021-01-15T07:00:00.000+00:00
|
||||
tags:
|
||||
- research
|
||||
- " infrastructure"
|
||||
- name: IPFS Camp 2019 Core Courses
|
||||
title: IPFS Camp 2019 Core Courses
|
||||
path: https://www.youtube.com/watch?list=PLuhRWgmPaHtSsHMhjeWpfOzr8tonPaePu&v=Y_-TWTmF_1I
|
||||
date: 2020-05-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- IPFS Camp
|
||||
- conferences
|
||||
- tutorial
|
||||
- name: JavaScript apps going InterPlanetary (Alessandro Segala)
|
||||
title: JavaScript apps going InterPlanetary (Alessandro Segala)
|
||||
path: https://www.youtube.com/watch?v=OY-YnkVHJcc
|
||||
date: 2020-01-20T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: IPFS Camp 2019 Keynotes
|
||||
title: IPFS Camp 2019 Keynotes
|
||||
path: https://www.youtube.com/watch?list=PLuhRWgmPaHtSkKM3Rzp4MQ0Z1nf5Kq0tl&v=gUE5vhZoavQ
|
||||
date: 2019-10-15T07:00:00.000+00:00
|
||||
tags:
|
||||
- IPFS Camp
|
||||
- conferences
|
||||
- name: IPFS Camp 2019 Lightning Talks and Demos
|
||||
title: IPFS Camp 2019 Lightning Talks and Demos
|
||||
path: https://www.youtube.com/watch?list=PLuhRWgmPaHtQVNQcBaCKg5kKhfOBv45Jb&v=nvO1MMRxu1Q
|
||||
date: 2019-07-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- IPFS Camp
|
||||
- conferences
|
||||
- demo
|
||||
- name: IPFS and the Permanent Web (Stanford Seminar)
|
||||
title: IPFS and the Permanent Web (Stanford Seminar)
|
||||
path: https://www.youtube.com/watch?v=HUVmypx9HGI
|
||||
date: 2015-10-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- demo
|
||||
- name: IPFS Alpha Demo
|
||||
title: IPFS Alpha Demo
|
||||
path: https://www.youtube.com/watch?v=8CMxDNuuAiQ
|
||||
date: 2015-02-20T07:00:00.000+00:00
|
||||
tags:
|
||||
- demo
|
||||
- name: A Technical Introduction to IPFS with Héctor Sanjuán (Our Networks 2019)
|
||||
title: A Technical Introduction to IPFS with Héctor Sanjuán (Our Networks 2019)
|
||||
path: https://www.youtube.com/watch?v=hnigvVuoaIA
|
||||
date: 2019-12-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Juan Benet on Building Web3 (Web3 Summit)
|
||||
title: Juan Benet on Building Web3 (Web3 Summit)
|
||||
path: https://www.youtube.com/watch?v=pJOG5Ql7ZD0
|
||||
date: 2019-10-17T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
- name: IPFS Basics Night (ProtoSchool Denver)
|
||||
title: IPFS Basics Night (ProtoSchool Denver)
|
||||
path: https://www.youtube.com/watch?v=D3MjB45YZsM
|
||||
date: 2019-10-16T07:00:00.000+00:00
|
||||
- name: Vasco Santos on a Decentralized World (OPO.js)
|
||||
title: Vasco Santos on a Decentralized World (OPO.js)
|
||||
path: https://www.youtube.com/watch?v=5pHl67qomec
|
||||
date: 2019-08-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Alex Potsides on NPM on IPFS (OPO.js)
|
||||
title: Alex Potsides on NPM on IPFS (OPO.js)
|
||||
path: https://www.youtube.com/watch?v=umNL2VkIHe8
|
||||
date: 2019-08-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: IPFS Explained (WWDC/AltConf)
|
||||
title: IPFS Explained (WWDC/AltConf)
|
||||
path: https://www.youtube.com/watch?v=a1qVSs-poLY
|
||||
date: 2019-06-08T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Visualizing the Decentralized Web (NodeFest Tokyo)
|
||||
title: Visualizing the Decentralized Web (NodeFest Tokyo)
|
||||
path: https://www.youtube.com/watch?v=3Y76XWFhoco
|
||||
date: 2019-06-01T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: 'Juan Benet: What Exactly is Web3? (Web3 Summit)'
|
||||
title: 'Juan Benet: What Exactly is Web3? (Web3 Summit)'
|
||||
path: https://www.youtube.com/watch?v=l44z35vabvA
|
||||
date: 2018-10-26T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: IPFS London Meetup
|
||||
title: IPFS London Meetup
|
||||
path: https://www.youtube.com/playlist?list=PLuhRWgmPaHtRdiy0HKNy4UZ4dKVUVL_KG
|
||||
date: 2018-10-08T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: Volker Mische on NOISE (IPFS Lisbon Meetup)
|
||||
title: Volker Mische on NOISE (IPFS Lisbon Meetup)
|
||||
path: https://www.youtube.com/watch?v=wldudAZTM4E
|
||||
date: 2018-01-11T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: Pedro Teixeira on CRDTs (IPFS Lisbon Meetup)
|
||||
title: Pedro Teixeira on CRDTs (IPFS Lisbon Meetup)
|
||||
path: https://www.youtube.com/watch?v=2VOF-Z-nLnQ
|
||||
date: 2018-01-11T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: João Santos on Distributed Verifiable Claims (IPFS Lisbon Meetup)
|
||||
title: João Santos on Distributed Verifiable Claims (IPFS Lisbon Meetup)
|
||||
path: https://www.youtube.com/watch?v=4oIvWldzT4o
|
||||
date: 2018-01-11T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: 'Juan Benet: Decentralize Computing Before It''s Too Late (EtherealSF)'
|
||||
title: 'Juan Benet: Decentralize Computing Before It''s Too Late (EtherealSF)'
|
||||
path: https://www.youtube.com/watch?v=Uo4rOvh8mDM
|
||||
date: 2017-10-31T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: IPFS, CoinList, and the Filecoin ICO with Juan Benet and Dalton Caldwell (Y
|
||||
Combinator)
|
||||
title: IPFS, CoinList, and the Filecoin ICO with Juan Benet and Dalton Caldwell
|
||||
(Y Combinator)
|
||||
path: https://www.youtube.com/watch?v=iUVLuXjPAfg
|
||||
date: 2017-06-30T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
- name: Juan Benet on the Next Internet Revolution (TEDxSanFrancisco)
|
||||
title: Juan Benet on the Next Internet Revolution (TEDxSanFrancisco)
|
||||
path: https://www.youtube.com/watch?v=2RCwZDRwk48&t=449s
|
||||
date: 2016-12-08T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Juan Benet on The Decentralized Web (Silicon Valley Ethereum Meetup)
|
||||
title: Juan Benet on The Decentralized Web (Silicon Valley Ethereum Meetup)
|
||||
path: https://www.youtube.com/watch?v=cU-n_m-snxQ&t=12s
|
||||
date: 2016-10-23T07:00:00.000+00:00
|
||||
- name: Juan Benet on Distributed Apps with IPFS (Full Stack Fest)
|
||||
title: Juan Benet on Distributed Apps with IPFS (Full Stack Fest)
|
||||
path: https://www.youtube.com/watch?v=jONZtXMu03w&t=76s
|
||||
date: 2016-09-14T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Berlin IPFS/Blockstack Meetup
|
||||
title: Berlin IPFS/Blockstack Meetup
|
||||
path: https://www.youtube.com/watch?v=CAfagNmIeOE
|
||||
date: 2016-06-02T07:00:00.000+00:00
|
||||
- name: Berlin IPFS Meetup
|
||||
title: Berlin IPFS Meetup
|
||||
path: https://www.youtube.com/watch?v=UOC_QqtEJtg
|
||||
date: 2016-04-02T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: IPFS Workshop with Juan Benet (Open Knowledge Ireland)
|
||||
title: IPFS Workshop with Juan Benet (Open Knowledge Ireland)
|
||||
path: https://www.youtube.com/watch?v=S65z5NHfUT0
|
||||
date: 2016-01-21T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Juan Benet on IFPS (DEVCON1)
|
||||
title: Juan Benet on IFPS (DEVCON1)
|
||||
path: https://www.youtube.com/watch?v=ewpIi1y_KDc
|
||||
date: 2016-01-15T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Redistributing the Web with IPFS (BattleMeshV8)
|
||||
title: Redistributing the Web with IPFS (BattleMeshV8)
|
||||
path: https://www.youtube.com/watch?v=KGIyneFfiRE
|
||||
date: 2015-10-26T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Interview with Juan Benet (DEVCON1)
|
||||
title: Interview with Juan Benet (DEVCON1)
|
||||
path: https://www.youtube.com/watch?v=t7VjUKCdfpg
|
||||
date: 2015-10-15T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
- name: Ian Preston on IPFS (Redecentralize Conf)
|
||||
title: Ian Preston on IPFS (Redecentralize Conf)
|
||||
path: https://www.youtube.com/watch?v=TiCUIh7tNtU
|
||||
date: 2015-10-18T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Containers at Hyperspeed (Container Camp)
|
||||
title: Containers at Hyperspeed (Container Camp)
|
||||
path: https://www.youtube.com/watch?v=vaIWRyotz4g
|
||||
date: 2015-09-11T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- containerization
|
||||
- name: Towards Universal Access to All Knowledge (Chaos Communication Camp)
|
||||
title: Towards Universal Access to All Knowledge (Chaos Communication Camp)
|
||||
path: https://www.youtube.com/watch?v=lKvoVxUQKD0
|
||||
date: 2015-08-13T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Seattle Surf Incubator IPFS Meetup
|
||||
title: Seattle Surf Incubator IPFS Meetup
|
||||
path: https://vimeo.com/137657331
|
||||
date: 2015-07-23T07:00:00.000+00:00
|
||||
- name: Berlin Ethereum/IPFS Meetup
|
||||
title: Berlin Ethereum/IPFS Meetup
|
||||
path: https://www.youtube.com/watch?v=QlsBU2moRK4
|
||||
date: 2015-05-22T07:00:00.000+00:00
|
||||
- name: BlockChain University Part 2
|
||||
title: BlockChain University Part 2
|
||||
path: https://www.youtube.com/watch?v=999q3_htKPU
|
||||
date: 2015-05-05T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: BlockChain University Part 1
|
||||
title: BlockChain University Part 1
|
||||
path: https://www.youtube.com/watch?v=JhE_J1-BKJE
|
||||
date: 2015-05-05T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: 'Juan Benet on IPFS: The Permanent Web (Talks at Sourcegraph 003)'
|
||||
title: 'Juan Benet on IPFS: The Permanent Web (Talks at Sourcegraph 003)'
|
||||
path: https://www.youtube.com/watch?v=Fa4pckodM9g
|
||||
date: 2014-07-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
|
||||
- name: Introducing IPFS Support in the Brave Browser
|
||||
title: Introducing IPFS Support in the Brave Browser
|
||||
path: https://www.youtube.com/watch?v=jTDkTQiKzJA
|
||||
date: 2021-01-19 07:00:00 +0000
|
||||
- name: Mapping the InterPlanetary File System (Protocol Labs Research Series)
|
||||
title: Mapping the InterPlanetary File System (Protocol Labs Research Series)
|
||||
path: https://www.youtube.com/watch?v=jQI37Y25jwk
|
||||
date: 2021-01-15T07:00:00.000+00:00
|
||||
tags:
|
||||
- research
|
||||
- 'infrastructure'
|
||||
- name: IPFS Camp 2019 Core Courses
|
||||
title: IPFS Camp 2019 Core Courses
|
||||
path: https://www.youtube.com/watch?list=PLuhRWgmPaHtSsHMhjeWpfOzr8tonPaePu&v=Y_-TWTmF_1I
|
||||
date: 2020-05-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- IPFS Camp
|
||||
- conferences
|
||||
- tutorial
|
||||
- name: JavaScript apps going InterPlanetary (Alessandro Segala)
|
||||
title: JavaScript apps going InterPlanetary (Alessandro Segala)
|
||||
path: https://www.youtube.com/watch?v=OY-YnkVHJcc
|
||||
date: 2020-01-20T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: IPFS Camp 2019 Keynotes
|
||||
title: IPFS Camp 2019 Keynotes
|
||||
path: https://www.youtube.com/watch?list=PLuhRWgmPaHtSkKM3Rzp4MQ0Z1nf5Kq0tl&v=gUE5vhZoavQ
|
||||
date: 2019-10-15T07:00:00.000+00:00
|
||||
tags:
|
||||
- IPFS Camp
|
||||
- conferences
|
||||
- name: IPFS Camp 2019 Lightning Talks and Demos
|
||||
title: IPFS Camp 2019 Lightning Talks and Demos
|
||||
path: https://www.youtube.com/watch?list=PLuhRWgmPaHtQVNQcBaCKg5kKhfOBv45Jb&v=nvO1MMRxu1Q
|
||||
date: 2019-07-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- IPFS Camp
|
||||
- conferences
|
||||
- demo
|
||||
- name: IPFS and the Permanent Web (Stanford Seminar)
|
||||
title: IPFS and the Permanent Web (Stanford Seminar)
|
||||
path: https://www.youtube.com/watch?v=HUVmypx9HGI
|
||||
date: 2015-10-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- demo
|
||||
- name: IPFS Alpha Demo
|
||||
title: IPFS Alpha Demo
|
||||
path: https://www.youtube.com/watch?v=8CMxDNuuAiQ
|
||||
date: 2015-02-20T07:00:00.000+00:00
|
||||
tags:
|
||||
- demo
|
||||
- name: A Technical Introduction to IPFS with Héctor Sanjuán (Our Networks 2019)
|
||||
title: A Technical Introduction to IPFS with Héctor Sanjuán (Our Networks 2019)
|
||||
path: https://www.youtube.com/watch?v=hnigvVuoaIA
|
||||
date: 2019-12-19T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Juan Benet on Building Web3 (Web3 Summit)
|
||||
title: Juan Benet on Building Web3 (Web3 Summit)
|
||||
path: https://www.youtube.com/watch?v=pJOG5Ql7ZD0
|
||||
date: 2019-10-17T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
- name: IPFS Basics Night (ProtoSchool Denver)
|
||||
title: IPFS Basics Night (ProtoSchool Denver)
|
||||
path: https://www.youtube.com/watch?v=D3MjB45YZsM
|
||||
date: 2019-10-16T07:00:00.000+00:00
|
||||
- name: Vasco Santos on a Decentralized World (OPO.js)
|
||||
title: Vasco Santos on a Decentralized World (OPO.js)
|
||||
path: https://www.youtube.com/watch?v=5pHl67qomec
|
||||
date: 2019-08-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Alex Potsides on NPM on IPFS (OPO.js)
|
||||
title: Alex Potsides on NPM on IPFS (OPO.js)
|
||||
path: https://www.youtube.com/watch?v=umNL2VkIHe8
|
||||
date: 2019-08-06T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: IPFS Explained (WWDC/AltConf)
|
||||
title: IPFS Explained (WWDC/AltConf)
|
||||
path: https://www.youtube.com/watch?v=a1qVSs-poLY
|
||||
date: 2019-06-08T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Visualizing the Decentralized Web (NodeFest Tokyo)
|
||||
title: Visualizing the Decentralized Web (NodeFest Tokyo)
|
||||
path: https://www.youtube.com/watch?v=3Y76XWFhoco
|
||||
date: 2019-06-01T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: 'Juan Benet: What Exactly is Web3? (Web3 Summit)'
|
||||
title: 'Juan Benet: What Exactly is Web3? (Web3 Summit)'
|
||||
path: https://www.youtube.com/watch?v=l44z35vabvA
|
||||
date: 2018-10-26T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: IPFS London Meetup
|
||||
title: IPFS London Meetup
|
||||
path: https://www.youtube.com/playlist?list=PLuhRWgmPaHtRdiy0HKNy4UZ4dKVUVL_KG
|
||||
date: 2018-10-08T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: Volker Mische on NOISE (IPFS Lisbon Meetup)
|
||||
title: Volker Mische on NOISE (IPFS Lisbon Meetup)
|
||||
path: https://www.youtube.com/watch?v=wldudAZTM4E
|
||||
date: 2018-01-11T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: Pedro Teixeira on CRDTs (IPFS Lisbon Meetup)
|
||||
title: Pedro Teixeira on CRDTs (IPFS Lisbon Meetup)
|
||||
path: https://www.youtube.com/watch?v=2VOF-Z-nLnQ
|
||||
date: 2018-01-11T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: João Santos on Distributed Verifiable Claims (IPFS Lisbon Meetup)
|
||||
title: João Santos on Distributed Verifiable Claims (IPFS Lisbon Meetup)
|
||||
path: https://www.youtube.com/watch?v=4oIvWldzT4o
|
||||
date: 2018-01-11T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: "Juan Benet: Decentralize Computing Before It's Too Late (EtherealSF)"
|
||||
title: "Juan Benet: Decentralize Computing Before It's Too Late (EtherealSF)"
|
||||
path: https://www.youtube.com/watch?v=Uo4rOvh8mDM
|
||||
date: 2017-10-31T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name:
|
||||
IPFS, CoinList, and the Filecoin ICO with Juan Benet and Dalton Caldwell (Y
|
||||
Combinator)
|
||||
title:
|
||||
IPFS, CoinList, and the Filecoin ICO with Juan Benet and Dalton Caldwell
|
||||
(Y Combinator)
|
||||
path: https://www.youtube.com/watch?v=iUVLuXjPAfg
|
||||
date: 2017-06-30T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
- name: Juan Benet on the Next Internet Revolution (TEDxSanFrancisco)
|
||||
title: Juan Benet on the Next Internet Revolution (TEDxSanFrancisco)
|
||||
path: https://www.youtube.com/watch?v=2RCwZDRwk48&t=449s
|
||||
date: 2016-12-08T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Juan Benet on The Decentralized Web (Silicon Valley Ethereum Meetup)
|
||||
title: Juan Benet on The Decentralized Web (Silicon Valley Ethereum Meetup)
|
||||
path: https://www.youtube.com/watch?v=cU-n_m-snxQ&t=12s
|
||||
date: 2016-10-23T07:00:00.000+00:00
|
||||
- name: Juan Benet on Distributed Apps with IPFS (Full Stack Fest)
|
||||
title: Juan Benet on Distributed Apps with IPFS (Full Stack Fest)
|
||||
path: https://www.youtube.com/watch?v=jONZtXMu03w&t=76s
|
||||
date: 2016-09-14T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Berlin IPFS/Blockstack Meetup
|
||||
title: Berlin IPFS/Blockstack Meetup
|
||||
path: https://www.youtube.com/watch?v=CAfagNmIeOE
|
||||
date: 2016-06-02T07:00:00.000+00:00
|
||||
- name: Berlin IPFS Meetup
|
||||
title: Berlin IPFS Meetup
|
||||
path: https://www.youtube.com/watch?v=UOC_QqtEJtg
|
||||
date: 2016-04-02T07:00:00.000+00:00
|
||||
tags:
|
||||
- official meetup
|
||||
- name: IPFS Workshop with Juan Benet (Open Knowledge Ireland)
|
||||
title: IPFS Workshop with Juan Benet (Open Knowledge Ireland)
|
||||
path: https://www.youtube.com/watch?v=S65z5NHfUT0
|
||||
date: 2016-01-21T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Juan Benet on IFPS (DEVCON1)
|
||||
title: Juan Benet on IFPS (DEVCON1)
|
||||
path: https://www.youtube.com/watch?v=ewpIi1y_KDc
|
||||
date: 2016-01-15T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Redistributing the Web with IPFS (BattleMeshV8)
|
||||
title: Redistributing the Web with IPFS (BattleMeshV8)
|
||||
path: https://www.youtube.com/watch?v=KGIyneFfiRE
|
||||
date: 2015-10-26T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Interview with Juan Benet (DEVCON1)
|
||||
title: Interview with Juan Benet (DEVCON1)
|
||||
path: https://www.youtube.com/watch?v=t7VjUKCdfpg
|
||||
date: 2015-10-15T07:00:00.000+00:00
|
||||
tags:
|
||||
- interview
|
||||
- name: Ian Preston on IPFS (Redecentralize Conf)
|
||||
title: Ian Preston on IPFS (Redecentralize Conf)
|
||||
path: https://www.youtube.com/watch?v=TiCUIh7tNtU
|
||||
date: 2015-10-18T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Containers at Hyperspeed (Container Camp)
|
||||
title: Containers at Hyperspeed (Container Camp)
|
||||
path: https://www.youtube.com/watch?v=vaIWRyotz4g
|
||||
date: 2015-09-11T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- containerization
|
||||
- name: Towards Universal Access to All Knowledge (Chaos Communication Camp)
|
||||
title: Towards Universal Access to All Knowledge (Chaos Communication Camp)
|
||||
path: https://www.youtube.com/watch?v=lKvoVxUQKD0
|
||||
date: 2015-08-13T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: Seattle Surf Incubator IPFS Meetup
|
||||
title: Seattle Surf Incubator IPFS Meetup
|
||||
path: https://vimeo.com/137657331
|
||||
date: 2015-07-23T07:00:00.000+00:00
|
||||
- name: Berlin Ethereum/IPFS Meetup
|
||||
title: Berlin Ethereum/IPFS Meetup
|
||||
path: https://www.youtube.com/watch?v=QlsBU2moRK4
|
||||
date: 2015-05-22T07:00:00.000+00:00
|
||||
- name: BlockChain University Part 2
|
||||
title: BlockChain University Part 2
|
||||
path: https://www.youtube.com/watch?v=999q3_htKPU
|
||||
date: 2015-05-05T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: BlockChain University Part 1
|
||||
title: BlockChain University Part 1
|
||||
path: https://www.youtube.com/watch?v=JhE_J1-BKJE
|
||||
date: 2015-05-05T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
- name: 'Juan Benet on IPFS: The Permanent Web (Talks at Sourcegraph 003)'
|
||||
title: 'Juan Benet on IPFS: The Permanent Web (Talks at Sourcegraph 003)'
|
||||
path: https://www.youtube.com/watch?v=Fa4pckodM9g
|
||||
date: 2014-07-22T07:00:00.000+00:00
|
||||
tags:
|
||||
- conferences
|
||||
---
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
date: 2020-10-28 06:00:00 +0000
|
||||
permalink: '/weekly-111/'
|
||||
translationKey: ipfs-weekly-111
|
||||
tags: weekly
|
||||
tags:
|
||||
- weekly
|
||||
header_image: /header-image-weekly-newsletter.png
|
||||
title: Welcome to IPFS Weekly 111
|
||||
description: ''
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
date: 2020-11-04 07:00:00 +0000
|
||||
permalink: '/weekly-112/'
|
||||
translationKey: ipfs-weekly-112
|
||||
tags: weekly
|
||||
tags:
|
||||
- weekly
|
||||
header_image: /header-image-weekly-newsletter.png
|
||||
title: Welcome to IPFS Weekly 112
|
||||
description: ''
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
date: 2020-11-11 07:00:00 +0000
|
||||
permalink: '/weekly-113/'
|
||||
translationKey: ipfs-weekly-113
|
||||
tags: weekly
|
||||
tags:
|
||||
- weekly
|
||||
header_image: /header-image-weekly-newsletter.png
|
||||
title: Welcome to IPFS Weekly 113
|
||||
description: ''
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
date: 2020-11-18 07:00:00 +0000
|
||||
permalink: '/weekly-114/'
|
||||
translationKey: ipfs-weekly-114
|
||||
tags: weekly
|
||||
tags:
|
||||
- weekly
|
||||
header_image: /header-image-weekly-newsletter.png
|
||||
title: Welcome to IPFS Weekly 114
|
||||
description: ''
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
date: 2020-11-25 07:00:00 +0000
|
||||
permalink: '/weekly-115/'
|
||||
translationKey: ipfs-weekly-115
|
||||
tags: weekly
|
||||
tags:
|
||||
- weekly
|
||||
header_image: /header-image-weekly-newsletter.png
|
||||
title: Welcome to IPFS Weekly 115
|
||||
description: ''
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
date: 2020-12-02 07:00:00 +0000
|
||||
permalink: '/weekly-116/'
|
||||
translationKey: ipfs-weekly-116
|
||||
tags: weekly
|
||||
tags:
|
||||
- weekly
|
||||
header_image: /header-image-weekly-newsletter.png
|
||||
title: Welcome to IPFS Weekly 116
|
||||
description: ''
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
date: 2020-12-09 07:00:00 +0000
|
||||
permalink: '/weekly-117/'
|
||||
translationKey: ipfs-weekly-117
|
||||
tags: weekly, browsers
|
||||
tags:
|
||||
- 'weekly'
|
||||
- 'browsers'
|
||||
header_image: /header-image-weekly-newsletter.png
|
||||
title: Welcome to IPFS Weekly 117
|
||||
description: ''
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
date: 2020-12-16 07:00:00 +0000
|
||||
permalink: '/weekly-118/'
|
||||
translationKey: ipfs-weekly-118
|
||||
tags: weekly, pinning
|
||||
tags:
|
||||
- 'weekly'
|
||||
- 'pinning'
|
||||
header_image: /header-image-weekly-newsletter.png
|
||||
title: Welcome to IPFS Weekly 118
|
||||
description: ''
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
---
|
||||
date: 2021-01-20 07:00:00 +0000
|
||||
permalink: "/weekly-119/"
|
||||
permalink: '/weekly-119/'
|
||||
translationKey: ipfs-weekly-119
|
||||
tags: weekly
|
||||
header_image: "/header-image-weekly-newsletter.png"
|
||||
tags:
|
||||
- weekly
|
||||
header_image: '/header-image-weekly-newsletter.png'
|
||||
title: Welcome to IPFS Weekly 119
|
||||
description: ''
|
||||
author: Jenn Turner
|
||||
|
||||
---
|
||||
|
||||
Here’s what’s happening in the [InterPlanetary File System](https://ipfs.io/) galaxy!
|
||||
|
||||

|
||||
@@ -41,10 +42,10 @@ What was once a single lesson on data structures is now a meaty multiple-choice
|
||||
|
||||
## Brand new on IPFS
|
||||
|
||||
* [js-ipfs 0.53](https://blog.ipfs.io/2021-01-19-js-ipfs-0-50/) has launched with an experimental gRPC-over-websockets server and the latest libp2p.
|
||||
* Answering the question “Is [Berty](https://berty.tech/blog/blockchain-berty/) based on blockchain?” because in some cases yes, but others no.
|
||||
* It’s that time of year again, except this time [Textile](https://blog.textile.io/textile-going-virtual-at-ethdenver/) going virtual with EthDenver.
|
||||
* The [Beyond Bitswap project](https://research.protocol.ai/blog/2021/beyond-swapping-bits-project-review-and-preview/) review has launched and released a new Bitswap paper!
|
||||
- [js-ipfs 0.53](https://blog.ipfs.io/2021-01-19-js-ipfs-0-50/) has launched with an experimental gRPC-over-websockets server and the latest libp2p.
|
||||
- Answering the question “Is [Berty](https://berty.tech/blog/blockchain-berty/) based on blockchain?” because in some cases yes, but others no.
|
||||
- It’s that time of year again, except this time [Textile](https://blog.textile.io/textile-going-virtual-at-ethdenver/) going virtual with EthDenver.
|
||||
- The [Beyond Bitswap project](https://research.protocol.ai/blog/2021/beyond-swapping-bits-project-review-and-preview/) review has launched and released a new Bitswap paper!
|
||||
|
||||
## People are building the coolest stuff with IPFS
|
||||
|
||||
@@ -75,4 +76,5 @@ Discover how to build a Substack on IPFS [using Pinata](https://medium.com/pinat
|
||||
Get involved with IPFS by checking us out on [GitHub](https://github.com/ipfs), joining discussions on [our community forum](https://discuss.ipfs.io/), or hitting us up [in chat](https://riot.im/app/#/room/#ipfs:matrix.org). Have a suggestion? [Email us](mailto:newsletter@ipfs.io).
|
||||
|
||||
Get the IPFS Weekly in your inbox, each Tuesday.
|
||||
<p><a href="https://ipfs.us4.list-manage.com/subscribe?u=25473244c7d18b897f5a1ff6b&id=cad54b2230" class="button button-primary">Sign up now</a></p>
|
||||
|
||||
<p><a href="https://ipfs.us4.list-manage.com/subscribe?u=25473244c7d18b897f5a1ff6b&id=cad54b2230" class="button button-primary">Sign up now</a></p>
|
||||
|
||||
@@ -2,35 +2,40 @@
|
||||
title: Welcome to IPFS Weekly 120
|
||||
description: ''
|
||||
date: 2021-01-27 07:00:00 +0000
|
||||
permalink: "/weekly-120/"
|
||||
permalink: '/weekly-120/'
|
||||
translationKey: ipfs-weekly-120
|
||||
header_image: "/header-image-weekly-newsletter.png"
|
||||
tags: weekly
|
||||
header_image: '/header-image-weekly-newsletter.png'
|
||||
tags:
|
||||
- weekly
|
||||
author: Jenn Turner
|
||||
|
||||
---
|
||||
|
||||
Here’s what’s happening in the [InterPlanetary File System](https://ipfs.io/) galaxy!
|
||||
|
||||
## Join us at ETHDenver 2021
|
||||
Our favorite community event is back and this time, it’s virtual. ETHDenver, the largest gathering of Web3 builders in North America, takes place February 5-12. Like last year, the IPFS community will be there to staff the IPFS Help Desk, so look for us in the Virtual Castle. Stay tuned because we have some very awesome announcements in store.
|
||||
|
||||
Our favorite community event is back and this time, it’s virtual. ETHDenver, the largest gathering of Web3 builders in North America, takes place February 5-12. Like last year, the IPFS community will be there to staff the IPFS Help Desk, so look for us in the Virtual Castle. Stay tuned because we have some very awesome announcements in store.
|
||||
|
||||
[Register to attend](https://www.ethdenver.com/)
|
||||
|
||||
## Announcing the IPFS Innovation Grant Program
|
||||
Last week, Unstoppable Domains introduced the IPFS Innovation Grant program to support groundbreaking projects utilizing IPFS with $2500 of funding and support, in order to advance the decentralized web. Applications are due February 28th, 2021 and you can also apply if your product is already live.
|
||||
|
||||
Last week, Unstoppable Domains introduced the IPFS Innovation Grant program to support groundbreaking projects utilizing IPFS with \$2500 of funding and support, in order to advance the decentralized web. Applications are due February 28th, 2021 and you can also apply if your product is already live.
|
||||
|
||||
[Apply now](https://medium.com/unstoppabledomains/the-ipfs-innovation-grant-program-6eff25d60b3f)
|
||||
|
||||
## Read the Brave x IPFS AMA on Reddit
|
||||
|
||||
Amid all the excitement of the Brave browser native IPFS integration last week, Brave CTO and co-founder Brian Bondy, and IPFS Ecosystem Lead Dietrich Ayala took the time out to answer any and all of the community’s questions. Read their responses on Reddit now!
|
||||
|
||||
[Read more](https://www.reddit.com/r/IAmA/comments/l2tvx1/we_are_brian_bondy_cofounder_and_cto_of_the_brave/)
|
||||
|
||||
## Brand new on IPFS
|
||||
* [ResNetLab reviews 2020](https://research.protocol.ai/blog/2021/resnetlab-2020-in-review-we-love-it-when-a-plan-comes-together/); Hydra Booster, Gossipsub, Drand, and Filecoin all shipped this year!
|
||||
* [From the IPFS blog](https://blog.ipfs.io/2021-01-21-how-we-put-ipfs-in-brave/): How we put IPFS in Brave, a technical overview taking you behind the scenes.
|
||||
* [Getting started with Pinata](https://medium.com/pinata/how-to-use-ipfs-with-brave-2fcf501babc8): How to use IPFS with Brave utilizing a pinning service.
|
||||
* [Lifehacker asks](https://www.lifehacker.com.au/2021/01/what-is-ipfs-and-why-does-it-matter-in-braves-web-browser/), “What is IPFS and why does it matter in Brave’s web browser?”
|
||||
|
||||
- [ResNetLab reviews 2020](https://research.protocol.ai/blog/2021/resnetlab-2020-in-review-we-love-it-when-a-plan-comes-together/); Hydra Booster, Gossipsub, Drand, and Filecoin all shipped this year!
|
||||
- [From the IPFS blog](https://blog.ipfs.io/2021-01-21-how-we-put-ipfs-in-brave/): How we put IPFS in Brave, a technical overview taking you behind the scenes.
|
||||
- [Getting started with Pinata](https://medium.com/pinata/how-to-use-ipfs-with-brave-2fcf501babc8): How to use IPFS with Brave utilizing a pinning service.
|
||||
- [Lifehacker asks](https://www.lifehacker.com.au/2021/01/what-is-ipfs-and-why-does-it-matter-in-braves-web-browser/), “What is IPFS and why does it matter in Brave’s web browser?”
|
||||
|
||||
## People are building the coolest stuff with IPFS
|
||||
|
||||
@@ -42,7 +47,7 @@ What’s already possible in legacy DNS for [ENS and IPFS support](https://easyd
|
||||
|
||||
The Graph explains why [GRT cannot be ignored](https://medium.com/genel-k%C3%BClt%C3%BCr/the-graph-why-grt-cannot-be-ignored-26a1b44d97c8).
|
||||
|
||||
[Discover Web 3.0 Hosting](https://hackernoon.com/web-30-hosting-onboarding-websites-to-the-new-internet-m5m34mj): Onboarding Websites to the New Internet
|
||||
[Discover Web 3.0 Hosting](https://hackernoon.com/web-30-hosting-onboarding-websites-to-the-new-internet-m5m34mj): Onboarding Websites to the New Internet
|
||||
|
||||
[Wireletter.com](https://t.co/N32JPxbfA6?amp=1) just updated to use IPFS for content storage.
|
||||
|
||||
@@ -51,22 +56,25 @@ The Graph explains why [GRT cannot be ignored](https://medium.com/genel-k%C3%BCl
|
||||
Fleek reminds us why is it important to rebuild the web, [in this recent thread](https://twitter.com/FleekHQ/status/1352606023387934720).
|
||||
|
||||
## Tell us!
|
||||
|
||||
What do you think the IPFS Weekly newsletter is missing? 🤔
|
||||
|
||||
[I wish the IPFS Weekly had...](https://forms.gle/buAuBx92kLsiTL1N6)
|
||||
|
||||
## Job hunting? Work on IPFS!
|
||||
Technical Project Manager (Infura): Track active projects, remove roadblocks, and support the development team in identifying and keeping up-to-date all project requirements. Manage project, feature, technical debt, and bug backlogs working across teams in prioritizing work and planning out sprints. ConsenSys, Remote.
|
||||
|
||||
Technical Project Manager (Infura): Track active projects, remove roadblocks, and support the development team in identifying and keeping up-to-date all project requirements. Manage project, feature, technical debt, and bug backlogs working across teams in prioritizing work and planning out sprints. ConsenSys, Remote.
|
||||
|
||||
Ecosystem Developer: We are looking for a technical community manager to help us create a world-class developer ecosystem and experience around our open source community. 3Box, Remote.
|
||||
|
||||
Software Engineer: You will be responsible for pushing the limits of p2p technology within browser environments. Your work will range from optimizing crypto and networking libraries to designing user experiences around difficult usability challenges. 3Box, Remote.
|
||||
|
||||
Sr. Backend Engineer: Have built systems at scale in the past and can discuss the architectural tradeoffs that went into them. Experience with data lakes, data warehousing, and OLAP technologies. Self-directed. We want you to own the systems you build. ConsenSys, Remote.
|
||||
Sr. Backend Engineer: Have built systems at scale in the past and can discuss the architectural tradeoffs that went into them. Experience with data lakes, data warehousing, and OLAP technologies. Self-directed. We want you to own the systems you build. ConsenSys, Remote.
|
||||
|
||||
**Leave the web better than you found it. ❤️**
|
||||
|
||||
Get involved with IPFS by checking us out on [GitHub](https://github.com/ipfs), joining discussions on [our community forum](https://discuss.ipfs.io/), or hitting us up [in chat](https://riot.im/app/#/room/#ipfs:matrix.org). Have a suggestion? [Email us](mailto:newsletter@ipfs.io).
|
||||
|
||||
Get the IPFS Weekly in your inbox, each Tuesday.
|
||||
|
||||
<p><a href="https://ipfs.us4.list-manage.com/subscribe?u=25473244c7d18b897f5a1ff6b&id=cad54b2230" class="button button-primary">Sign up now</a></p>
|
||||
|
||||
@@ -1,23 +1,27 @@
|
||||
---
|
||||
title: Welcome to IPFS Weekly 121
|
||||
description: ETHDenver 2021 kicks off this week, discover a love letter to IPFS, plus
|
||||
description:
|
||||
ETHDenver 2021 kicks off this week, discover a love letter to IPFS, plus
|
||||
catch up on all of the presentation from the January virtual meetup!
|
||||
date: 2021-02-03 07:00:00 +0000
|
||||
permalink: "/weekly-121/"
|
||||
permalink: '/weekly-121/'
|
||||
translationKey: ''
|
||||
header_image: "/header-image-weekly-newsletter.png"
|
||||
tags: weekly
|
||||
header_image: '/header-image-weekly-newsletter.png'
|
||||
tags:
|
||||
- weekly
|
||||
author: Jenn Turner
|
||||
|
||||
---
|
||||
|
||||
Here’s what’s happening in the [InterPlanetary File System](https://ipfs.io/) galaxy!
|
||||
|
||||
## Does IPFS have a blockchain?
|
||||
One topic of discussion we see from time to time, that seems to be gaining popularity is the question of whether IPFS has a blockchain. It’s been integrated with blockchains, and it deals with the complexities of storage. Luckily, this recent post highlights the various answers you can feel empowered to use when someone asks you this important question.
|
||||
|
||||
One topic of discussion we see from time to time, that seems to be gaining popularity is the question of whether IPFS has a blockchain. It’s been integrated with blockchains, and it deals with the complexities of storage. Luckily, this recent post highlights the various answers you can feel empowered to use when someone asks you this important question.
|
||||
|
||||
[Read more](https://doesipfshaveablockchain.com/)
|
||||
|
||||
## A letter to my high school self about IPFS ❤️
|
||||
|
||||
Recently, to the benefit of our community, Henry Quinn discovered IPFS. But unlike some pieces of code one finds perusing the web, this experience reawakened a curiosity he remembered from a very specific time period. Recommended reading for all of the curious tinkerers.
|
||||
|
||||
[Read more](https://henryneeds.coffee/posts/decentralized-01-week-with-ipfs/)
|
||||
@@ -25,19 +29,21 @@ Recently, to the benefit of our community, Henry Quinn discovered IPFS. But unli
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/ad69PayYOlU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
## Catch up on January talks from Peergos and more
|
||||
|
||||
If you missed our January virtual meetup, or want to revisit something you heard there, now all of the presentations are available for your viewing! Last month we had talks from the IPFS planning team, Peergos, Humanode, and Vault74, so be sure to check them all out.
|
||||
|
||||
[Watch now](https://www.youtube.com/playlist?list=PLuhRWgmPaHtToVYaDkd6ZTwB2Lo30s1vB)
|
||||
|
||||
## Brand new on IPFS
|
||||
* [Now you can build with Clay](https://blog.ceramic.network/ceramic-network-clay-testnet/), the official testnet for the Ceramic Network!
|
||||
* [Discover the Multiverse](https://www.multiverse-vcs.com/), a decentralized version control system for p2p development.
|
||||
* [Humanode](https://discuss.ipfs.io/t/first-humanode-tests-a-public-permissionless-network-of-biometrically-encrytped-human-nodes-running-merkle-crdt-cluster-on-ipfs/10004), a public permissionless network of biometrically encrytped human nodes built on IPFS.
|
||||
* [This design combines RSS and IPFS](https://discuss.ipfs.io/t/a-design-for-ipfs-version-rss/10059), titled IPIS, the InterPlanetary Information Syndication.
|
||||
|
||||
- [Now you can build with Clay](https://blog.ceramic.network/ceramic-network-clay-testnet/), the official testnet for the Ceramic Network!
|
||||
- [Discover the Multiverse](https://www.multiverse-vcs.com/), a decentralized version control system for p2p development.
|
||||
- [Humanode](https://discuss.ipfs.io/t/first-humanode-tests-a-public-permissionless-network-of-biometrically-encrytped-human-nodes-running-merkle-crdt-cluster-on-ipfs/10004), a public permissionless network of biometrically encrytped human nodes built on IPFS.
|
||||
- [This design combines RSS and IPFS](https://discuss.ipfs.io/t/a-design-for-ipfs-version-rss/10059), titled IPIS, the InterPlanetary Information Syndication.
|
||||
|
||||
## People are building the coolest stuff with IPFS
|
||||
|
||||
Read the [2020 Retrospective for ENS](https://medium.com/the-ethereum-name-service/2020-retrospective-for-ens-7c5364142560) by Brantly Millegan.
|
||||
Read the [2020 Retrospective for ENS](https://medium.com/the-ethereum-name-service/2020-retrospective-for-ens-7c5364142560) by Brantly Millegan.
|
||||
|
||||
Five of the most secure ways [the Bitcoin whitepaper](https://decrypt.co/55832/5-most-secure-ways-the-bitcoin-whitepaper-is-hosted-globally) is hosted globally.
|
||||
|
||||
@@ -45,25 +51,28 @@ Five of the most secure ways [the Bitcoin whitepaper](https://decrypt.co/55832/5
|
||||
|
||||
Check out the [Thor Android browser](https://discuss.ipfs.io/t/thor-browser-android-application/9910), a web browser that supports Tor and IPFS, IPNS, and magnet urls.
|
||||
|
||||
Read up on [Bitcoin scales](https://read.cash/@LeoBeltran/bitcoin-escala-como-almacenar-la-cadena-de-bloques-usando-ipfs-fee00410): how to store the blockchain using IPFS.
|
||||
Read up on [Bitcoin scales](https://read.cash/@LeoBeltran/bitcoin-escala-como-almacenar-la-cadena-de-bloques-usando-ipfs-fee00410): how to store the blockchain using IPFS.
|
||||
|
||||
## Tell us!
|
||||
|
||||
What do you look forward to most from the IPFS Weekly? 🤔
|
||||
|
||||
[My favorite part of the IPFS Weekly is...](https://forms.gle/zC5JqHxZqGMN1zQU9)
|
||||
|
||||
## Job hunting? Work on IPFS!
|
||||
[Senior Integration Engineer](https://textile.breezy.hr/p/cad4ea4bf0c9-senior-integrations-engineer): You will be responsible for providing technical leadership and guidance to our users while they are integrating with libp2p, IPFS, Filecoin, and Textile. Textile, Remote.
|
||||
|
||||
[Technical Project Manager (Infura)](https://boards.greenhouse.io/consensys/jobs/2507095): Track active projects, remove roadblocks, and support the development team in identifying and keeping up-to-date all project requirements. Manage project, feature, technical debt, and bug backlogs working across teams in prioritizing work and planning out sprints. ConsenSys, Remote.
|
||||
[Senior Integration Engineer](https://textile.breezy.hr/p/cad4ea4bf0c9-senior-integrations-engineer): You will be responsible for providing technical leadership and guidance to our users while they are integrating with libp2p, IPFS, Filecoin, and Textile. Textile, Remote.
|
||||
|
||||
[Technical Project Manager (Infura)](https://boards.greenhouse.io/consensys/jobs/2507095): Track active projects, remove roadblocks, and support the development team in identifying and keeping up-to-date all project requirements. Manage project, feature, technical debt, and bug backlogs working across teams in prioritizing work and planning out sprints. ConsenSys, Remote.
|
||||
|
||||
[Ecosystem Developer](https://jobs.lever.co/3box/ec1093c5-ed31-483c-b1b3-49b07bd0bd2e): We are looking for a technical community manager to help us create a world-class developer ecosystem and experience around our open source community. 3Box, Remote.
|
||||
|
||||
[Sr. Backend Engineer](https://boards.greenhouse.io/consensys/jobs/2426803): Have built systems at scale in the past and can discuss the architectural tradeoffs that went into them. Experience with data lakes, data warehousing, and OLAP technologies. Self-directed. We want you to own the systems you build. ConsenSys, Remote.
|
||||
[Sr. Backend Engineer](https://boards.greenhouse.io/consensys/jobs/2426803): Have built systems at scale in the past and can discuss the architectural tradeoffs that went into them. Experience with data lakes, data warehousing, and OLAP technologies. Self-directed. We want you to own the systems you build. ConsenSys, Remote.
|
||||
|
||||
**More like InterPlanetary FUN System. ❤️**
|
||||
|
||||
Get involved with IPFS by checking us out on [GitHub](https://github.com/ipfs), joining discussions on [our community forum](https://discuss.ipfs.io/), or hitting us up [in chat](https://riot.im/app/#/room/#ipfs:matrix.org). Have a suggestion? [Email us](mailto:newsletter@ipfs.io).
|
||||
|
||||
Get the IPFS Weekly in your inbox, each Tuesday.
|
||||
|
||||
<p><a href="https://ipfs.us4.list-manage.com/subscribe?u=25473244c7d18b897f5a1ff6b&id=cad54b2230" class="button button-primary">Sign up now</a></p>
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
date: 2019-09-03
|
||||
permalink: /zh-cn/ipfs-weekly-57/
|
||||
translationKey: ipfs-weekly-57
|
||||
tags: weekly
|
||||
tags:
|
||||
- weekly
|
||||
title: IPFS 周报-57
|
||||
author: 默奕
|
||||
---
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
date: 2019-09-10
|
||||
permalink: /zh-cn/ipfs-weekly-58/
|
||||
translationKey: ipfs-weekly-58
|
||||
tags: weekly
|
||||
tags:
|
||||
- weekly
|
||||
title: IPFS 周报-58
|
||||
author: 默奕
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user