Project

General

Profile

Home » History » Version 63

Greg Burri, 12/03/2008 09:45 PM

1 1 Greg Burri
h1. Home
2
3 31 Greg Burri
h2. Brainstorming
4 4 Greg Burri
5 21 Greg Burri
* Core and GUI are independent. They communicate over TCP socket.
6
** It is possible to launch the core without the GUI. The core does not depend of any kind of graphic library.
7
** If the GUI crashes then the core remains.
8 22 Greg Burri
* Designed for LAN usage (full trusted peers and very high speed transfers).
9 37 Greg Burri
* Efficient (very low CPU usage).
10 18 Greg Burri
* Distributed download (multi peer downloading and no central server).
11 36 Greg Burri
** Quicker peer first. The speed of a peer is an average over a period of time say 5 min. The speed of an unknown peer is maximum thus it will be take first. If a downloading is too slow (like three time slower than the best known peer) then it can switch to a quicker free peer.
12 62 Greg Burri
** Rarest parts first. If there is no rarest parts then the choice is randomly.
13 37 Greg Burri
** A part can be resumed from any peer which own a complete copy.
14
** A file from a user is identified by its name and its folder.
15 1 Greg Burri
** Fixed part size (2^24 B = 16 MB) hashed with SHA-1. Used to control the integrity of parts and to identify each part. If the SHA-1 of a part does not match the given SHA-1 then it will be re-downloaded entirely.
16 44 Greg Burri
** The number of concurrent download is around 3 parts simultaneous but not more than 1 per peer. The number of concurrent upload is unlimited.
17 43 Greg Burri
** Recursive folder downloading.
18
** The paths of the files are recreated in the downloading peer.
19 40 Greg Burri
* There is a general chat. There is no private chat. The chat uses UDP multicast (if possible).
20 25 Greg Burri
* Multicast UDP for services discovering (maybe UPNP). Each peer announces periodically he is alive with a multicast message.
21 18 Greg Burri
* MDI GUI with GTK2HS.
22 1 Greg Burri
** A panel to view the current peers and their amount of sharing.
23 44 Greg Burri
** A window to view the current downloads (leechage) and one for the current uploads (seedage). These windows are very similar. The list is ordered, first the complete download then the current downloading files and finally the queued files.
24 40 Greg Burri
** A window for the chat.
25 57 Greg Burri
** Some windows for each file browsing. The files and folders are seen like a tree (like in the Finder of Mac OS X).
26 39 Greg Burri
** Some windows for each file searching. The displayed list is identical to the browsing list.
27 18 Greg Burri
** A modal window for the settings.
28
*** The shared folders.
29 1 Greg Burri
*** The incoming folders (take the first if enough available space disk otherwise the second and so one..).
30 34 Greg Burri
*** Bandwidth and CPU limitation with a single option (checkbox).
31 42 Greg Burri
* Using of "Thrift":http://incubator.apache.org/thrift/ or "Protocol Buffers":http://code.google.com/apis/protocolbuffers/docs/overview.html for definition of the protocol between two peers and between the Core and the GUI.
32 1 Greg Burri
* File list with name+size.
33
* Non blocking search, the list is dynamically filled for each peer answer.
34
* Using of systray (optional).
35 61 Greg Burri
* "Haskell":http://www.haskell.org language
36
** A polymorphically statically typed, lazy, purely functional language. Very high level modern language.
37
** Open source.
38
** Efficient.
39
** Good GTK-Binding : http://www.haskell.org/gtk2hs/
40 1 Greg Burri
41
h3. Secondary ideas
42
43
* Parse meta data like ID3tag when searching.
44
* Free space management.
45
* Private chat.
46
* Automatically detect a running game and set the limitation flag.
47
* Automatically detect CPU/bandwidth usage and set limitation flag.
48
* Protect some sharing by a password / user rights for shares.
49
* Statistics window with graphs.
50 60 Greg Burri
51
h2. Functional
52
53
* [[Functional constraints]]
54
* [[GUI]]
55
* [[Logo]]
56
57
h2. Technical
58
59
* [[Study of the BitTorrent protocol]]
60
* [[Study of UPNP]]
61
* [[Study of UDP multicast]]
62
* [[Study of Thrift]]
63
* [[Study of Protocol Buffer]]
64 63 Greg Burri
* [[Libraries]]
65 60 Greg Burri
* [[Protocols]]
66
* [[Prototypes]]
67
* [[Guidelines]]