-- Make sure massmigrate cleanly ignores already migrated
- installs
-- Make sure MediaWiki repository is as close to perfect
- as possible:
- - Do an install, migrate and then `git status`
- - Check out possible missing php.ini's
- - Remove "Merge comments" from lines
- - Fix Signed-off-by lines
-- Add some safeguard code to make sure you don't run migrate
- or upgrade as root
-
-- We have safe, non-braindead
- version detection with `git describe --tags`. Switch
- everything to use it. (I think the only thing left is
- parallel-find.pl)
-- wizard.util is pretty braindead at this point. Fix up
- the wildly varying conventions in it.
-- Move migration code into Wizard, since we already deal
- with installation there anyway.
-
-- Better error message if daemon/scripts-security-upd
- is not on scripts-security-upd list
-
-- Fix retarded logging mechanism
-
-- The great initial deploy:
- - Turn on mediawiki new autoinstaller
- - Migrate all mediawiki installs
-
-Doing Wordpress:
-- Build automation for generating config files; this automation
- will be shared with the migrate script and the installer script
- (migrate script needs to be able to pull out values from config
- file, so will we; installer script needs to be able to run
- the installer to generate config files, so will this)
-- This should all be automated:
- - Wordpress needs to have .scripts dir in all -scripts versions
- (also make .scripts/.htaccess)
- - Wordpress needs to have a .scripts/update script written for
- its latest version (do this after its migration)
- - Wordpress needs to check for php.ini files (which it almost
- certianly has) and commit messages
- - Wordpress needs user config and php.ini links made
-
-- Summary script should be more machine friendly, and should not
- output summary charts when I increase specificity
-- Summary script needs to be updated for new format
-
-Some other stuff to do in your copious free time:
-- Check how many autoinstalls are missing w bits for
- daemon.scripts (this would need pyafs)
-- Make scripts AFS patch advertise its existence so we can check for it.
- (This might be otherwise possible using `fs sysname`
-- Implement proper deploy log parsing; this basically means we
- need to be able to introspect Git Log. Consider using git-python
- for this.
-- Make 'wizard summary' generate nice pretty graphs of installs by date
- (more histograms, will need to check actual .scripts-version files.)
-- It should be able to handle installs like Django where there's a component
- that gets installed in web_scripts and another directory that gets installed
- in Scripts.
+- --retry option for install, so it won't complain about a directory already
+ being there.
+- The calling web code invocations are a mess, with stubs living
+ in the install, deploy modules and the real deal living in util. Furthermore,
+ we use the scripts-specific heuristic to determine where the app
+ lives, and the only reason my test scripts work is because they
+ get manually fed the domain and path by my environment variables.
+
+ We will record the URL used for the initial installation, and save it in
+ .scripts/url. If autodetection in either direction is
+ available, we verify this value against the actual file path the installation
+ lives in (for the scripts case, we can do a file-level comparison because we
+ know the web root of any given file). If they mismatch, we error out
+ and have someone manually resolve the problem. If autodetection is not
+ available, we use the saved .scripts/url for operations.
+
+- wizard install wordpress should ask for password
+- Test code should auto-nuke the database using `wizard remove` before doing a new install
+- git diff :1:$file :2:$file to find out what the user did, or is it :3:?
+- Document how to fix a broken upgrade
+- php.ini needs to get substituted!
+- Make wizard install accept appname-head (so that you can do a test with
+ head, and do things without tags). Also make it accept commit hashes.
+ In fact, let it accept any committish. Figure out what to do if we
+ do a test script with x.y.z when we REALLY mean x.y.z-scripts. XXX!!!
+- Do early validation of inputs for configuration
+- Let 'wizard configure' be interactive
+- Parse output HTML for class="error" and give those errors back to the user,
+ then boot them back into configure
+- Get rid of our custom sizing code and use dialog's built-in sizing (i.e. width=0, height=0).
+ Maybe our sizing code is superior, maybe not.
+
+- Replace gaierror with a more descriptive name (this is a DNS error)
+
+- Pre-emptively check if daemon/scripts-security-upd
+ is not on scripts-security-upd list (/mit/moira/bin/blanche)
+
+- Redo Wordpress conversion, with an eye for automating everything
+ possible (such as downloading the tarball and unpacking)
+
+- Web application for installing autoinstalls has a hard problem
+ with credentials (as well as installations that are not conducted
+ on an Athena machine.) Possible solutions include asking the user
+ to SSH into an athena machine and run a bunch of commands, or writing
+ a Java applet (possibly in Clojure or Scala) which gets filesystem
+ permissions and then performs the operations.
+
+- Pay back code debt
+ - Genericize callAsUser and drop_priviledges in shell
+ - Summary script should be more machine friendly, and should not
+ output summary charts when I increase specificity
+ - Summary script should do something intelligent when distinguishing
+ between old-style and new-style installs
+ - Report code in wizard/command/__init__.py is ugly as sin. Also,
+ the Report object should operate at a higher level of abstraction
+ so we don't have to manually increment fails. (in fact, that should
+ probably be called something different). The by-percent errors should
+ also be automated.
+ - Move resolutions in mediawiki.py to a text file? (the parsing overhead
+ may not be worth it)
+ - If a process is C-ced, it can result in a upgrade that has
+ an updated filesystem but not updated database. Make this more
+ resilient
+ - PHP end of file allows omitted semicolon, can result in parse error
+ if merge resolutions aren't careful. `php -l` can be a quick stopgap
+
+- Other stuff
+ - Figure out why Sphinx sometimes fails to crossref :func: but wil
+ crossref :meth:, even though the dest is very clearly a function.
+ Example: :func:`wizard.app.php.re_var`
+ - The TODO extension for Sphinx doesn't properly force a full-rebuild
+ - Code annotation!
+ - Make single user mass-migrate work when not logged in as root
+ - Don't use the scripts heuristics unless we're on scripts with the
+ AFS patch. Check with `fs sysname`
+ - Make 'wizard summary' generate nice pretty graphs of installs by date
+ (more histograms, will need to check actual .scripts-version files.)
+ - It should be able to handle installs like Django where there's a component
+ that gets installed in web_scripts and another directory that gets installed
+ in Scripts.
+ - ACLs is a starting point for sending mail to users, but it has
+ several failure modes:
+ - Old maintainers who don't care who are still on the ACL
+ - Private AFS groups that aren't mailing lists and that we
+ can't get to
+ A question is whether or not sending mail actually helps us:
+ many users will probably have to come back to us for help; many
+ other users won't care.