# Is it possible to make Syncthing implement based on IPFS?

**URL:** https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841
**Category:** Feature
**Created:** [February 12, 2019, 6:43am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841 "2019-02-12T06:43:17Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![Ben](https://forum.syncthing.net/letter_avatar_proxy/v4/letter/b/df788c/32.png) [@Ben](https://forum.syncthing.net/u/Ben)
#### Post date: [February 12, 2019, 6:43am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/1 "2019-02-12T06:43:17Z")

</div>

Hi Syncthing Developers,

I am a user seeking a reliable and flexible solution for private storage. Recently I learned a few things about IPFS (which is thought as a replacer of HTTP). I find IPFS shares a lot of common underline ideas with syncthing. Currently syncthing is great for data files backup and sync, and has windows, mac, linux and android platforms support. But I think if syncthing is built on more general infrastructure, it will have more opportunity to move to future.

Any idea? I would like to hear your thinkings.

Thanks,

---

<div class="post-metadata">

### Author: ![calmh](https://forum.syncthing.net/user_avatar/forum.syncthing.net/calmh/32/15311_2.png) [@calmh](https://forum.syncthing.net/u/calmh)
#### Post date: [February 12, 2019, 6:46am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/2 "2019-02-12T06:46:02Z")

</div>

I think the two concepts are rather different, and each serve their niche.

---

<div class="post-metadata">

### Author: ![Ben](https://forum.syncthing.net/letter_avatar_proxy/v4/letter/b/df788c/32.png) [@Ben](https://forum.syncthing.net/u/Ben)
#### Post date: [February 12, 2019, 6:51am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/3 "2019-02-12T06:51:17Z")

</div>

Can you explain deeper?

My understanding is the technologies are same, and infrastructure are same, but the applications built on those technologies and infrastructure are different.

---

<div class="post-metadata">

### Author: ![calmh](https://forum.syncthing.net/user_avatar/forum.syncthing.net/calmh/32/15311_2.png) [@calmh](https://forum.syncthing.net/u/calmh)
#### Post date: [February 12, 2019, 6:53am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/4 "2019-02-12T06:53:19Z")

</div>

One is a distributed filesystem, the other is a file sync application. No technology is shared, afaik.

---

<div class="post-metadata">

### Author: ![Ben](https://forum.syncthing.net/letter_avatar_proxy/v4/letter/b/df788c/32.png) [@Ben](https://forum.syncthing.net/u/Ben)
#### Post date: [February 12, 2019, 8:59am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/5 "2019-02-12T08:59:42Z")

</div>

Hi Borg,

Here is a project brig for your reference.

brig - decentralized & secure file synchronization

[https://brig.readthedocs.io/en/latest/](https://brig.readthedocs.io/en/latest/)

---

<div class="post-metadata">

### Author: ![AudriusButkevicius](https://forum.syncthing.net/user_avatar/forum.syncthing.net/audriusbutkevicius/32/277_2.png) [@AudriusButkevicius](https://forum.syncthing.net/u/AudriusButkevicius)
#### Post date: [February 12, 2019, 9:11am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/6 "2019-02-12T09:11:59Z")

</div>

Sorry, why is this relevant?

---

<div class="post-metadata">

### Author: ![Ben](https://forum.syncthing.net/letter_avatar_proxy/v4/letter/b/df788c/32.png) [@Ben](https://forum.syncthing.net/u/Ben)
#### Post date: [February 12, 2019, 9:17am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/7 "2019-02-12T09:17:29Z")

</div>

`brig` is also a file synchronization tool, but based on `ipfs`, which naturally with distributed & secure & version control functions.

---

<div class="post-metadata">

### Author: ![AudriusButkevicius](https://forum.syncthing.net/user_avatar/forum.syncthing.net/audriusbutkevicius/32/277_2.png) [@AudriusButkevicius](https://forum.syncthing.net/u/AudriusButkevicius)
#### Post date: [February 12, 2019, 11:41am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/8 "2019-02-12T11:41:56Z")

</div>

Right, so what are you after on this forum?

---

<div class="post-metadata">

### Author: ![Ben](https://forum.syncthing.net/letter_avatar_proxy/v4/letter/b/df788c/32.png) [@Ben](https://forum.syncthing.net/u/Ben)
#### Post date: [February 12, 2019, 3:14pm UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/9 "2019-02-12T15:14:22Z")

</div>

Hi Butkevicius,

I am a user of Syncthing, and currently I think Syncthing is great and your guys do a great work. But when new technologies comes out, and it looks having a bright future, why not embrace it.

I am software developer too. I believe as a developer we all want what we do are meaningful. Making self be well-informed while working hard are always right.

I just want to hear some opinions about IPFS for file storage (include sync, backup applications) from the first-line developers. That’s why I raise this question. Why not open-mind to take a look and think about it.

---

<div class="post-metadata">

### Author: ![odin](https://forum.syncthing.net/user_avatar/forum.syncthing.net/odin/32/5905_2.png) [@odin](https://forum.syncthing.net/u/odin)
#### Post date: [February 12, 2019, 3:41pm UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/10 "2019-02-12T15:41:05Z")

</div>

> [@Ben](#):
>
> But when new technologies comes out, and it looks having a bright future, why not embrace it.

A possible reason: Because appearances aren’t everything. I’ve seen _multiple_ content-addressed distributed filesystems that planned to replace the web; I’ll certainly consider the possibility that this time around it might actually work, but I’m not holding my breath.

> [@Ben](#):
>
> I just want to hear some opinions about IPFS for file storage

This is the key thing here. IPFS is for file storage; Syncthing is for file synchronisation. If you can usefully have a mountpoint for IPFS, then Syncthing should be able to use it for a directory. If you can’t, well, that’s a bit more complicated. That said, content-addressable file systems are extremely different from our usual ways of thinking, and I suspect that most of `brig` is actually dedicated to storing the metadata needed to build a file tree.

The one way I can think of that would make sense for Syncthing to do with IPFS would be if you could use Syncthing to synchronise things that aren’t files on your local filesystem - if there was a system through which you could have a node that stored its files on S3 (or, if you’re feeling particularly ironic, Dropbox). Then one of the ‘backends’ could use IPFS.

Mind you, by my understanding that would mean publishing the data so that it is accessible to anyone who gets hold of the IPFS address of the file. So probably not the best thing for private data, unless you store it all encrypted.

---

<div class="post-metadata">

### Author: ![AudriusButkevicius](https://forum.syncthing.net/user_avatar/forum.syncthing.net/audriusbutkevicius/32/277_2.png) [@AudriusButkevicius](https://forum.syncthing.net/u/AudriusButkevicius)
#### Post date: [February 12, 2019, 5:49pm UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/11 "2019-02-12T17:49:22Z")

</div>

There are many great things out there.

People using syncthing care about syncing files between their machines, I don’t see how IPFS fits here, other than wanting to wedge in a kitchen sink into syncthing.

We might as well sprinkle a bit of blockchain too because because it’s cool new and all of that and we’re supposed to “embrace it”.

Syncthing has a filesystem abstraction, so if you care strongly, and have the skills (given you are a developer), knock yourself out and add a blockchain based singing dancing filesystem.

I personally have no interest in this.

---

<div class="post-metadata">

### Author: ![sisa](https://forum.syncthing.net/user_avatar/forum.syncthing.net/sisa/32/1476_2.png) [@sisa](https://forum.syncthing.net/u/sisa)
#### Post date: [February 12, 2019, 8:48pm UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/12 "2019-02-12T20:48:35Z")

</div>

> [@AudriusButkevicius](#):
>
> singing dancing filesystem

I like the idea and wonder how mankind would have evolved, if we all had singing dancing filesystems since the 1990s…

---

<div class="post-metadata">

### Author: ![calmh](https://forum.syncthing.net/user_avatar/forum.syncthing.net/calmh/32/15311_2.png) [@calmh](https://forum.syncthing.net/u/calmh)
#### Post date: [February 12, 2019, 8:59pm UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/13 "2019-02-12T20:59:32Z")

</div>

IPFS is a fine distributed content addressable file system for when you need a distributed content addressable file system. Restic is a neat backup system for when you need a backup system. Rsync is a great stateless one way sync program for when you need to sync files in one direction without keeping state. Syncthing are none of these things and that’s fine, because they exist on their own, and none of them are Syncthing.

---

<div class="post-metadata">

### Author: ![Ben](https://forum.syncthing.net/letter_avatar_proxy/v4/letter/b/df788c/32.png) [@Ben](https://forum.syncthing.net/u/Ben)
#### Post date: [February 13, 2019, 4:12am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/14 "2019-02-13T04:12:49Z")

</div>

> [@odin](#):
>
> IPFS is for file storage; Syncthing is for file synchronisation.

As a distributed system, synchronisation is a must have function. So naturally IPFS supports sync. There are two common things I saw between syncthing and IPFS.

1. Network: they all use p2p transport between nodes.
2. Block Exchange: they all exchange files based on block.

The things that syncthing can leverage from IPFS:

1. IPFS **Routing** layer includes
  - **peer routing** – to find other nodes
  - **content routing** – to find data published to ipfs

2. The merkledag data structure, which I think is a little more advanced than **index** and **index\_update** in Syncthing.
3. Naming – PKI namespace and mutable pointers([https://github.com/ipfs/specs/blob/master/architecture](https://github.com/ipfs/specs/blob/master/architecture))

You can find more detail in [https://github.com/ipfs/specs/tree/master/architecture](https://github.com/ipfs/specs/tree/master/architecture).

> [@odin](#):
>
> by my understanding that would mean publishing the data so that it is accessible to anyone who gets hold of the IPFS address of the file.

You can setup private distributed storage network on IPFS ([Setting up your first distributed private storage network on IPFS: Part 1 | by vasa | towardsblockchain | Medium](https://medium.com/coinmonks/setting-up-your-first-distributed-private-storage-network-on-ipfs-part-1-a6ff15222b90))

---

<div class="post-metadata">

### Author: ![calmh](https://forum.syncthing.net/user_avatar/forum.syncthing.net/calmh/32/15311_2.png) [@calmh](https://forum.syncthing.net/u/calmh)
#### Post date: [February 13, 2019, 7:10am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/15 "2019-02-13T07:10:34Z")

</div>

If you want to try to re-engineer syncthing on top of IPFS, go for it. We, however, will not.

---

<div class="post-metadata">

### Author: ![odin](https://forum.syncthing.net/user_avatar/forum.syncthing.net/odin/32/5905_2.png) [@odin](https://forum.syncthing.net/u/odin)
#### Post date: [February 13, 2019, 2:18pm UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/16 "2019-02-13T14:18:26Z")

</div>

> [@Ben](#):
>
> As a distributed system, synchronisation is a must have function. So naturally IPFS supports sync.

That’s not the same thing as being a synchronisation system. IPFS distributed content-addressed files across the swarm. You still need a system to keep track of the mapping between file names and contents, _and synchronise that between nodes_.

> [@Ben](#):
>
> which I think is a little more advanced

Advanced is a red herring. The F-35 is a lot more advanced than other jet fighters. It remains entirely an open question whether it is fit for purpose.

> [@Ben](#):
>
> You can setup private distributed storage network on IPFS

Alright, but at that point, what advantage does it bring over Syncthing? It appears to me that such a use case is seen as decidedly a secondary objective, in light of the “replace HTTP with a distributed protocol” focus of the project’s website.

---

<div class="post-metadata">

### Author: ![saviodsouza](https://forum.syncthing.net/user_avatar/forum.syncthing.net/saviodsouza/32/5133_2.png) [@saviodsouza](https://forum.syncthing.net/u/saviodsouza)
#### Post date: [February 17, 2019, 4:01pm UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/17 "2019-02-17T16:01:25Z")

</div>

You could put this proposal on the rclone forums…

---

<div class="post-metadata">

### Author: ![xor-gate](https://forum.syncthing.net/user_avatar/forum.syncthing.net/xor-gate/32/2934_2.png) [@xor-gate](https://forum.syncthing.net/u/xor-gate)
#### Post date: [February 22, 2019, 10:48am UTC](https://forum.syncthing.net/t/is-it-possible-to-make-syncthing-implement-based-on-ipfs/12841/18 "2019-02-22T10:48:45Z")

</div>

This is very nice explained!
