source: trunk/third/gnome-vfs/TODO @ 15497

Revision 15497, 4.2 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r15496, which included commits to RCS files with non-trunk default branches.
Line 
1Things to complete
2------------------
3
4Tasks and TODO items are being tracked at bugzilla@eazel.com.
5
6
7
8
9
10
11-------------------------------------------------------------------
12old TODO items (some of them no longer rellevant):
13
14* take a look at avfs (http://www.inf.bme.hu/~mszeredi/avfs/), it is
15project 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
24redirections.  I.e. one should be able to know that a given `open()'
25operation has caused a redirection, and the name of the new URL.
26
27* Implement SMB support through Wayne's cool librarified Samba client
28stuff (Wayne Roberts <wroberts@pwav.com>).
29
30* Add some kind of conversation function, so that e.g. we can know
31what step the op is performing.  (E.g for `open()': "connecting to
32ftp.some.site.net", "logging in", "getting dir listing", "retrieving
33file.tar", "extracting file.c".)
34
35* Names containing the `#' character are likely to cause disasters.
36We 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
43cancelled.  We need to be able to send signals to the helper
44threads/processes.
45
46* Add some support for reusing existing processes in the CORBA
47version.  E.g. if you open `ftp://ftp.some.place.net/pub/file-1.c'
48and then `ftp://ftp.some.place.net/pub/file-2.c', we should re-use
49the helper process that opened the first URL for opening the second
50one, so that it possibly re-uses the existing connection.  This
51requires keeping a hash table containing the host name and access
52method for every helper process, and avoid creating new ones when a
53matching one exists.  Of course, we also need to limit killing of
54helper processes so that we actually have a chance to reuse them.
55
56API issues
57----------
58
59* If you use the CORBA version, you need to initialize your
60application with `gnome_CORBA_init()'; if you use the pthread version,
61you 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
66which is used for subsequent calls.  When creating a context, backends
67can assume they are going to get several requests for sub-URIs
68starting from that URI, and can try to optimize things.  OR maybe we
69can just have a function to "lock" a certain URI.  This will make
70everything easier to implement.
71
72* The asynchronous directory reading stuff needs a timeout.  I.e. you
73should be able to say "give me as many entries as possible in the
74following x seconds".  This can be done in the CORBA version by using
75an alarm (as the thing runs in a separate helper process, we don't
76have problems with signals); in the PThread version, we can instead do
77this on the master thread's side, by queueing the data as it comes
78from the helper thread and dispatching it through GTK timeouts (see
79gnome-fm for an example of this -- we probably don't care that there
80is a notification for every element, because this is relatively cheap
81with 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
89Installation 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
95possible to write new modules without the full gnome-vfs source code.
96Maybe we need to have more than two levels (i.e. more than just
97"private" and "public" headers).
98
99Implementation issues
100---------------------
101
102* Every time you read or write asynchronously, the CORBA backend will
103dynamically allocate the buffer.  This is lame: we should just
104re-allocate the buffer only if the required is bigger than the one of
105the 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
110passed as GLists to the backend modules.  This requires conversion,
111and might be a performance issue.  We should just use arrays for the
112modules as well.
Note: See TracBrowser for help on using the repository browser.