Re: Re: Implementing a Gnutella-structured network only with basic HTTP possible?Date: Wed, 24 Feb 2010 09:08:15 +0000 (UTC)

Arne Babenhauserheide <[email protected]> Wed, 24 Feb 2010 20:01:35 +0100
Newsgroups gmane.network.gnutella.devel
Message-ID <[email protected]>
Am Mittwoch, 24. Februar 2010 10:08:17 schrieb [email protected]:
> :I'd love to hear your thoughts on the idea.
> 
> I've read your proposal in its entirety, but I'm not sure you're going to
> love hearing my thoughts. :-)

I wouldn't write it if I'd be put off by a negative answer :) 

> :Do you think it would be useful - and help getting more developers into
> :Gnutella again?
> 
> I think it would be totally useless:

-snip good reasons-

> 2.2) Second, even using a pure HTTP-type of header exchanges between peers
> would not prevent a binary stream from being exchanged between peers later
> on. It's all a matter of which content type you're negotiating.

There I clearly wasn't clear enough. I also meant switching to only using GET 
and POST requests, which could be interpreted by modified wobservers (passive 
nodes). 

-snip 3 way handshake-

> 3.1) As a servent developer, what would be my incentive to undergo a
> major overhaul of the peer-to-peer communication stream, and how would
> I handle a smooth transition (continuity of service) between the current
> scheme and a new scheme?

Augh - you'd need duplicated networking code, which really wouldn't help that 
much. 

> 3.2) Your proposed design as it stands breaks the symetry between peers and
> is not acceptable.  -snip-

This I thought rather as an advantage, because it would allow building passive 
nodes with runtime restricted scripts (i.e. in php, running on any not-too-
small webhoster). 

> 4.1) As a developer, it's good to know that some libraries exist to do the
> low-level work for you, but that's not sufficient to motivate someone into
> putting hard hours into learning these libraries and using them.

I did some tries with the http server libs in python, and the learning time is 
extremely short, so I took the leap of faith that other languages should have 
similarly simple systems. 

-snip-

> 4.3) Writing a Gnutella servent is a complex task which requires skills,
> time and dedication.  It's not just the assembly of high-level components
> or protocols (HTTP, zlib, DHT, GUI toolkit, XML, SHA-1, Tiger, hash trees,
> DIME, UDP, TCP, web or UDP host caches).

And that's where I think a problem lies. If someone wants to do a nice client 
with features he always missed, he can't just start with it. And getting into 
an unknown codebase is not really easy.

> 4.4) Gnutella documentation is widespread and some of the information
> is not even written explictly but embedded in the code of popular
> open-source servents.  Without proper documentation, how do you expect
> newcomers to be able to navigate in the maze of the existing documents and
> make the right decisions when it comes to implementing?
> 
> 4.5) The "barrier of entry" for a Gnutella servent today is extremely
> high.  Before you reach the level of features of servents like LimeWire
> or gkt-gnutella, you're going to have to spend man.years of efforts.
> Using standard libraries and protocols is not going to help significantly
> reduce that amount here.  As a new servent author, how would you attract
> users when people can choose LimeWire or gtk-gnutella and use them with
> a very high level of satisfaction?  What will be your differentiator?

An optimized network for only a single task, for example. 

Why don't we have a Gnutella based p2p web-search engine, which searches 
bookmarks of the participants? Why can't I just setup a Gnutella based network  
with just my jabber contacts as direct connections? Why don't we have Gnutella 
based friend discovery to rival skype? 

-snip-

> What would be more interesting a question to answer to is: what do
> we do to attract more open-source developers to work on the existing
> open-source servents?

I'd rather turn the question around: How can new developers do something 
really cool (in reasonable time) by contributing to the current free licensed 
servents? 

What are reasons for people to want to contribute? 

One thing Which comes to mind for me is the hyped “semantic desktop”. How can 
Gnutella be used to power that?

(for example as tag based search engine - tagging stuff => is there other 
similar stuff people share?)

Best wishes, 
Arne

--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 
   - singing a part of the history of free software -
              http://infinite-hands.draketo.de



[Non-text portions of this message have been removed]