/[axel]/trunk/ROADMAP
ViewVC logotype

Contents of /trunk/ROADMAP

Parent Directory Parent Directory | Revision Log Revision Log


Revision 98 - (show annotations) (download)
Wed Apr 1 22:48:42 2009 UTC (4 years, 1 month ago) by phihag-guest
File size: 4747 byte(s)
updated ROADMAP in regards to kapt
1 Roadmap for Axel v3
2 ===================
3
4 Note: This document provides only a rough overview what to do next. Refer to the bugtracker ( https://alioth.debian.org/tracker/?group_id=100070&atid=413085 ) for detailled information.
5 Pre-release version numbers of Axel 3 will start with 2.99. Starting with the 3.x series, the following version scheme will be adopted:
6
7 x.y.z
8
9 x: Complete overhaul of the code structure
10 y: New features and/or speed/size improvements
11 z: Bug fixed
12
13 Features
14 ========
15
16 * HTTP authentication (#310785)
17 This is actually already implemented and should be documented. Using -H is possible, too.
18
19 * Metalink (#310625)
20 Basic Metalink support should not be that difficult. However, it will only be compiled if METALINK is defined. Metalink support will require libxml2. As libmetalink is currently unusable for us (private symbols), we'll implement the format ourselves.
21
22 * .netrc (#310635)
23 There are lots of GPLed implementations flying around. To minimize code size, it shouldn't be compiled in by default if the code exceeds a couple of bytes. Anyway, it's just one call from Axel's point of view.
24
25 * Prevent connection to same server (#310638)
26 See tcp.c below for the implementation (aside from a flag in the configuration and a cli flag).
27
28 * Force overriding state file (#311022)
29 Shouldn't be difficult and take more than a couple of bytes.
30
31 * SSL protocols (HTTPS, FTPS) (#311163)
32
33 * Parse Content-Disposition header (#311101)
34 Look if the specific problem mentioned in the bug is fixed by this.
35
36 Code structure
37 ==============
38
39 * conn.c
40 needs cleanup, possibly even elimination. Most functions look like
41 if (ftp && !proxy) {
42 // ... do FTP stuff (15 lines)
43 } else {
44 // ... do HTTP stuff (20 lines)
45 }
46 We should at least abstract the switch between HTTP and FTP and look what can be done about simplifiying and documenting the functions here.
47
48 Furthermore, redirecting should be cached somehow/done only once lest we reach the redirect limit because it's less than -n.
49 * tcp.c
50 should be checked. The functions look a little bit obscure to me. But maybe, that's just me. Before we implement #310638, we should include some round-robin trickery in here.
51 * Removing MAX_STRING(#311085) and MAX_ADD_HEADERS. These are arbitrary restrictions and may hide a number of strange bugs. Furthermore, statically sized fields are a waste of memory.
52 * Add die messages: Axel must not exit with != 0 without telling why.
53 * Add debugging messages: When compiled with DEBUG, Axel could be more verbose. This won't harm anything and may serve as comments.
54 * Some functions could use a little bit of documentation.
55 * Remove all logic from text.c
56 * Ensure correct synchronization of thread state (volatile?)
57 * Cleanup AXEL_LEGACY
58 * rewrite axel-kapt to be sane (probably sh, or even #!/usr/bin/env kaptain suffices) or remove it in favor of a sane GUI
59
60 Bugs
61 ====
62
63 We're gonna fix them all!
64 #310979 seems pretty vague.
65
66 Check spaces in FTP and HTTP URLs
67
68 (User) Documentation
69 ====================
70
71 * As previously mentioned, authentication should be documented.
72 * Update API
73
74 3.1
75 ===
76
77 * Cookies (#310835)
78 Can be implemented via -H. The bug called for reading the Netcape-style cookies.txt (Wget's --load--cokies option). Domain-specific cookies could be rather complex to implement. If the implementation of this feature costs more than 100B, it should be deselectable.
79 * Rate-limit status messages (#TODO)
80 * Don't discard first HTTP connection, but use it adaptively (start requests from the end, RST as soon as first task is fullfilled)
81 * A -1 option: Just make one request, and only one.
82 * IPv6 support
83
84 3.2
85 ===
86
87 * Write a macro ERROR_MESSAGE(msg) (msg), enclose all _("some long error message") and offer a compilation option for a single error message, see if that yields any size improvements
88 * Check compilation with dietlibc(http://www.fefe.de/dietlibc/) and uclibc(http://www.uclibc.org/):
89 · How to compile with these libraries
90 · Does this actually improve the binary size?
91 · Check warnings/suggestions
92 * valgrind and friends
93 * Test very large -n values. Check pthread thread stack size.
94
95 Future/Ideas
96 ============
97
98 * Real FTPS (AUTH)?
99 * Allow downloading to /dev/null for debugging or speed test purposes (Statefile in memory or so)
100 * Desktop integration, look who likes download accelerators
101 * Check the syscalls we make. Check whether timing and read() calls can be optimized
102 * Write automated tests to test all these nifty corner cases. Either a test webserver or LD_PRELOAD injection of all syscalls (see libfake*)
103 * Write a helper script that displays the final binary size for different configurations to determine what a particular feature costs
104 * Document and implement coding conventions, versioning scheme

  ViewVC Help
Powered by ViewVC 1.1.5