Gnutella Forums

Gnutella Forums (
-   Development Open Discussion (
-   -   Add a recommender engine to Phex (

s.rossano December 19th, 2008 08:55 AM

Add a recommender engine to Phex
Dear all,

starting from the analysis of the spontaneous affinities between Gnutella users, I and some colleagues at University of Turin implemented a distributed recommender engine for p2p file sharing networks that is as simple as promising in terms of prediction accuracy. Talking with Arne, we are thinking about the possibility to integrate such scheme in Phex since it provides an interesting and very useful content filtering scheme. At the beginning of our research we implemented the algorithm in Phex but the code is not longer compatible with the current version. However, we completely redesigned the application during the last few months for another Gnutella client. The code is written in Java and it is very modular, so I think that the core engine could be reused in Phex without particular modifications. Of course, both the old Phex module and the current engine is distributed under an open source license, so I can share the source code. Moreover, I and Andre' Panisson, a Ph.D. student that developed the last version, could actively participate in the development and integration phases. We need to spread the module to a broader community in order to collect feedbacks from users and then setting up a significant evaluation.

Let me know if this sounds good for you.

For more details you can read this paper (also this) or visit the web site of our project.


arne_bab December 28th, 2008 04:16 PM

Here's a link to the SVN repository: Repository - [dehinter] Index of /

You can get the code via


svn co dehinter

Do you have documentation, which interfaces get accessed by the GUI (apart from sourcecode documentation)?

panisson January 5th, 2009 04:59 AM

In the SVN repository, the core implementation of the recommender system is in the folder /components/xhinter. This code has no dependencies in other libraries related to the client or the interface.

The client specific core implementation is available in the folder \core\com\limegroup\gnutella\recommendation. This code has dependencies with the core client, and it uses core components as SearchServices, FileManager and ConnectionManager. These components are used internally with dependency injection, and I think that if there is in Phex components that have the same funcionality, the components can be replaced with the Phex implementations. You can take a look in the RecommendationService interface and RecommendationServiceImpl. This code has dependencies only with the core components, and no dependencies with the interface.

The interface implementation is available in the folder \gui\com\limegroup\gnutella\gui\recommender, and uses the core components. This part should be completely reimplemented. The main class is RecommendationMediator, which references the core components.

The documentation should be improved, and I'm currently working on this.

arne_bab January 9th, 2009 03:39 AM

I can't really comment on the feasability, so we need to wait for input from gregor_k.

Would you be willing to maintain the plugin in Phex to keep it up to date as soon as there is a working implementation?

panisson January 19th, 2009 05:11 AM

arne_bab, it is our interest to maintain it up to date, as it will provide feedbacks from users to our algorithm implementation. I'm returning today from a little vacation, and will be available to help and discussions.

panisson January 21st, 2009 03:09 AM

1 Attachment(s)
Hi Arne,
I started woking on the source code, and an intial patch is attached with a core (not working) implementation to Phex, to be applied to trunk. The recommender core is ready, we need just to adapt it to the Phex API. After it, we can start implementing the interface.
There are some doubts about the Phex API that you could help. There's another place (chat, instant messenger) we can talk about it?

arne_bab January 21st, 2009 04:11 AM

That sounds great!

You can often find gregor_k in IRC at #phex on - that should be the easiest way to get more speedy communication.

GregorK January 21st, 2009 04:27 AM

You should be able to find me in IRC between 19:00 and 22:00 UTC during this week.

All times are GMT -7. The time now is 03:19 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright 2020 Gnutella Forums.
All Rights Reserved.