TODO updates: added section on statistics gathering/reporting, added section on ...
[catalyst.git] / TODO
1 This file is a rough list of changes that need to be made to catalyst.  If you
2 have questions about any of these items, or wish to help with development, send
3 them to the gentoo-catalyst@lists.gentoo.org mailing list.  Bug reports should
4 be filed at http://tinyurl.com/79slrk (http://bugs.gentoo.org) under the
5 Catalyst component.
6
7 Global:
8 - Remove spec_prefix from all exported variables
9   - variables without spec_prefix are global and used in all targets
10   - variables with spec_prefix only apply to that target
11 - add multiple target support for spec files
12   - target: stage1
13   - targets: stage1 stage2 stage3 stage4 livecd netboot
14 - add more validation and checking for code which affects both host and target
15   - setup defaults if host isn't configured
16   - allow configuration globally (catalyst.conf), per-spec, or per-target
17   - ccache
18     - check host settings (size, location, etc) and restore them when done
19   - distcc
20     - check host settings (distcc_hosts, etc) and restore them when done
21   - icecream
22     - check host settings (icecream_hosts, etc) and restore them when done
23 - add support for new portage features
24   - Cache backends
25     - metadata_overlay (portage default in 2.1.6)
26         - sqlite
27   - Jobs
28   - Load Average
29   - Dependency checking
30     - Deep checking
31         - Complete Graph
32         - Build-time dependencies
33   - USE changes
34     - newuse versus changed-use
35   - Failure detection
36     - Add --keep-going support
37 - detect GCC version in seed stages for supported settings (CFLAGS)
38 - add statistics gathering/reporting
39   - counter
40     - sessions started/completed/failed
41         - targets started/completed/failed (and per-subarch here, too)
42         - sessions/targets run-time, CPU/RAM/disk usage (max and final)
43   - guage
44     - sessions/targets active
45         - caching information
46       - packages/stages/snapshots in respective caches
47       - cache hit ratio/percent
48           - cache age
49     - timing information
50           - currently-running jobs
51           - specific tasks
52             - dependency calculation
53                 - unpacking seeds
54   - easily retrievable (text files? BDB? SQLite? configurable?) for SNMP, etc
55 - add option to perform update of the (in-cache) seed before processing target
56
57 Config:
58 - security
59   - sign materials automatically
60 - logging
61   - add logging support (partially done through use of catalyst.output.msg())
62     - file-based
63         - syslog
64   - add notification capabilities
65     - email
66         - snmp trap
67 - seperate out options that control catalyst versus the package manager
68   - options key should specify catalyst options
69   - new keys for package managers
70     - portage_features
71         - pkgcore_features
72
73 Targets:
74 - add support for livedvd/liveusb
75   - do we use livecd/type or something new
76   - make livedvd type perform several actions automatically, if configured
77     - auto-fetch distfiles
78         - automatically pull stages
79           - local disk via absolute or relative path
80           - URI
81 - change user creation to be more flexible
82   - stage4 and netboot support
83 - build boot software for targets on-demand
84   - removes cdtar requirement
85   - allows one to specify multiple bootloaders
86     - boot/loader: grub elilo
87         - netboot/boot/loader: pxelinux elilo
88         - livecd/boot/loader: isolinux elilo
89   - add ability to specify other "bootables" to build/install, like memtest86+
90     - do we use a single spec key or multiple?
91           - single
92             - livecd/boot/image: memtest|/path/to/image (pre-built, label=memtest)
93             - livecd/boot/image: memtest86+ (use PM)
94                 - livecd/boot/image: memtest|build-memtest86+ (use PM, change label)
95                 - livecd/boot/image: memtest|auto (locate in cache, try build, and fail)
96           - multiple
97             - livecd/boot/labels: gentoo gentoo-nofb gentoo-nodetect memtest
98             - livecd/boot/image: gentoo gentoo gentoo memtest86 ("kernel" line)
99                 - livecd/boot/opts: default default default,nodetect none
100         - do we also need a way to specify an initrd with this?
101   - setup defaults for each arch
102     - allow overrides/adds
103         - verify usability on arch
104 - add variable support for spec files
105   - automatic substitution
106     - %DATESTAMP%
107         - %BUILDDIR%
108   - user-defined
109     - %DISTRIBUTION%
110         - %AUTHOR%
111 - add new targets
112   - system (functionally equivalent to stages 1 through 3, produces "stage3")
113   - world (stage4 work-a-like)
114 - merge livecd-stage1 and livecd-stage2 into livecd target
115   - do we add targets for other live (LiveDVD, LiveUSB, LiveNet) media?
116 - add support for multiple userland images on a single media
117   - 32-bit and 64-bit kernels/userlands
118   - multiple arches/ABIs
119   - normal and debug kernels/userlands