1 | Things to complete |
---|
2 | ------------------ |
---|
3 | |
---|
4 | Tasks and TODO items are being tracked at bugzilla@eazel.com. |
---|
5 | |
---|
6 | |
---|
7 | |
---|
8 | |
---|
9 | |
---|
10 | |
---|
11 | ------------------------------------------------------------------- |
---|
12 | old TODO items (some of them no longer rellevant): |
---|
13 | |
---|
14 | * take a look at avfs (http://www.inf.bme.hu/~mszeredi/avfs/), it is |
---|
15 | project similar to mc's vfs, and it is pretty well written. |
---|
16 | |
---|
17 | * tar method, cpio method. |
---|
18 | |
---|
19 | * GZIP write support might be broken. |
---|
20 | |
---|
21 | * Complete HTTP support. |
---|
22 | |
---|
23 | * HTTP-related issue: we need to figure out a way to deal with HTTP |
---|
24 | redirections. I.e. one should be able to know that a given `open()' |
---|
25 | operation has caused a redirection, and the name of the new URL. |
---|
26 | |
---|
27 | * Implement SMB support through Wayne's cool librarified Samba client |
---|
28 | stuff (Wayne Roberts <wroberts@pwav.com>). |
---|
29 | |
---|
30 | * Add some kind of conversation function, so that e.g. we can know |
---|
31 | what step the op is performing. (E.g for `open()': "connecting to |
---|
32 | ftp.some.site.net", "logging in", "getting dir listing", "retrieving |
---|
33 | file.tar", "extracting file.c".) |
---|
34 | |
---|
35 | * Names containing the `#' character are likely to cause disasters. |
---|
36 | We need to provide quoting everywhere. |
---|
37 | |
---|
38 | * Make sure that only one module is initialized at a given time |
---|
39 | (i.e. add a lock that must be obtained before calling the |
---|
40 | `vfs_module_init()' function). |
---|
41 | |
---|
42 | * Complete cancellation code, to make sure every operation can be |
---|
43 | cancelled. We need to be able to send signals to the helper |
---|
44 | threads/processes. |
---|
45 | |
---|
46 | * Add some support for reusing existing processes in the CORBA |
---|
47 | version. E.g. if you open `ftp://ftp.some.place.net/pub/file-1.c' |
---|
48 | and then `ftp://ftp.some.place.net/pub/file-2.c', we should re-use |
---|
49 | the helper process that opened the first URL for opening the second |
---|
50 | one, so that it possibly re-uses the existing connection. This |
---|
51 | requires keeping a hash table containing the host name and access |
---|
52 | method for every helper process, and avoid creating new ones when a |
---|
53 | matching one exists. Of course, we also need to limit killing of |
---|
54 | helper processes so that we actually have a chance to reuse them. |
---|
55 | |
---|
56 | API issues |
---|
57 | ---------- |
---|
58 | |
---|
59 | * If you use the CORBA version, you need to initialize your |
---|
60 | application with `gnome_CORBA_init()'; if you use the pthread version, |
---|
61 | you need to initialize it with `g_thread_init()'. This is not good. |
---|
62 | |
---|
63 | * Better hiding of private stuff. |
---|
64 | |
---|
65 | * We definitely need an `URI context', which is basically a URI prefix |
---|
66 | which is used for subsequent calls. When creating a context, backends |
---|
67 | can assume they are going to get several requests for sub-URIs |
---|
68 | starting from that URI, and can try to optimize things. OR maybe we |
---|
69 | can just have a function to "lock" a certain URI. This will make |
---|
70 | everything easier to implement. |
---|
71 | |
---|
72 | * The asynchronous directory reading stuff needs a timeout. I.e. you |
---|
73 | should be able to say "give me as many entries as possible in the |
---|
74 | following x seconds". This can be done in the CORBA version by using |
---|
75 | an alarm (as the thing runs in a separate helper process, we don't |
---|
76 | have problems with signals); in the PThread version, we can instead do |
---|
77 | this on the master thread's side, by queueing the data as it comes |
---|
78 | from the helper thread and dispatching it through GTK timeouts (see |
---|
79 | gnome-fm for an example of this -- we probably don't care that there |
---|
80 | is a notification for every element, because this is relatively cheap |
---|
81 | with PThreads). |
---|
82 | |
---|
83 | * Make directory/xfer calls cancellable as well. |
---|
84 | |
---|
85 | * Check that all the important ops are implemented. |
---|
86 | |
---|
87 | * Add missing async wrappers for all the ops. |
---|
88 | |
---|
89 | Installation issues |
---|
90 | ------------------- |
---|
91 | |
---|
92 | * Modules are currently installed under $prefix/lib/vfs/modules. |
---|
93 | |
---|
94 | * We need to install the private headers: otherwise, it is not |
---|
95 | possible to write new modules without the full gnome-vfs source code. |
---|
96 | Maybe we need to have more than two levels (i.e. more than just |
---|
97 | "private" and "public" headers). |
---|
98 | |
---|
99 | Implementation issues |
---|
100 | --------------------- |
---|
101 | |
---|
102 | * Every time you read or write asynchronously, the CORBA backend will |
---|
103 | dynamically allocate the buffer. This is lame: we should just |
---|
104 | re-allocate the buffer only if the required is bigger than the one of |
---|
105 | the previous call. |
---|
106 | |
---|
107 | * Portability checks and fixes. I am sure I forgot lots of details. |
---|
108 | |
---|
109 | * Metadata key lists are passed as arrays to the API calls, but are |
---|
110 | passed as GLists to the backend modules. This requires conversion, |
---|
111 | and might be a performance issue. We should just use arrays for the |
---|
112 | modules as well. |
---|