Improve pkghash_remove algorithm
[pacman-ng.git] / TODO.dan
bloba6c33682087b3d950e75e5a9e7e22eb05dc91285
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 Pacman 3.1:
8 -----------
10 Downgrade feature - allow users to see cached packages and downgrade to
11 (previous or any?) available options.
13 Installed size and download size in -Si/Qi output should scale with package
14 size- KB to MB to GB. We should also get consistancy of K/KB, M/MB, etc.
16 Extreme similarity between some of the sync and add code...we have to be able
17 to abstract more away from sync actions and add actions to just 'actions'
18 (example: sync,c, add.c, and deptest.c all contain a switch on PM_DEP_MOD_*).
19 Merge update, add, and sync code when possible, so we reduce duplication.
21 Review progress/transaction event subsystem. (from TODO)
23 Add Doxygen comments to every function in libalpm including private functions.
24 Ensure functions are doing exactly their purpose and nothing more. Find
25 functions that perform duplicate behavior and merge them. Combine and refactor
26 others. Delete unnecessary functions. Stop keeping everything clustered in
27 little add/sync/remove parts, allow transactions to share code.
29 Go through options list. Decide if namings are good, all options are still
30 relevant, etc. Ideas for -Re (#6273), changing meaning of -c (has two meanings,
31 another FS bug), etc. Remove the -A flag and possibly -D, -T, and -Y (-Y is
32 killed now in favor of vercmp binary) if they can be done by other actions.
33 Possible switch of -U --> -I (#5571).
35 Review display and logging functions. There seems to be an abundance of them.
36 Make it extensible to use color, review what verbose/debug means. Perhaps
37 separate logging functionality- Pacman has its normal log, and alpm backend
38 keeps a very simple log file - listing only adds (including syncs) and removes.
39 This way a consistency list can be kept of what is currently installed and what
40 isn't, without all the logging junk from the front end.
42 Profile the code. Find the functions that are being called a lot, and see what
43 can be done about it. Find out if all these calls are necessary (e.g. excessive
44 alpm_list_count calls), and maybe think about changing data structures to speed
45 operations up (e.g. a 'count' field). NOTE: already found two huge issues with
46 quick profiling- excessive setlocale calls, and extremely excessive strcmp
47 calls.
49 Fix other localized issues- use non-printf when necessary. We may need to use
50 some wchar_t output on the progress bar as char/byte counts differ here. Sizes
51 of packages (e.g. 10,400.23 MB) should all be localized with correct
52 seperators.
54 Rewrite makepkg to use terminal-safe coloring/bolding. tput utility should
55 allow us to do this. Make universal message functions for systemwide use,
56 including all pacman utilites- abs, pacman-optimize, etc.
58 Bugs/FRs to smash: 6468, 6437, 6430?, 6420, 6404, 6389, 6312?, 6284, 6273?,
59 6255?, 6208, 5987, 5885, 5571, 4182, 3492, 2810?, 1769, 1588, 1571
61 Update doxygen comments, they may need some work. Try to document all of the
62 private internal functions too- it helps a ton for people just getting a
63 start on pacman hacking.
65 Other smaller things:
66 ---------------------
68 unsigned int vs. unsigned- determine a standard and stick with it
70 FS #4185 - move where message is logged, perhaps?
72 Update copyrights (2007)
74 Update pacman website, and add/finish pacman coding style page
76 Refine makepkg error codes. Each kind of failure could have its own code:
77   --package already built
78   --failed integ checks
79   --failed build
80   --etc.
82 Add utility function to either frontend or backend to convert sizes: e.g. bytes
83 to KB, MB, GB.
85 Revamp the downloadprog function a bit. Seems kind of messy.
87 --print-uri option to sync should not require saying yes or no to up to date
89 Build a replacement for this, or at least standardize its use. We shouldn't
90 always need to pass handle->root around, it is constant. Something like char*
91 buildpath(file).
92         /* build the new entryname relative to handle->root */
93         snprintf(filename, PATH_MAX, "%s%s", handle->root, entryname);
95 Random ideas:
96 -------------
98 Possibly split utilities/extras from pacman package
100 Make .indent.pro file for GNU indent (started, but didn't finish)