3 ms·
Ok, let's start with your points. "Inefficient routing, unstable communication, high latency and low bandwidth": If I have two devices (phone and laptop) on th
by amirmc 13y ago
Ok, let's start with your points.
"Inefficient routing, unstable communication, high latency and low bandwidth": If I have two devices (phone and laptop) on the same wifi network (e.g. home or work) and I want to send something between them, why should it first go via a cloud service? In my case, photo backups from my phone to my laptop, which happens via PhotoStream at the moment, or files from my laptop to my phone. If a route can easily be formed across the nearest AP then it's shorter, more stable, probably higher bandwidth and certainly lower latency than via the cloud. As the number of devices I own grows, this use case will become more prevalent (think "Internet of Things").
"You have to do a lot more work to achieve things that would otherwise be simple and straightforward": Sure, but you haven't asked why this is the case (and who 'you' is), which is just as important to examine. At the moment, you as a developer have to do more work in order to build decentralised systems because not enough free OSS tools exist yet. The main reason that using a central server is easier is because the tools, techniques and knowledgebase have become 'standardised' but that doesn't preclude there being better ways of doing things. I'm advocating tools that make it easier to build decentralised services and products.
Decentralised systems are more resilient than their centralised counterparts. Any large-scale service/product ends up being decentralised behind the scenes and if you don't believe me, ponder for a moment how the likes of Google, Facebook et. al., manage to deal with so many users across the globe. They have to make their own tools to solve the same kinds of problems I'm alluding to. I'm merely advocating that we try to 'productize' such tools so that any developer can pick them up and incorporate them from the very beginning. Real world examples of such things are how Skype worked in the early days, Dropbox's LAN sync [1] and even Spotify [2], where P2P can improve user experience and reduce their bandwidth costs. I don't know how their systems work but this clearly demonstrates the business value in P2P.
As you say yourself, "the internet is already a system of decentralized networks and services" but don't dismiss the work taken to get there and the value that the lack of centralisation brings. Those same benefits can be gained elsewhere provided the appropriate tools/infrastructure are made available and useable.
Hypothesis: If there were FOSS tools that make it easier to create secure, decentralised systems, more developers would create secure, decentralised products.
[1] https://www.dropbox.com/help/137/en https://www.dropbox.com/help/137/en
[2] http://community.spotify.com/t5/Help-Desktop-Linux-Mac-and/Unadvertised-P2P-feature/m-p/400160#M46512 http://community.spotify.com/t5/Help-Desktop-Linux-Mac-and/U...
- peterwwillis 13y ago> If I have two devices (phone and laptop) on the same wifi network (e.g. home or work) and I want to send something between them Then you do a Bluetooth transfer, or CIFS/SMB file share, or FTP, or HTTP, or IrDA, or USB, etc. Why would you use a cloud service? Everyone involved has to do more work to support decentralized services. Users, developers, admins, etc. The only thing you may not need more of is infrastructure. Just because you've made it easier to build a service does not mean the service is easier to use. No, these products are still centralized. They are merely made more redundant, fault-tolerant and highly-available. They may also be distributed, which is different than decentralized. I never said there aren't benefits to decentralized systems. As I said, they can be useful. Centralized systems are just easier to create/use/maintain, are more reliable, and are faster. Depending on the application.
- amirmc 13y ago> "Then you do a Bluetooth transfer, or CIFS/SMB file share, or FTP, or HTTP, or IrDA, or USB, etc. Why would you use a cloud service?" I suppose this is what you say to people who extol the virtues of Dropbox or BitTorrent Sync? It almost sounds like you've completely missed the wave of stuff that's happening, which I find hard to believe (or you're being deliberately obtuse). > "No, these products are still centralized. They are merely made more redundant, fault-tolerant and highly-available." How do you suppose they are made redundant, fault-tolerant and highly-available? I've tried to describe how in my previous comment and you haven't given any counterpoints. > "They may also be distributed, which is different than decentralized." Ok, this made me think as I tend to use the words interchangeably. Some quick Google searching doesn't clarify anything either (I find conflicting versions). Ovearall, I get the feeling that you have a different view of what 'centralised' means but even then, you haven't given any examples of why such things are more reliable or faster, whereas I've tried to do so.
- peterwwillis 13y ago'The wave of stuff that's happening' is not some crazy new paradigm shift. It's remote network services. Why you would use a remote network service when all your files are available locally, I have no idea. People are weird. The easiest way to think of this is in terms of network architecture. A Client-Server model of network architecture is by definition centralized; you have one or more clients, and only one server. The client connects to the server to do whatever it wants. In a decentralized model, the server is any node with the ability to serve the requests of the clients - which often includes other clients. It would take too much time to explain how all of that stuff works, but suffice to say that just because there's more than one computer involved or more than one process involved does not make it a decentralized service. If the client is still just talking to one thing (on the frontend), it's basically centralized. To explain how centralized architecture is faster, consider a simple example where there is one client, and three nodes distributing a file. The client has to first find and identify the nodes, which usually takes more time than just resolving a single server, because it has to "search" for its peer nodes. Then it has to request a file, which is probably split up into pieces and little requests are sent to each node. Each node then sends the client the pieces. The client then reassembles them on its end to create the finished file. Compare this to a server, where from lookup to file transfer, there is one continuous operation; there is no need to communicate with multiple nodes or track multiple connections or piece together files. Also with the distributed model, you are at the mercy of all the nodes in the network, not just one, and all of the different networks those nodes might be on. You also may end up doing 3x the network operations, depending on protocols, chunk sizes, etc. Because you can't bet on the source of the file coming from one reliable place, network latency may go up, and bandwidth may also go down - in practice over the internet this is virtually guaranteed vs a central server's large pipe.