Re: Implementing a Gnutella-structured network only with basic HTTP
[email protected] Fri, 26 Feb 2010 08:57:23 +0000 (UTC)
| Newsgroups | gmane.network.gnutella.devel |
|---|---|
| Organization | Home, Grenoble, France |
| Message-ID | <[email protected]> |
Quoting Arne Babenhauserheide <[email protected]> from ml.gnutella.dev-forum: :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. People have to learn to dive into an unknown codebase. It will not always be possible to start a project from scratch. By your line of reasonning, no new developer would ever be attracted to do operating system work because, well, writing a kernel from scratch is a huge undertaking (remember, linux started out very small and grew over time). When I started working on gtk-gnutella back in 2001, it was mostly an abandonned project and I had to learn my way through the existing code to be able to fix numerous bugs at first, then rewrite parts of the code. I don't believe there is much code left over from the original gtk-gnutella in today's code, as almost all the major parts have been rewritten. But this rewriting did not happen in one day, and was not gratuitous: it was done only to accomodate necessary evolutions. For instance, the migration from 0.4 to 0.6 Gnutella handshaking caused a major overhaul of the Gnutella node layer and was an opportunity to introduce an HTTP-compliant header parsing layer, with proper handling of continuations. It was not added as a "hack" in the existing legacy code, but was seen as a pretext to redo major building blocks from scratch. But naturally, it was simpler for me to dive into the code base of 2001, which was rather small, than it would be for any newcomer to dive into the code base of 2010, which has been considerably expanded! Still, I believe the code to be reasonably modular and commented well enough for someone to be able to figure things out. That added to the ability to turn on logging selectively is a precious aid because you can also get a better feeeling at the dynamic behaviour of the code you're reading. :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? Perhaps we don't have these things because they don't make sense, or because the people "in charge" don't have time to be distracted by corner features, or because it's better to let some things separated, or because nobody took care of actually implementing this stuff. :> 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?) You're not talking about Gnutella here really but about applications that could be built on top of Gnutella (or any other P2P network with the ability to conduct a search by name and/or a structured search by key). What you need to do is think about which interface you would like Gnutella servents to offer (from a command-line perspective, say) to be able to serve as an enabler for the higher level features you're talking about. Then if it is general enough to be implemented, it will eventually. Raphael