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/

-- 
:: EdE { Jabber-ID: [EMAIL PROTECTED] | Website: http://people.knup.de/~ede/ }
:: Linktip: http://nomoreaolcds.org/
_______________________________________________
jdev mailing list
[EMAIL PROTECTED]
http://mailman.jabber.org/listinfo/jdev

Reply via email to