[JDEV] (no subject)

philippe.raxhon at mrlinternational.com philippe.raxhon at mrlinternational.com
Mon Jan 7 07:30:28 CST 2002


I am just curious. Are you going to use an existing library (JabberBeans,
KvmJab, ...) or project?

EdE wrote:
     hi folks,

     we are three people and would like to contribute some code to the
     jabber community. our idea is to establish filesharing over jabber.

     we do this for a project in school which will start monday (7.1.2),
     from that day on we have only three weeks to get it done.

     i talked about our plans with some people in #jdev, a few days ago.
     they told me to post everything to the list. here we go.

     at first i'll explain our ideas below, i should mention that my
     english is not that good as it should be, therefore feel free to
     ask if you don't understand something.

     our main idea is to build a java-client (called jayshare) which
     should operate simultaneously besides other jabber-clients like
     gabber, winjab, jabbernaut, ...
     jayshare should only cover file-sharing; chat, messaging, etc.
     should not be implemented.

     there are 3 main parts (explained in detail below):

     i   getting/sending filelists from/to other users
     ii  browse/search these lists and select files
     iii transferring files from/to other users

     the lists will be stored on the clients machine. this might sound
     a bit strange, but the purpose of jayshare should be to share
     files with your friends rather then with the whole world.
     furthermore we don't want to change anything on the server side.
     even if a transport and a serverbased database would be a good
     idea for this, it would have some disadvantages we want to avoid:

     a: a new transport has to be installed explicitly by the server
        admin, so not every server would support that
     b: since a) the server-admin could be made responsible if he
        installs this transport: some curious people could have the idea
                to share       files that aren't allowed to share
     (copyrighted data,
                etc.). some even more curious people will have the idea
     that this
                is        admin's fault.            we don't want admins to
     be blamed if others do
                something nasty. only the users are responsible for their
     doing,
                nobody else.
        this point is currently very important and since the DMCA and
        other strange ideas it will become even more important in future.
     c: writing a transport would take more time, which we don't have
        at the moment. our primary goal is to get the basics work, after
                that many things can be added, but that's far in the
     future.

     everything should take place in groupchat-mode, in the following way:

     i - swapping filelists

     example:

     Y logs into a room, X is already there.
     if X has Y's filelist, X asks Y for the lastchange-stamp of Y's
     list. if it's newer than the list X has, X's jayshare will request
     the newer one from Y. if X doesn't have Y's list yet, it will also
     do that of course :-)
     after that Y's jayshare will ask for the lastchange-stamp of X's
     list, and so on.


     ii - browsing/searching lists

     since the lists are stored locally browsing/searching can be
     performed anytime the user wants (online or offline).
     the user can either browse and select files by name, size and other
     attributes or he can search on these items. searchable items are
     e.g. name, size, mimetype and description.
     depending on the filetype there can be more: OggVorbis-files e.g.
     should also be searchable by title, author, album and bitrate. etc.
     when a file is selected for download it is necessary to figure out who
     has it. if it's more than one user, a good method should be used to
     determine the most reliable download-peer.
     later it could be implemented to download different parts of a file
     simultaneously from different users.

     the download-request will be written into a queue, downloads will
     start when user goes online and deleted from queue when the file is
     transferred.

     of course filelists are nothing if they could not be build.
     therefore jayshare needs an option to create and edit such a list.


     iii - transferring files

     when the user has selected the files he wants to download, jayshare
     has to ask the other peer about his ip and port where to get the
     files he wants.

     if an other user would like to download some files from us,
     jayshare of course tells them our ip and port where we offer our
     files.

     this is the last thing which will take place in XML. the downloading
     itself will be _like_ http/ftp.


     ok, thats the idea. now it should be discussed here before we
     start the hacking. furthermore it would be interesting if some
     parts of the previous ideas already have been coded and if we
     can rely on it, as soon as the writing is under GPL or
     compatible license.

     also it would be appreciated if you have hints on documents and
     prior work.

     main-website: http://sites.knup.de/jayshare/
     project-site: http://sf.net/projects/jayshare/



     Philippe Raxhon





More information about the JDev mailing list