]> scripts.mit.edu Git - wizard.git/blob - TODO
Documentation for retro commits.
[wizard.git] / TODO
1 The Git Autoinstaller
2
3 TODO NOW:
4
5 - Write the code to make Wordpress figure out its URL from the database
6
7 - wizard install wordpress should ask for password.  One problem with this is that
8   Wordpress will still send mail with the wrong username and password, so Wordpress
9   will need to be patched to not do that.  Alternatively we can initally set the admin
10   email to a null address and then fix it manually.
11 - Parse output HTML for class="error" and give those errors back to the user (done),
12   then boot them back into configure so they can enter in something different
13
14 - Replace gaierror with a more descriptive name (this is a DNS error)
15
16 - Pre-emptively check if daemon/scripts-security-upd
17   is not on scripts-security-upd list (/mit/moira/bin/blanche)
18 - If you try to do an install on scripts w/o sql, it will sign you up but fail to write
19   the sql.cnf file. This sucks.
20
21 - Web application for installing autoinstalls has a hard problem
22   with credentials (as well as installations that are not conducted
23   on an Athena machine.)  We have some crazy ideas involving a signed
24   Java applet that uses jsch to SSH into athena.dialup and perform
25   operations.
26
27 - Pay back code debt
28     - Tidy up common code in callAsUser and drop_priviledges in shell;
29       namely cooking up the sudo and environment variable lines
30     - Summary script should be more machine friendly, and should not
31       output summary charts when I increase specificity
32     - Report code in wizard/command/__init__.py is ugly as sin.  Also,
33       the Report object should operate at a higher level of abstraction
34       so we don't have to manually increment fails. (in fact, that should
35       probably be called something different).  The by-percent errors should
36       also be automated.
37     - Move resolutions in mediawiki.py to a text file? (the parsing overhead
38       may not be worth it)
39     - PHP end of file allows omitted semicolon, can result in parse error
40       if merge resolutions aren't careful.  `php -l` can be a quick stopgap
41
42 - Other stuff
43     - Figure out why Sphinx sometimes fails to crossref :func: but wil
44       crossref :meth:, even though the dest is very clearly a function.
45       Example: :func:`wizard.app.php.re_var`
46     - The TODO extension for Sphinx doesn't properly force a full-rebuild
47     - Code annotation!
48     - Make single user mass-migrate work when not logged in as root.  The
49       primary difficulty is making the parallel-find information easily
50       accessible to individual users: perhaps we can do a single-user
51       parallel-find on the fly.
52     - Don't use the scripts heuristics unless we're on scripts with the
53       AFS patch.  Check with `fs sysname`
54     - Make 'wizard summary' generate nice pretty graphs of installs by date
55       (more histograms, will need to check actual .scripts-version files.)
56     - It should be able to handle installs like Django where there's a component
57       that gets installed in web_scripts and another directory that gets installed
58       in Scripts.
59
60 - ACLs is a starting point for sending mail to users, but it has
61   several failure modes:
62     - Old maintainers who don't care who are still on the ACL
63     - Private AFS groups that aren't mailing lists and that we
64       can't get to
65   A question is whether or not sending mail actually helps us:
66   many users will probably have to come back to us for help; many
67   other users won't care.
68
69 PULLING OUT CONFIGURATION FILES IN AN AUTOMATED MANNER
70
71 advancedpoll: Template file to fill out
72 django: Noodles of template files
73 gallery2: Multistage install process
74 joomla: Template file
75 mediawiki: One-step install process
76 phpbb: Multistage install process
77 phpical: Template file
78 trac: NFC
79 turbogears: NFC
80 wordpress: Multistage install process
81
82 COMMIT MESSAGE FIELDS:
83
84 Installed-by: username@hostname
85 Pre-commit-by: Real Name <username@mit.edu>
86 Upgraded-by: Real Name <username@mit.edu>
87 Migrated-by: Real Name <username@mit.edu>
88 Wizard-revision: abcdef1234567890
89 Wizard-args: /wizard/bin/wizard foo bar baz
90
91 GIT COMMIT FIELDS:
92
93 Committer: Real Name <username@mit.edu>
94 Author: lockername locker <lockername@scripts.mit.edu>
95
96 NOTES:
97
98 - It is not required nor expected for update scripts to exist for all
99   intervening versions that were present pre-migration; only for it
100   to work on the most recent migration.
101
102 - Currently all repositories are initialized with --shared, which
103   means they have basically ~no space footprint.  However, it
104   also means that /mit/scripts/wizard/srv MUST NOT lose revs after
105   deployment.
106
107 OVERALL PLAN:
108
109 * Some parts of the infrastructure will not be touched, although I plan
110   on documenting them.  Specifically, we will be keeping:
111
112     - parallel-find.pl, and the resulting
113       /mit/scripts/.htaccess/scripts/sec-tools/store/scriptslist
114
115 * The new procedure for generating an update is as follows:
116   (check out the mass-migration instructions for something in this spirit,
117   although uglier in some ways; A indicates the step /should/ be automated)
118
119     0. ssh into not-backward, temporarily give the daemon.scripts-security-upd
120        bits by blanching it on system:scripts-security-upd, and run parallel-find.pl
121
122     1. [ see doc/upgrade.rst ]
123
124     [ENTER HERE FROM CREATING A NEW REPO]
125
126     9. Push all of your changes in a public place, and encourage others
127        to test, using --srv-path and a full path.
128
129 [ XXX: doc/deploy.rst ]
130       GET APPROVAL BEFORE PROCEEDING ANY FURTHER;
131       THIS IS PUSHING THE CHANGES TO THE PUBLIC
132
133       NOTE: The following commands are to be run on not-backward.mit.edu.
134       You'll need to add daemon.scripts-security-upd to
135       scripts-security-upd to get bits to do this.  Make sure you remove
136       these bits when you're done.
137
138    10. Run `wizard research appname`
139        which uses Git commands to check how many
140        working copies apply the change cleanly, and writes out a logfile
141        with the working copies that don't apply cleanly.  It also tells
142        us about "corrupt" working copies, i.e. working copies that
143        have over a certain threshold of changes.
144
145    11. Run `wizard mass-upgrade appname`, which applies the update to all working
146        copies possible.
147
148    12. Run parallel-find.pl to update our inventory
149
150 [ XXX: doc/upgrade.rst ]
151 * For mass importing into the repository, there are a few extra things:
152
153     * When mass producing updates, if the patch has changed you will have to
154       do a special procedure for your merge:
155
156         git checkout pristine
157         # NOTE: Now, the tricky part (this is different from a real update)
158         git symbolic-ref HEAD refs/heads/master
159         # NOTE: Now, we think we're on the master branch, but we have
160         # pristine copy checked out
161         # NOTE: -p0 might need to be twiddled
162         patch -p0 < ../app-1.2.3/app-1.2.3.patch
163         git add .
164         # reconstitute .scripts directory
165         git checkout v1.2.2-scripts -- .scripts
166         git add .scripts
167         # NOTE: Fake the merge
168         git rev-parse pristine > .git/MERGE_HEAD
169
170       You could also just try your luck with a manual merge using the patch
171       as your guide.
172
173 [ XXX: doc/layout.rst ]
174 * The repository for a given application will contain the following files:
175
176     - The actual application's files, as from the official tarball
177
178     - A .scripts directory, with the intent of holding Scripts specific files
179       if they become necessary.
180
181         - .scripts/dsn, overriding database source name
182