* Added a small note to HACKING
[pacman.git] / TODO.dan
blob42b0f651680bf538edc4d49b0921eda2ecdc43d2
1 TODO.dan
2 ========
4 This is my personal TODO list. No guarantees if it is out of date and things no
5 longer apply. If you want to help out with any of it, send me an email.
7 Only vaguely related to pacman:
8 -------------------------------
10 Port the libdownload (libfetch) manpage from BSD style to Linux style, or at
11 very least change references to BSD.
14 Pacman 3.0:
15 -----------
17 ideas mentioned here- http://bbs.archlinux.org/viewtopic.php?id=29450- add a
18 .install message about mirrors, maybe comment whole file, encourage rankmirrors
19 usage
22 Pacman 3.1:
23 -----------
25 Documentation- look into moving man page format to a more portable source
26 format to make translation easier to keep up-to-date (something like txt2tags,
27 docbook, asciidoc) This will need some research.
29 Update cache cleaning functionality - keep installed version, choose number to
30 keep, etc. Good python script in the forums that we should try to emulate.
32 Downgrade feature - allow users to see cached packages and downgrade to
33 (previous or any?) available options.
35 Extreme similarity between some of the sync and add code...we have to be able
36 to abstract more away from sync actions and add actions to just 'actions'
37 (example: sync,c, add.c, and deptest.c all contain a switch on PM_DEP_MOD_*).
38 Merge update, add, and sync code when possible, so we reduce duplication.
40 Review progress/transaction event subsystem. (from TODO)
42 Add Doxygen comments to every function in libalpm including private functions.
43 Ensure functions are doing exactly their purpose and nothing more. Find
44 functions that perform duplicate behavior and merge them. Combine and refactor
45 others. Delete unnecessary functions. Stop keeping everything clustered in
46 little add/sync/remove parts, allow transactions to share code.
48 Go through options list. Decide if namings are good, all options are still
49 relevant, etc. Ideas for -Re (#6273), changing meaning of -c (has two meanings,
50 another FS bug), etc. Remove the -A flag and possibly -D, -T, and -Y (-Y is
51 killed now in favor of vercmp binary) if they can be done by other actions.
52 Possible switch of -U --> -I (#5571).
54 Rewrite _alpm_sortbydeps to use Topological Sort. Should work using a standard
55 topo sort algorithm, once the crazy types can be fixed up a bit. Include a
56 cycle check - print a big error message if this happens.
57   -- http://en.wikipedia.org/wiki/Topological_sort
58   -- http://everything2.com/?node_id=556079
60 Review display and logging functions. There seems to be an abundance of them.
61 Make it extensible to use color, review what verbose/debug means. Perhaps
62 separate logging functionality- Pacman has its normal log, and alpm backend
63 keeps a very simple log file - listing only adds (including syncs) and removes.
64 This way a consistency list can be kept of what is currently installed and what
65 isn't, without all the logging junk from the front end.
67 If we stick with autotools, add more defines to configure.in, including
68 CACHEDIR, PKGEXT, so these can be specified at configure time for ease of use
69 by other distributions which may want to change the defaults. Also, review what
70 needs to be in config.h and what does not. There may be excess #depends which
71 are hard coded into the sources. (from TODO.autoconf)
73 Profile the code. Find the functions that are being called a lot, and see what
74 can be done about it. Find out if all these calls are necessary (e.g. excessive
75 alpm_list_count calls), and maybe think about changing data structures to speed
76 operations up (e.g. a 'count' field). NOTE: already found two huge issues with
77 quick profiling- excessive setlocale calls, and extremely excessive strcmp
78 calls.
80 Localize the date display done in --info output. Also, fix other localized
81 issues- use non-printf when necessary, make sure all two line printed messages
82 (especially usage instructions) are printed using one print statement. We
83 may need to use some wchar_t output on the progress bar as char/byte counts
84 differ here.
86 Rewrite makepkg to use terminal-safe coloring/bolding. tput utility should
87 allow us to do this.
89 Bugs/FRs to smash: 6468, 6437, 6430?, 6420, 6404, 6389, 6312?, 6284, 6273?, 6255?, 6208, 5987, 5885, 5571, 4182, 3492, 2810?, 1769, 1588, 1571
91 Other smaller things:
92 ---------------------
94 unsigned int vs. unsigned- determine a standard and stick with it
96 FS #4185 - move where message is logged, perhaps?
98 Update copyrights (2007)
100 Update pacman website, and add/finish pacman coding style page
102 autogen.sh / autoclean.sh - these seem messy. Can we clean this up?
104 Refine makepkg error codes. Each kind of failure could have its own code:
105   --package already built
106   --failed integ checks
107   --failed build
108   --etc.
110 Add utility function to either frontend or backend to convert sizes: e.g. bytes
111 to KB, MB, GB.
113 Revamp the downloadprog function a bit. Seems kind of messy.
115 Add localized pkgdesc variables to makepkg.
117 --print-uri option to sync should not require saying yes or no to up to date
119 Add testing scripts to pactest for issues we have been working on (especially 
120 files moving between packages). Also, take a look at cleaning up the output and
121 structure of the pactest.py program itself.
123 Build a replacement for this, or at least standardize its use. We shouldn't
124 always need to pass handle->root around, it is constant. Something like char*
125 buildpath(file).
126         /* build the new entryname relative to handle->root */
127         snprintf(filename, PATH_MAX, "%s%s", handle->root, entryname);
129 Random ideas:
130 -------------
132 Possibly split utilities/extras from pacman package
134 Make .indent.pro file for GNU indent (started, but didn't finish)