distributed peer2peer sharing app in Pharo

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

distributed peer2peer sharing app in Pharo

Pharo Smalltalk Users mailing list
I'd like to make a simple distributed peer2peer sharing app in Pharo.
Is Zinc WebSockets the way to go?
Has anything similar been done already in Smalltalk?
Any ideas on how to keep the clients synchronized?
Is it worth looking at how OpenCobalt/OpenQwaq does it, (or are they
very advanced/complex/hard to understand)?

tanks in advance.

Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

Robert Withers
Hi Peter,

This is similar to what I was thinking of delving into, although I was
thinking differently than file-sharing. I was thinking more modified
blockchain sharing.

My plans are to revive an old project of mine:
http://www.squeaksource.com/squeakelib/, which depends on Cryptography.
I am interested in implementing NIO as well. This is all infrastructure
stuff, layers 4, 5 and 6. WebSockets may be all you need.

As any flow system needs a control layer, add a couple of layers above
the application layer: market/cloud and meta layers, used to contain
apps and specify the peer2peer graph and formats.

There's some other stuff, too. I don't know if this interests you.

thanks,
Robert


On 10/12/2015 10:57 AM, Peter H. Meadows via Pharo-users wrote:

Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

Juraj Kubelka-5
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

Stephan Eggermont-3
On 12-10-15 19:27, Juraj Kubelka wrote:
> I am not sure if the objective is the same, but Evan and I are working on peer2peer solution for Pharo.
 > We have also implemented Logoot algorithm for collaborative text editing.

Nice. We'll be able to improve our development flow a lot by reducing
synchronization delay.

Stephan




Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

Evan Donahue
In reply to this post by Juraj Kubelka-5
Hello,

Just to follow up on Juraj's reply:

Trantor is a framework for distributed applications. The basic idea is that you can establish a p2p network between various images, and then build applications using a set of specialized distributed collections that can be plugged into the p2p network and synchronized between hosts. The example Todo application is just a simple spec gui that writes items to a basic distributed collection. That collection is added to a running Trantor host in the image, and changes are broadcast to peer hosts in other images.

The project is in the early stages, but it's definitely ready for prototypes and personal apps. I have been using Todo to synchronize a grocery list across all of the computers in my house (computers can join and leave the network and stay in sync). If anyone thinks they may have a use case for such a framework, please do get in touch. A lot of infrastructural decisions have yet to be made, and more use cases would really help ensure the final product is as broadly useful as possible.

Cheers,
Evan
Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

stepharo
In reply to this post by Pharo Smalltalk Users mailing list
I know that in squeak there was the project of Cees de Groot
Tric on Squeaksource.I can send you the files I got.


Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

Juraj Kubelka-5
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

stepharo
yes


Le 13/10/15 23:27, Juraj Kubelka a écrit :

> Do you mean this one: http://www.squeaksource.com/DGV.html. I will check it out.
>
> Thanks.
> Juraj
>
>> On Oct 13, 2015, at 18:04, stepharo <[hidden email]> wrote:
>>
>> I know that in squeak there was the project of Cees de Groot
>> Tric on Squeaksource.I can send you the files I got.
>>
>>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

Evan Donahue
In reply to this post by stepharo
I remember looking at the project you mention when I was first researching p2p in Pharo. I thought the project description sounded very interesting (Trantor was actually begun with a similar use-case in mind), but alas I was unable to find any information on it outside of the code. If anyone knows more about what happened to that project, I'd be very curious.

From a technical standpoint, as best I could tell from looking through said code, DVG was an application that was designed to share one specific type of immutable data across very adverse network conditions. All of the engineering seemed to have gone into bypassing firewalls with UDP hole-punching, routing messages around complex network topologies, etc.

Trantor, by contrast, is best thought of as a framework for easily making application data distributable, and a scheme for distributing it efficiently over a network. The details of the network topology are somewhat orthogonal, and there are many options for where to take it in the future. The actual socket code in Trantor right now is a simple TCP direct connection.

At some point I'd like to get some of the networking capabilities that DVG has (such as the UDP hole-punching), and I think I saw a project that tried to extract the networking part from the DVG application, but it seems to be mostly a specific application, and not a general scheme for designing arbitrary distributed applications.
Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

Robert Withers


On 10/15/2015 09:32 PM, Evan Donahue wrote:

> I remember looking at the project you mention when I was first researching
> p2p in Pharo. I thought the project description sounded very interesting
> (Trantor was actually begun with a similar use-case in mind), but alas I was
> unable to find any information on it outside of the code. If anyone knows
> more about what happened to that project, I'd be very curious.
>
>  From a technical standpoint, as best I could tell from looking through said
> code, DVG was an application that was designed to share one specific type of
> immutable data across very adverse network conditions. All of the
> engineering seemed to have gone into bypassing firewalls with UDP
> hole-punching, routing messages around complex network topologies, etc.
>
> Trantor, by contrast, is best thought of as a framework for easily making
> application data distributable, and a scheme for distributing it efficiently
> over a network. The details of the network topology are somewhat orthogonal,
> and there are many options for where to take it in the future. The actual
> socket code in Trantor right now is a simple TCP direct connection.
>
> At some point I'd like to get some of the networking capabilities that DVG
> has (such as the UDP hole-punching), and I think I saw a project that tried
> to extract the networking part from the DVG application, but it seems to be
> mostly a specific application, and not a general scheme for designing
> arbitrary distributed applications.

I would be most interested in this DVG as well, along with guidance on
how to best utilize it in my application. If someone were to so share,
I'm convinced it would rain goodness.

Regards,
R

>
>
>
> --
> View this message in context: http://forum.world.st/distributed-peer2peer-sharing-app-in-Pharo-tp4855144p4855908.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>

Reply | Threaded
Open this post in threaded view
|

Re: distributed peer2peer sharing app in Pharo

cdegroot
A bit late - just got notified that this was discussed. I wrote most of the
P2P code of that project; I'm not doing a lot of Smalltalk anymore, so the
code is sort of orphaned, but I'd be more than willing to help advise people
on how to use it.

The conclusion that this library is specifically made to work under very
adverse circumstances is correct. The project at hand, "Digital Society of
the Past", was meant to create a P2P network of historians (amateur and
professional) exchanging their archives through this package. So our main
use case was people behind crappy cable connections :-). So if your focus is
overlay networks with gossip-style protocols, I'd probably look at something
like Hashicorp's Serf instead (link it in or port it); if you really want to
do napster-style file sharing, this library may be a decent starting point.

Hth,

Cees

(ping me preferably on my personal mail, casedeg at everyone's favorite
email provider, Gmail, because I'm often way lax when it comes to catching
up with mailing ists).