
! The Arch Usability Release

---
v================================================================
						+++
						width: 100
						headers: no
						border: 0
						

* The Usability Release Todo List

The next release of arch is supposed to be a "usability release" which
means that the primary focus is on oft-requested usability tweaks.

Here's the current list.

In fact, the list is sufficiently long I'm thinking of splitting
it up over a couple of different releases.

::table of contents::

-*-*-

^================================================================

---

* Fix the library `inventory' bug

  There's a (mostly) harmless bug in `library-add'.  `inventory' is invoked
  without `--both', so the inventory does not include directories.
  Consequently, empty directories are lost when copying a revision
  out of a library.  This needs to be fixed and the release should
  include a `fix-library' temporary command to rebuild the indexes.

---

* naming conventions

  `=build*' should be ignored, not just `=build'.

---

* Fix `merge-points'

  Make `merge-points' go fast. 

---

* Wu Foo

  `with-ftp' should support the method `wuftp://' which
  adds `-a' to `LIST' and `NLST' commands.


---

* Client-side Hooks

  Call-outs to client-side programs on `commit', `update', etc.

  There should be callouts for before `commit' (that can 
  prevent the commit from happening), during (that can do things
  like generate ChangeLogs), and after (well, there's already
  triggers).

---

* Add `SFTP' Support

  Basically, fix up some formatting nits in srp's code while reading
  it over one more time, merge into the lord branch to make sure it
  works, then merge into devo.

  This has a large impact on the build process, so it might be a good
  idea to make some snapshot releases to shake those out.

  One issue concerns the third-party libraries used by this code.
  Probably they should have their own categories in the repository.

---

* Faster `with-ftp' Support for Local Repositories

  For local repositories, `with-ftp' can create a temporary file whose
  contents are always the current ("remote") directory followed by a
  newline.  `with-ftp' should keep an exclusive write lock on this
  file.

  That way, the `with-ftp' clients don't have to connect to a server
  -- they work directly on the filesystem.

  On startup, `with-ftp' can find any of those temp files that don't
  have exclusive locks -- those files can be deleted and the names
  re-used.

---

* Cancelable Options

  We need support for the `X' option prefix described in
  OptionStandards.


---

* Command Aliases

  See LarchAliases.


---

* Change the Log File Name

  Log files should have a name that `vi'-style editors don't barf on.

  
---

* Don't Trash Existing Log Files

  `make-log' should not trash an existing log file.

---

* Use $EDITOR

  `make-log' should have a `-e' option to run `$EDITOR'.

  `commit' and similar commands should have an option that causes
  it to run `make-log -e'.

---

* Add a `ChangeLog' snarfer?

  Suppose a user writes `ChangeLog' entries while they work.
  Those should be automagically used to initialize the log 
  built by `make-log'.

  Just `insert-file' won't do: only _new_ `ChangeLog' entries
  should appear in the new log.  This should work even if the
  `ChangeLog' he user is editting is an automatically generated
  log file.

---

* Add a comment syntax to log files

  There should be a syntax (`#' at column 0?) for comments in a
  log file.  Comments are stripped before the log file is committed.


---

* Add a log file initializer

   Add a `make-log' option to initialize the log file with a list of 
   changed files and/or diffs, formatted as log file comments.
   Actually, this initializer should be optionally project-specific,
   so that projects can define their own log file formats.

---

* Generalize `valid-log-file'.

   It should be easy for programmers to define little libraries of 
   scripts that validate log files.  For example, some projects
   might want to require a comment for each changed file.

   (Log-file policies should be set in the repository, not in
   in the project tree.  There should, though, be room for some
   common policies, built-in to arch, that any project tree 
   can use.)


---

* Project Import

  There should be a single command that does all of the steps:
  `make-category', `make-branch', `make-version', `init-tree',
  `set-tagging-method', `make-log', and `import'.

---

* `inventory'

  The way that inventory tags are recognized in files should be a
  project-specific parameter.

---

* Handle the First-Ever-Merge in `star-merge'

  `star-merge' doesn't cleanly handle the case of "first ever merge
  between two branches."  (Actually, I made some progress on this,
  but forget where I left off -- so really this item starts with
  "figure out where I left off on this".)

---

* `star-merge-config'

  Pick up Jonathan's changes for this new command.


---

* Clarify `update''s Relationship to CVS

  Says Adam Spiers:

<<<
	So `larch update' applies

	  delta(patch-4, bob-1)[patch-8]

	whereas a `cvs update' does

	  delta(patch-4, patch-8)[bob-1]
>>>

  (maybe) Add an option to get CVS-like behavior from `update'.

  (certainly) Fix the documentation.

---

** `update --in-place .'

  `update --in-place .' should work.

  (It's ok to mess up the working dir if `update' crashes so long
   as the back-up tree is secure.)



---

* explicit tags

  Add new commands, `mv', `rm', etc. that not only change the tags,
  but also move, remove, etc. the actual files.


---

* `what-changed'

  Reconsider the output format -- it attracted a legitimate 
  complaint (compared to `cvs -nq upd'?).

  However, this might require some discussion/design first.

  See WhatChangedOutput.


%%% tag: Tom Lord Thu May  2 11:42:45 2002 (ArchRevCtl/UsabilityRelease)
%%%
