/[axel]/trunk/ROADMAP
ViewVC logotype

Contents of /trunk/ROADMAP

Parent Directory Parent Directory | Revision Log Revision Log


Revision 116 - (show annotations) (download)
Wed Jan 6 12:06:08 2010 UTC (3 years, 5 months ago) by phihag-guest
File size: 4870 byte(s)
Rename search.c/strrstr to avoid collisions
1 Roadmap for Axel v2
2 ===================
3
4 * replace old gettext with new one
5 * Check if strrstr is provided by environment
6
7 Roadmap for Axel v3
8 ===================
9
10 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.
11 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:
12
13 x.y.z
14
15 x: Complete overhaul of the code structure
16 y: New features and/or speed/size improvements
17 z: Bug fixed
18
19 Features
20 ========
21
22 * HTTP authentication (#310785)
23 This is actually already implemented and should be documented. Using -H is possible, too.
24
25 * Metalink (#310625)
26 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.
27
28 * .netrc (#310635)
29 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.
30
31 * Prevent connection to same server (#310638)
32 See tcp.c below for the implementation (aside from a flag in the configuration and a cli flag).
33
34 * Force overriding state file (#311022)
35 Shouldn't be difficult and take more than a couple of bytes.
36
37 * SSL protocols (HTTPS, FTPS) (#311163)
38
39 * Parse Content-Disposition header (#311101)
40 Look if the specific problem mentioned in the bug is fixed by this.
41
42 Code structure
43 ==============
44
45 * conn.c
46 needs cleanup, possibly even elimination. Most functions look like
47 if (ftp && !proxy) {
48 // ... do FTP stuff (15 lines)
49 } else {
50 // ... do HTTP stuff (20 lines)
51 }
52 We should at least abstract the switch between HTTP and FTP and look what can be done about simplifiying and documenting the functions here.
53
54 Furthermore, redirecting should be cached somehow/done only once lest we reach the redirect limit because it's less than -n.
55 * tcp.c
56 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.
57 * 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.
58 * Add die messages: Axel must not exit with != 0 without telling why.
59 * Add debugging messages: When compiled with DEBUG, Axel could be more verbose. This won't harm anything and may serve as comments.
60 * Some functions could use a little bit of documentation.
61 * Remove all logic from text.c
62 * Ensure correct synchronization of thread state (volatile?)
63 * Cleanup AXEL_LEGACY
64 * rewrite axel-kapt to be sane (probably sh, or even #!/usr/bin/env kaptain suffices) or remove it in favor of a sane GUI
65
66 Bugs
67 ====
68
69 We're gonna fix them all!
70 #310979 seems pretty vague.
71
72 Check spaces in FTP and HTTP URLs
73
74 (User) Documentation
75 ====================
76
77 * As previously mentioned, authentication should be documented.
78 * Update API
79
80 3.1
81 ===
82
83 * Cookies (#310835)
84 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.
85 * Rate-limit status messages (#TODO)
86 * Don't discard first HTTP connection, but use it adaptively (start requests from the end, RST as soon as first task is fullfilled)
87 * A -1 option: Just make one request, and only one.
88 * IPv6 support
89
90 3.2
91 ===
92
93 * 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
94 * Check compilation with dietlibc(http://www.fefe.de/dietlibc/) and uclibc(http://www.uclibc.org/):
95 · How to compile with these libraries
96 · Does this actually improve the binary size?
97 · Check warnings/suggestions
98 * valgrind and friends
99 * Test very large -n values. Check pthread thread stack size.
100
101 Future/Ideas
102 ============
103
104 * Real FTPS (AUTH)?
105 * Allow downloading to /dev/null for debugging or speed test purposes (Statefile in memory or so)
106 * Desktop integration, look who likes download accelerators
107 * Check the syscalls we make. Check whether timing and read() calls can be optimized
108 * Write automated tests to test all these nifty corner cases. Either a test webserver or LD_PRELOAD injection of all syscalls (see libfake*)
109 * Write a helper script that displays the final binary size for different configurations to determine what a particular feature costs
110 * Document and implement coding conventions, versioning scheme

  ViewVC Help
Powered by ViewVC 1.1.5