summaryrefslogtreecommitdiff
path: root/TODO
blob: 289629a8a1014f9701126eb57c729210b345a740 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
See also the FIXME's and TODO's in the code.


ALPHA PHASE: get some people to test and suggest ideas, while fixing bugs and refactoring
* setup bugtracker/roadmap thingie
* check everywhere that if users cancels something, we return 1
* core/interactive: fix workaround needed for installpkg exitcode
* core/interactive: keymap and timezone settings from installer dan't not go in $target/etc/rc.conf
* dm_crypt unlock at boot is in qwerty.
* after unlocking dm_crypt, FS check fails (reiserfs, must try other)
* core/base: implement as specified in README
* core/quickinst: figure out what needs to be done and do it.
* find a way to make _cli_ask_checklist still userfriendly for long lists.. maybe we should just propose/ask to use dia if the list is too long
* lib things sometimes call die_error but we go back to the menu.. or something.. i think
* test fancy dm_crypt/lvm etc setups
* automatically configure grub for dm_crypt and lvm
* 'additional, optional info' not shown correctly in _dia_ask_option bug

* Rethink umount/destruct blockdevice/filesystem stuff
** Goals
not break while trying to build the setup like the user requested (breakage could happen if a device mapper volume is still active or a filesystem is still mounted)
still allow user to mount stuff himself behind the installers back. he is smarter then us.  just do what we're told.
** Options
*** umount/deconstruct before trying to build
problems: - it's hard to know what we should delete, our 'build' plan might be different then the current environment (eg devices with same name but other function),
           usually because of a previous run with the wrong settings, or which failed
          - we can't base ourselves on things like "we should only have / and /dev/shm".  The user can mount things himself
          - quite complicated code if want to make it smart, but it's a dead end anyway.
*** if buildup fails, ask user to rollback
- user should not ctrl-c and installer should not crash. this is doable.  a 'wrong' state can be an exception.


BETA PHASE: try to get aif on the (beta) installcd as an experimental, alternative installer.
* find a way to not have to preload libs and stuff, only load them when needed. -> faster start of install program
* involve broader community
* fix everything
* if dhcpd already runs for $reason, the installer will try again @ configure network and
fail.  i tried killall dhcpd, killall -9 dhcpd first but that didn't help:
it can't kill the process or something...
* core/interactive: do not check hard for the dependencies. a user could really know what he's doing or need to reboot after partitioning a disk and
skip that check or something.  Alternatively, maybe just show which steps are done successfully in the main menu
* support maybe ntp to set clock
* auto-configure mkinitcpio.conf for dm_crypt and lvm

PRODUCTION PHASE: be the primary installer.  deprecate /arch/setup and /arch/quickinst
* fix everything even more
* bribe devs
* core/interactive: do pacman -Sy in the background during early phases, to lessen the wait period before selecting packages
* write bash completion thing for aif modules/procedures
* add dmraid/mdadm support -> patches welcome.  i don't care about this. 

SOMEDAY/MAYBE/RANDOM THOUGHTS:
* the quickinst assumes the user did some stuff by himself and does some
after-processing.  Would it be useful to have a procedure that always tells
the user what to do (manually) ? -> ASKDEV
* profiles like 'desktop','server' (~-> package list, configs, disk setup,..) are crossconcerns
compared to procedures (which are about "how" the installation goes:
prescripted, autodetection, interactive,...).
support for profiles could be built in certain procedures), maybe by supplying extra commandline
arguments to the procedure or asking a few questions.
For automatic procedures, a profile could be the fundamental entitiy,
whereas for interactive procedures it could provide some other defaults.
* all dialog windows are equally sized.  noone cares, right?
* we run mkinitcpio twice: one while installing kernel packages, once after
configuring the system (mkinitcpio.conf). can we optimize this?
* core/interactive -> install packages -> dependency cycles with glibc.  not
a problem? -> ASKDEV


WORRIES FOR MAYBE NO GOOD REASON
* base procedure is mostly to serve other procedures.  If we need to do much
work to implement something in the base procedure that we will probably
never use in other procedures, we're doing something wrong.  If that ever
happens (not likely I think), let's rethink what the base procedure should really be.

* instead of every procedure using and overriding the 'base' procedure,
we should maybe have even more flexibilty to take parts from different, specific procedures.
eg: dieter procedure maybe wants to use something interactive. or base procedure wants to do something
from interactive profile (Will this really happen?)
interactive functions maybe dont belong in a procedure?
-> depend_procedure good enough? or do we need more fine-grained dependencies (take function foo from procedure bar from module baz).
for now let's try like this.. -> we can call explicit functions from libraries from modules.. so then just stick it in a lib ->
  lots of stuff can go into lib-ui, making the procedure itself just the
  'execution plan'.. sounds good actually.
problem with this is functions can have the same names (or you need to prepend modulename always, but that's not clean + 'fallback'/overriding doesn't work well anymore. 
alternative -> each lib is a directory, each function in a file, make it possible to source all libs, one lib, or one function from one lib