The Future of File Sharing

Mass-file sharing has come a long way since it's debut with Napster. Multiple file types can be shared, searching is more intricate, servers support many times more users, one user can download a file from multiple sources, and the willingness to share files has increased unbelievably.

Currently, I am a fan of KaZaA, which runs off of the same p2p technology as Morpheus (Morpheus uses the software under liscence). It's user base is phenomenal, it finds media very quickly, and I am generally happy with it.

There are some major problems with decentralized file sharing software, however. In this web site, I would like to create my own file sharing software, filled with features and regulations that makes finding and obtaining media quick and error-free. The features will be organized based on problems that need to be addressed.


Table of Contents:

User Process:

Logging Into the System
Usernames
Searching for Files
Downloading Files
Sharing Files

System Process:

Logging Into the System
Usernames
Searching for Files
Downloading Files


User-Side Details

Logging On

The user will simply start the program, and it will automatically log into the file sharing community. Logging on for the user is not a topic that has to be developed.

Table of Contents

Setting Up a Username

Users will create a list of usernames that they wish to be represented by. They will be seen by all other users based on the name that they choose at startup. Multiple users can have the same name, as the system identifies individual users by number, rather than username. When the program starts, a drop down list of usernames will appear, from which the person can choose to use for that session of file sharing.

Table of Contents

Searching For Files

Searching has its own tab in the program. Searches can be simple, with one line to enter search terms on, or complex, allowing the user to enter more specific data, such as relative file size and total available bandwidth for download. Multiple searches can occur, organized via tabs at the bottom of the search window, and search results can be saved for future use.

Table of Contents

Downloading Files

Downloading files is as simple as with other file sharing programs, except that the files may not be downloaded from beginning to end, but rather in various segments. The only disadvantage of this is, if the user wishes to view the contents downloaded of their file to that point, they may not be able to do so. The advantage is, when few people have a large file, downloading in segments will get it to more people in a shorter time. This is explained further in the system section for downloading.

Table of Contents

Sharing Files

Users can share their files in several ways. They can search their system, based on file type, size, etc. filter; they can add files individually; they can mark directories for sharing right through Windows Explorer; and they can choose to share only rare files. The actual sharing process is much the same as other file sharing programs.

Table of Contents


System-Side Details:

System Process for Logging In

The system process for logging into the network is very different from other file sharing systems. The software will automatically check for an IP on one of several IRC servers in specific channels. These channels will be cross-referenced, so that they are kept the same, with all of the newest server listings. The software scans for the lines indicating the IP address of a server, and logs into that server automatically. That server (really a user's computer who has chosen to run the program as a server) has a cross-linked reference to every other server on the network, which it uploads to the user.

Table of Contents

System Process for Assigning Usernames

Identification, containing letters and numbers, which is 25 digits long, is assigned to the user's software by any one of the servers. This number nobody else has. The servers send each other an acceptable range of numbers that climbs higher and higher each time it requests more to be assigned. The servers check the ranges that were assigned to the other servers to make sure that the same range of numbers is not being assigned more than once. If a user logs on to a server without a number (which the user cannot delete off of his or her software), a number is assigned to him or her. Server PCs will receive packets of 5 to 50 numbers for assigning, based on how long they have been running for, and how many users can access them. The usernames that the user chooses are temporarily assigned to their numbers while they are in a file sharing session.

Chat will be based upon the number when added to the hotlist, but the number will not be displayed to the user on the other end. The number will also not be displayed to the user who owns it. It is a behind the scenes thing. Messages sent to users who are downloading and uploading will track the user's number for that session only, and lose it when either user logs out. The only way to keep the user for the next session is to add them to a contacts list.

Table of Contents

System Process for Searching for Files

Servers will index shared media based on file type when a user logs onto the network. This will allow multiple search requests to only go to their appropriate servers, rather than to every server on the network. If only a few servers are on, there will be many file types on each server on the network. If, however, there are many servers on, most servers will have their own file type along with a few servers that have a few rare file types. The process is automatic. Indexes are changed and updated as the search requests for the file types increase or decrease, and as more or less of the files are available. The system will adjust itself based on the server settings that people choose (i.e. CPU/Memory/Bandwidth usage) automatically. This way, there is no maintenance needed to run the system server-side, and the network operates at its top efficiency at all times. Also, file genre (video, audio, image, etc.) are grouped on one server when there is room for multiple file types on that server.

User searches are sent to the apropriate servers based on media type or file extension. All servers maintain a list of which servers contain indicies of which file types. This way, the servers keep the waste to a minimum. It will also improve the speed of the file searching mechanism.

Table of Contents

System Technique for downoading media

This part gets interesting because of the technique used to improve file downloading speeds. I will explain the current process and how the new process can remedy its shortcomings.

In the current process, if somebody releases a multi-hundred-megabyte file, and everybody starts to download this file, then nobody gets it for weeks, especially if bandwidth is somewhat limited. There are two methods in the new system to remedy this problem.

First, the software will divide files into 5MB chunks. This does not affect the files themselves, just how the file sharing program sees them. Multiple users downloading the same file will download these chunks instead of the whole file from beginning to end. This works similar to Download Accelerator and Flashget (JetCar). Onec a person has a 5MB chunk, they can begin to share it with the people trying to download the whole file. Now there are two sources for the file, even though only one source has the whole thing. As many people start getting these chunks, and they begin to share them, they will be creating multiple sources for the download, potentially increasing speeds drastically.

Second, people can designate space on their hard drive for speeding file sharing. It will be designated in 5MB segments. If a person chooses to do so, they can designate this space for other people to download rare files from. Say people are downloading a rare file from only one source. If the person with the file and you have a fast connection, then the file sharing program can decide to copy sections of the file to the shared space on your computer, and on other computers, to accelerate the download for others. This will pause the download for the masses momentarily, but it will allow people to get a faster download overall once the copy to the shared space is complete. Perhaps the many users downloading can have a button when their download is selected to vote to do this, and if there are enough votes, the download will be paused momentarily from the main source for the purpose of sending segments to shared space and bandwidth. Download from previous shared space and from users with segments of the file themselved will still continue.

The only problem with this method is, if the main source of a file disappears, then that file will be in bits and chunks on peoples' machines everywhere, with nothing to do. Perhaps a warning mechanism or a shared file "importance" meter could be implemented for all users with files (essentially all users). Perhaps this file will have to be shared once it has begun being downloaded, with no option to turn it off unless it is moved to another directory. These are important features at any rate.

As an aside, to improve download speeds, files that are being downloaded slowly on one end will be sped up by the other user's software to get the files that people can't seem to obtain more quickly.

Table of Contents

Peace

Go here to see what my views of Napster's pay service are:

../chrisbetti/writings/filesharingpayservice.htm

Trap Door Networks

Hosted by www.Geocities.ws

1