That the current web is centralized has little to do with its technical design, and everything to do with economic and structural incentives that have made it that way.
It's tempting to say "start afresh", but we'll just be trading our current problems for a new set of problems IPFS introduces. It's a law of nature that problems are always conserved.
I would rather we do the hard work of fixing the web we've got, in particular the hard issue of how to re-decentralize it.
Isn't that exactly the problem ipfs is attempting to address. What kind of solution do you want and why does this one not work for you? It's easier to discard someone else's idea than it is to evaluate it's merits. I'm not sure this is the solution but it looks interesting and it appears to interoperate with the existing Web via gateways even though the author does not make this clear early on in the documentation.
We've had the web for twenty years now, and are just beginning to understand what it is and how it changes the world. If you're suggesting using IPFS (or any other system) as a way to expand and grow the web, I'm with you. But replacing the web means throwing out a lot of hard-won experience and intuition, in favor of a system that's bound to have its own issues down the line.
I'm so lost at this assertion. How is this a social / political problem?
IPFS is not permanent hosting. It is not an attempt to take power away from others and distribute it to the masses. It is purely a technical problem, which i think is objectively true.
I have a feeling that you believe IPFS is partially designed to subvert governments/etc. And to an extent, that may be possible, but it is being built with DMCA's in mind. IPFS wants to allow governments / copyright holders to take content down from the network. It is not trying to become a pirate haven. Why? Well, mainly because piracy inhibits adoption. There may not be a way to DMCA currently (i haven't checked in months), but there are Github issue(s) on it. The creators don't want to see IPFS blocked in countries because it can permanently host illegal content. Which makes a ton of sense.
The problem IPFS is trying to solve, as i see it, is purely technical. As advertised in pretty much every pitch i've seen for this technology, we are simply scaling too fast in storage and not fast enough in bandwidth. It appears impossible to handle the infrastructure load of files we are creating. IPFS solves this by automatically pulling content as locally as possible, reducing network overhead. Furthermore, it means that a DDOS/viral/etc of a central resource will not kill it. It's safely and mostly permanently (barring DMCA/etc requests) available.
So with that said, what political and social problem do you see IPFS trying to solve? I don't see any.
"The Internet has been one of the great equalizers in human history and a real accelerator of innovation. But the increasing consolidation of control is a threat to that.
"IPFS remains true to the original vision of the open and flat web, but delivers the technology which makes that vision a reality."
This presents IPFS as the technological cure for the "consolidation of control" that threatens the Internet.
These are not purely technical problems.
Really? The number of BitTorrent users is considerably greater than the number of IPFS users, so surely the exact opposite is true.
Maybe a piracy platform build on top of IPFS could be its killer app.
How is it a technical problem? Current web technologies allow decentralised web (except for maybe root name servers). Everyone can host their own content, control their own servers, basically everything below your hostname. The implementation has led down a centralised path.
There are multiple flaws in your reasoning: for one, the web was also a technical solution to a social problem; also, IPFS is someone's hard work aimed at fixing the web we've got.
I'd agree that some social issues cannot be solved by technology, but many have been.
E.g., without looking at the information age: in London before the Clean Air Act thousands people literally died of the smog, but the CAA was made possible only by increased availability of electricity and gas heating.
My point is that replacing a complex technical system with a different technical system only reshuffles the set of problems that will need solving. The social and political problems that made the web what it is today won't disappear due to a redesign.
But there are some things that mirroring and content addressing would be perfect for. Replacement for the current script and files CDN for example. Package/software repos, firmware downloads, news sites, etc. Anything accessed by lots of people and not updated every second.
And there's also the location context. If you live on the west coast US, maybe it doesn't matter. But if half of the web traffic could move to ipfs, Australia for example should get an amazing speed increase by unblocking the big pipes.
The solution that I see, is transitioning from social media, where people use some centralized service to "socialize", to social infrastructure, where people run their own servers and connect to the servers of their friends making a real social network. IPFS may be a step in this direction.
The problem with things like IPFS, is that they require political backing or economical incentive to really spread, otherwise they are most likely just going to remain a nice demo for a few technical people.
So IMHO technology needs to go hand in hand with economical or political incentive, but how is an open question.
And here i was just listening to Adam Curtis talk about his latest creation, Hypernormalisation, where he touched on the issue of thinking one can solve social issues with engineering.
I cannot even host a server on my residential service without violating the ToS agreement. Even if I did, there is the problem of not enough IP addresses so my IP is dynamic. This is solved with dynamic dns, etc but is another technical hurdle to overcome. And then there is NAT creating yet another layer to hosting your own server. And I won't even go into security.
These are all solvable, but to say there is little to do with the technical design ignores all of the problems that led us to where we are today.
There is merit in doing the technical work to make a decentralized paradigm easier, but the lack of an economic model is the tougher of the two problems.
One is discoverability. It's tough to find a bunch of scattered systems all over the place. That's a problem Facebook, Reddit, and HN address.
Another is identity. Tracking who's doing what (and what their permissions/authorities are) over a bunch of sites is ... a pain. I'm still mulling over a comment a few days back on HN that a user had 770 different password-based identities in their accounts-management storage (personal).
Search (related to the first) is a third -- spiders suck a lot of bandwidth. Unless there's some way to distribute search or allow nodes to self-report search elements (which will probably require some form of auditing).
And there's administration. It's really easy create systems any idiot can use, but then, any idiot will, and DDoS Brian Krebs and Dyn. Bulletproof administration is a real pain point.
I think an important thing is to give everyone a say in how these large computer networks affect their lives. How to do that in the context of a broken political system isn't clear to me at all.
This brings it back to a distributed communication problem. If you could distribute content more consistently and 100,000 computers could step in as dns providers with authentic data rather than concentrating dns at dyn or Google it would help. That will still require protocol updates so that the fail over uses local content. Really ipfs and distributed content could be a component to help with distribution. It definitely isn't a complete solution alone (yet -- there is a push to make it the solution).
As an example: You host a blog. As an IPFS user, I surf to the blog and store your content in my cache. When another IPFS user attempts to access your blog they may pull directly from my cached version, or from the original host (depending which is fastest). Merkle DAGs are used to hash content for quick locating, to ensure content is up-to-date, and to build a linked line of content over time.
This gets more interesting if there's a widespread service outage. IPFS nodes will continue to serve the most up-to-date version of the web even if the web is fragmented. As new information becomes available it is integrated into the existing cache and then propagated to the rest of the fragments.
I still struggle to understand how this works with databased content, but I do believe IPFS addresses this content.
Really?
An IPFS user will scrape HTTP content, republish it over IPFS and update a directory of where non-IPFS content can be found over IPFS?
I must have missed that part.
Say I have a site that sells Awesome Products. L337Hacker mirrors my site, does a DDOS on the original and lets IPFS take over, redirecting the shopping cart to his own site.
Is this a potential scenario? If so, is there any way to prevent it?
1) The web as a whole is decentralized, but any given web site is centralized by default. A webmaster can "push" a modification or deletion from a central server and have it trickle down through caches/proxies unless someone like archive.org makes a deliberate decision to archive it. In systems like IPFS, content deletion and modification follows a model more like garbage collection, where pointers to old data can hang around and continue working even if an "authoritative" pointer is pointing to something else. Basically, nobody has the authority to break a link (law/policy-mandated filters notwithstanding).
2) The web doesn't really have any built-in mechanisms to promote redundancy for durability, availability, or performance purposes. By default, there's one daemon serving one copy. Everything else (CDNs, forward/reverse proxies, failover) is some kind of optimization tacked on after-the-fact.
The idea is that we run that centralized search engine via Smart Contracts.
In other words, using a decentralized currency such as Bitcoin and decentralized execution environment like Ethereum, we create softwares which pays people for providing CPU time and disk space (facilitated by IPFS).
Few missing pieces of this puzzle are homomorphic encryption implemented on Smart Contracts level which will allow that CPU service.
Once that's done then we can have the distributed web of the next level.
If you're hosting content at a certain rate, then the rate drops so that it's less profitable or no longer profitable, wouldn't the proper strategy be to drop that content and then find something worth hosting?
Disclaimer: I have worked on building the Internet since before the web, and have a BOFH kind of point of view of things, 2 or 3 times over now ..
I support IPFS - and things like it - as a technologist/hacker/punk-ass because, in fact, we have built an utter monstrosity of a beast of a spaghetti god of an Internet, and we can always do better.
Software - and by extension, inter-networking - is like music. There will always be better ways to do it, beyond the horizon of what is current and now. Just because what we've got "basically works, even though its all broken", doesn't mean we can't 'fix whats broken'.
To those of us in the group of your postulate, whats broken is the fact that its all so damned hierarchical, and requires canonical/authority issue and agency in multiple forms before the bits can flow. We can't just set up an IP address - we also have to have DNS, serve content on it on some port, etc. And, on top of this, we end up having to sort it out all the way down the OSI stack, at the hardware layer, by keeping as many hosts as possible up and running as are required to service the customers, here and now, who are using our service.
All of that is what is broken about the current Internet, but of course the irony is that it is all that works about the Internet at the same time.
So, IPFS/distributed/etc. means this: we can un-bork all of the above, and just have all the things route down to the real, hard, user of the system, i.e. the original content provider. IPFS, and its ilk, is all about putting the original content provider in control, while also having the network - as a function of its operating capability - contribute to helping those content providers who become, eventually, popular.
So, we don't have a lot of rigid hierarchy - we have instead multi-variate spread spectra of responsibility/duty to serve up the bits of it all - packets at a time, as part of participation in the whole - to those who want something, and those who know how to find it, from those who have something, and know how to name it.
In short, "its not about the network any more, its the people..."
When you create page A you have to have the SHA of page B, but then to create page B you have to have the SHA of page C and finally to create it you need the SHA of page A. You get into this cyclical loop where you can't generate any page and link to others. What is the solution to this problem?
Under the hood those pages will be standalone ipfs Duke nodes with separate hash addresses, and your root folder will be actually a set of pointers to those hash addresses — but you don't need to keep that in mind when uploading a site.
Also, you can use relative paths :P
IPNS (the name service) then becomes the vulnerability, but that is also distributed.
It does protect against DDOS, since old content remains visible and online but if the private key is leaked or the node is malicious, it has exactly 0 protection.
Even worse, if the private key is stolen, you can't do much about it unless you have DNS setup... which brings you back to centralized.
No content is changed, only the pointer to the "newest" data.
world-addressable != world-accessible
IPv6 just gives each device a unique address, which is orthogonal to deciding which packets you allow into your local network. In most situations, a stateful firewall (probably on a home router) will still block inbound packets by default, even if they are addressed properly to a valid local IPv6 address.
> would each machine be completely responsible for its own security?
Every single device is already and will continue to be responsible for its own security. A firewall doesn't remove the need for any security protections on each individual host. Border security adds defense in depth, which is great, but you have to assume an attack can bypass the firewall or originate from another host on the local network.
Assuming the firewall will offer sufficient protection and skipping the hard work of properly securing a device is how we get easily compromised trash like the cameras that recently DDoSed Dyn/etc.
(Of course you shouldn't put things on your internet-connected network that need the firewall, just look at it as a porous defense-in-depth element, just like with IPv4)
No. Nothing much will change probably. Home routers still usually block incoming ipv6 traffic unless configured otherwise.
Peer-to-peer is excellent for ephemeral streaming stuff like chat, file transfer, even gaming. But it is not good for permanence unless some monetary remuneration gets involved, either via a centralizing entity asking for payments (dropbox et al), or a distributed monetization system like bitcoin. Somewhere, somehow, someone needs to get paid to keep the system running.
Sounds like XMPP.
You can read more about same-origin policy here: https://developer.mozilla.org/en-US/docs/Web/Security/Same-o...
Of course, the economics are quite different. In the normal web, you need to add more resources when a page becomes more popular. In a distributed web, more resources are a side-effect of a page becoming more popular.
In the future, there will be hosting providers that allows you to upload a file to their IPFS "cloud" either as free hosting or paying for it, just as today. It'll just be easier for everyone to pass around a hash of the file rather than the file itself.
Maybe there will even be an API that you can hook up into your application, so content will be seeded that way.
Or if there is a way to prevent sharing particular content that I've accessed, what's to stop me from leeching everything and never sharing anything?
(Edit: Ah, now I see "BitSwap" as possibly addressing my second question, but I'm still concerned about the first.)
Why do you think that's needed? Of course if majority of nodes cheated and said "sure, I've got that file" and send you random garbage instead so you have to retry, that would be bad. But if majority are running proper implementation, you don't really need to trust anyone.
I'm not sure of this blacklisting is implemented in current go-ipfs out js-ipfs codebase — but hash verification itself certainly is.
> Each network node stores only content it is interested in [...]
Isn't that the issue here? Storing data that will maybe be there later isn't really storing data. People want to publish something that must always be available, so why inject data into the IPFS network and hope it will be there in a year, rather than set up a $10/yr VPS? > With video delivery, a P2P approach could save 60% in bandwidth costs.
In my opinion, this may be true, but total costs will be greater. P2P solutions are awesome because they are resilient, not because they are cheaper. Distributing pirated movies by dumping them on public FTP servers is much cheaper than BitTorrent. BitTorrent appeared because the centralized method was not resilient enough against adversaries, not because it was cheaper (quite the contrary).No visibility into an app means it's unlikely to stay on my system.
When child porn inevitably shows up, how do you protect yourself from accidentally downloading and then seeding it?
In IPFS you do not automatically relay things, you have to explicitly decide to.
You seem to have glanced over the qualifier I used: accidentally.
Given a hash for an IPFS resource, how do you know it does not contain child porn before you retrieve it?
Once you have downloaded it you have committed a crime. There are no take backs with strict liability crimes and IPFS provides no anonymity, so there is a record of you downloading and seeding child porn.
> In IPFS you do not automatically relay things, you have to explicitly decide to.
Really?
Correct me if I'm wrong, but I was under the impression that immediately once you retrieve a hash via IPFS, you cache it and start seeding it.
Can you create your private ipfs network? (accessible by anyone, upload only me)
If you upload sensitive material to the global ipfs network, what do you think will happen?
Pretty sure you can already do it by setting up your a node on e.g. a Digitalocean droplet, removing all bootstrap nodes from its config file, and having everyone on the network replace the bootstrap node addresses in their config file with your server's address. Granted that's not a very user-friendly way to do it, but when I tried it it seemed to work.
You still have to serve the content from a server, since you cannot depend on the kindness of strangers to persist your content.
1. HTML wants badly for a nested relational document format. Essentially tin or mutt's "in reply to" and "references" headers.
2. A comments stream is a) a parent document to which b) multiple child documents, themselves possibly having c) parent-child relationships, d) are associated. Rather than thinking of "threaded discussion == single document" think "threaded discussion == a set of related documents".
That gives the option of having a discussion "occurring" across multiple sites, with some form of trust, whitelist, blacklist, or other mechanisms for reflecting what you do or don't include in the discussion. Individual comments, as their own docs, could also be freestanding instances.
Finding children from the parent becomes an interesting question.
There's also the matter of versioning a document. Tying a git-like capability to this could be interesting.
Interestingly some links to copyrighted material end in ¨Unavailable for Legal Reasons¨ however, running the daemon and issuing an ¨ipfs get hash¨ the download does start.
[0] https://ipfs.io/ipfs/QmU5XsVwvJfTcCwqkK1SmTqDmXWSQWaTa7ZcVLY...
If you do anything that needs a central server, suddenly its advantages vanish. I could imagine Wikipedia using this; I couldn't imagine gmail doing so.
If my node is the only one seeding the file, accessing it via gateway.ipfs.io is slow but it's pretty obvious why; I'm the only provider.
So while for very public content IPFS is rather fast, if you share a couple files with a few friends, it's a bit slower.
Of course, this all depends on upload/download speeds, mine aren't stellar in both directions either.
Plus I'm rather certain that my ISP is throttling any kind of P2P traffic.
A bit ironic :) (being distributed it shouln't be a single point of failure ;) )
http://ipfs.io/ipfs/QmbLPfyehFnViKZpU237P6a6DpjCfWFSoDBMQFGU...
Most content is not written in simple english, and there's just not much incentive for somebody who may not know how to think critically/complexly (due to lack of western education) to engage with the internet.
I think distributed web is an interesting idea, and that IPFS really lists out some issues with the internet that we'd all win in solving, but I think maybe some of these, like developing nation web access, are solvable with current tech, and more culturally based solutions
Usually you still need to run a server to seed the files, but if a file becomes popular it will be served from anybody who also retrieved it and likely persist in the network even if your server goes down.
Think of it as BitTorrent for the web. It has Gateways that allow current browsers to access the network and pointers to update content with a new version (that's /ipns/ not /ipfs/ - the old version persists as long as someone hosts it).
What's also interesting is that due to the nature of the hashing algorithm (it's a merkle tree), you can "ipfs add" a directory, preserving the file structure inside, so websites on IPFS can use relative paths.
Connecting and indexing documents has been the challenge of a few internet generations. Creating a document at a point of filing is a subtle but potentially large shift.
Hopefully this lands on homebrew soon to aid it's growth.
We can think differently with ipfs. Traditional web allows everyone to publish content somewhere, hoping that search engines will index it.
With ipfs, the same file (with the same content) is only indexed/stored once and then you reference the hash to get to the content.
This fact changes the problem of search.
Take all the world's movies. With ipfs + p2p network, you only need one back end in the form of a distributed search index, which can index all the movies in the world.
Same with the world's music. You only need one back end which can index all the music.
The index can be as simple as {"movie title": [sha256]}, where the array contains the hashes of different 'encodings' of the same content (eg. 'dvd rip', 'blue ray' or 'mp3').
Content can be indexed by all kinds of properties of course and it can grow organically over time to include more and more details.
With ipfs plus the p2p network we'll build 'apps', not 'pages'. People can have a list of 'apps' running on their machines - which are node instances in various distributed applications, sharing the same p2p network and using ipfs as storage.
Apps can have 'backend' and 'front end' parts - the back end is the part which participates in the p2p network, while the 'front end' provides a human interface to the back end, were users can search/browse/view the content.
Apps are distributed as git repositories stored in ipfs, while the 'core' running on the user's machine compiles the sources (inside a build vm) and loads the resulting binaries into containers running in virtual machines.
This would make it easy for devs to write and publish new distributed apps, making the network totally decentralised and virtually unstoppable.
Ps. If you feel that this insanity could work, then I'd love to discuss it in more depth - delegate78@gmx.com